diff --git a/.azure-pipelines/benchmarks.yml b/.azure-pipelines/benchmarks.yml index bd696cfa4c..7b5200d1fc 100644 --- a/.azure-pipelines/benchmarks.yml +++ b/.azure-pipelines/benchmarks.yml @@ -3,20 +3,36 @@ pr: none variables: buildConfiguration: release + dotnetCoreSdkVersion: 5.0.103 + ddApiKey: $(DD_API_KEY) publishOutput: $(Build.SourcesDirectory)/src/bin/managed-publish +# Declare the datadog agent as a resource to be used as a pipeline service +resources: + containers: + - container: dd_agent + image: datadog/agent + ports: + - 8126:8126 + env: + DD_API_KEY: $(ddApiKey) + DD_INSIDE_CI: true + stages: - stage: build jobs: - #### Windows + #### Windows - job: Windows pool: Benchmarks - + workspace: clean: all + # Enable the Datadog Agent service for this job + services: + dd_agent: dd_agent variables: tracerHomeName: windows-tracer-home tracerHome: $(System.DefaultWorkingDirectory)/src/bin/$(tracerHomeName) @@ -29,7 +45,7 @@ stages: displayName: install dotnet core sdk inputs: packageType: sdk - version: 5.0.x + version: $(dotnetCoreSdkVersion) - task: NuGetToolInstaller@1 displayName: install nuget @@ -52,10 +68,10 @@ stages: inputs: command: 'run' projects: '$(System.DefaultWorkingDirectory)/test/benchmarks/Benchmarks.Trace/Benchmarks.Trace.csproj' - arguments: '-c Release -f netcoreapp3.1 -- -r net472 netcoreapp3.1 -m -f * --iterationTime 1500' + arguments: '-c Release -f netcoreapp3.1 -- -r net472 netcoreapp3.1 -m -f * --iterationTime 2000' env: - OTEL_ENV: CI - OTEL_SERVICE: dd-trace-dotnet + DD_ENV: CI + DD_SERVICE: dd-trace-dotnet - task: PowerShell@2 inputs: diff --git a/.azure-pipelines/crank.yml b/.azure-pipelines/crank.yml index 8ac0c47f7d..033a182756 100644 --- a/.azure-pipelines/crank.yml +++ b/.azure-pipelines/crank.yml @@ -3,7 +3,6 @@ pr: none jobs: - - job: windows_profiler pool: vmImage: windows-2019 @@ -188,4 +187,4 @@ jobs: chmod +x ./run.sh ./run.sh env: - OTEL_SERVICE: dd-trace-dotnet + DD_SERVICE: dd-trace-dotnet diff --git a/.azure-pipelines/integration-tests.yml b/.azure-pipelines/integration-tests.yml index 3d1f6fad1c..0f348669ad 100644 --- a/.azure-pipelines/integration-tests.yml +++ b/.azure-pipelines/integration-tests.yml @@ -1,7 +1,9 @@ trigger: branches: include: - - main + - master + - release/* + - hotfix/* paths: exclude: - docs/* @@ -9,8 +11,9 @@ trigger: pr: branches: include: - - main + - master - release/* + - hotfix/* paths: exclude: - docs/* @@ -22,6 +25,7 @@ pool: variables: buildConfiguration: Release publishOutput: $(System.DefaultWorkingDirectory)/src/bin/managed-publish + dotnetCoreSdk5Version: 5.0.103 jobs: @@ -38,7 +42,8 @@ jobs: displayName: install dotnet core sdk 5 inputs: packageType: sdk - version: 5.0.x + version: $(dotnetCoreSdk5Version) + includePreviewVersions: true - task: DotNetCoreCLI@2 displayName: dotnet build Datadog.Trace.ClrProfiler.Managed.Loader @@ -66,7 +71,7 @@ jobs: zipAfterPublish: false projects: src/Datadog.Trace.ClrProfiler.Managed/Datadog.Trace.ClrProfiler.Managed.csproj arguments: --configuration $(buildConfiguration) --framework netcoreapp3.1 --output $(publishOutput)/netcoreapp3.1 - + - task: DockerCompose@0 displayName: docker-compose run Profiler inputs: @@ -89,7 +94,7 @@ jobs: publishTargetFramework: netcoreapp3.1 net5_0: publishTargetFramework: net5.0 - + variables: TestAllPackageVersions: true @@ -138,7 +143,8 @@ jobs: displayName: install dotnet core sdk 5 inputs: packageType: sdk - version: 5.0.x + version: $(dotnetCoreSdk5Version) + includePreviewVersions: true - task: DotNetCoreCLI@2 displayName: dotnet build Datadog.Trace.ClrProfiler.Managed.Loader @@ -369,7 +375,7 @@ jobs: containerregistrytype: Container Registry dockerComposeCommand: down condition: succeededOrFailed() - + - job: Windows_IIS timeoutInMinutes: 100 strategy: @@ -408,7 +414,8 @@ jobs: displayName: install dotnet core sdk 5 inputs: packageType: sdk - version: 5.0.x + version: $(dotnetCoreSdk5Version) + includePreviewVersions: true - task: NuGetToolInstaller@1 displayName: install nuget @@ -489,7 +496,7 @@ jobs: [System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a") $publish = New-Object System.EnterpriseServices.Internal.Publish Get-ChildItem $(publishOutput)/net45 -Filter *.dll | Foreach-Object { $publish.GacInstall($_.FullName) } - displayName: Add net45 OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed assets to the GAC + displayName: Add net45 Datadog.Trace.ClrProfiler.Managed assets to the GAC - task: DotNetCoreCLI@2 displayName: dotnet test --filter LoadFromGAC=True @@ -504,3 +511,89 @@ jobs: containerregistrytype: Container Registry dockerComposeCommand: down condition: succeededOrFailed() + +- job: build_linux_profiler_arm64 + pool: Arm64 + workspace: + clean: all + + steps: + + - task: DotNetCoreCLI@2 + displayName: dotnet build Datadog.Trace.ClrProfiler.Managed.Loader + inputs: + command: build + projects: src/Datadog.Trace.ClrProfiler.Managed.Loader/Datadog.Trace.ClrProfiler.Managed.Loader.csproj + arguments: --configuration $(buildConfiguration) /nowarn:netsdk1138 + + - task: DotNetCoreCLI@2 + displayName: dotnet publish Datadog.Trace.ClrProfiler.Managed 2.0 + inputs: + command: publish + publishWebProjects: false + modifyOutputPath: false + zipAfterPublish: false + projects: src/Datadog.Trace.ClrProfiler.Managed/Datadog.Trace.ClrProfiler.Managed.csproj + arguments: --configuration $(buildConfiguration) --framework netstandard2.0 --output $(publishOutput)/netstandard2.0 + + - task: DotNetCoreCLI@2 + displayName: dotnet publish Datadog.Trace.ClrProfiler.Managed 3.1 + inputs: + command: publish + publishWebProjects: false + modifyOutputPath: false + zipAfterPublish: false + projects: src/Datadog.Trace.ClrProfiler.Managed/Datadog.Trace.ClrProfiler.Managed.csproj + arguments: --configuration $(buildConfiguration) --framework netcoreapp3.1 --output $(publishOutput)/netcoreapp3.1 + + - task: DockerCompose@0 + displayName: docker-compose run Profiler + inputs: + containerregistrytype: Container Registry + dockerComposeCommand: run -e buildConfiguration=$(buildConfiguration) Profiler + + - publish: $(System.DefaultWorkingDirectory)/src/Datadog.Trace.ClrProfiler.Native/bin/$(buildConfiguration)/x64 + artifact: linux-tracer-home_arm + +- job: Linux_arm64 + pool: Arm64 + workspace: + clean: all + + dependsOn: build_linux_profiler_arm64 + condition: succeeded() + + variables: + TestAllPackageVersions: true + + steps: + - download: current + artifact: linux-tracer-home_arm + + - task: CopyFiles@2 + inputs: + sourceFolder: $(Pipeline.Workspace)/linux-tracer-home_arm + targetFolder: $(System.DefaultWorkingDirectory)/src/Datadog.Trace.ClrProfiler.Native/bin/$(buildConfiguration)/arm64 + + - task: DockerCompose@0 + displayName: docker-compose run build.arm64 + inputs: + containerregistrytype: Container Registry + dockerComposeCommand: run -e TestAllPackageVersions=true -e buildConfiguration=$(buildConfiguration) -e publishTargetFramework=net5.0 build.arm64 + + - task: DockerCompose@0 + displayName: docker-compose run IntegrationTests.ARM64.Core50 + inputs: + containerregistrytype: Container Registry + dockerComposeCommand: run -e TestAllPackageVersions=true -e buildConfiguration=$(buildConfiguration) IntegrationTests.ARM64.Core50 + + - publish: build_data + artifact: $(Agent.JobName)_profiler-logs-$(System.JobAttempt) + condition: succeededOrFailed() + + - task: PublishTestResults@2 + displayName: publish test results + inputs: + testResultsFormat: VSTest + testResultsFiles: test/**/*.trx + condition: succeededOrFailed() diff --git a/.azure-pipelines/packages.yml b/.azure-pipelines/packages.yml index 1d60764b4e..61678bd97d 100644 --- a/.azure-pipelines/packages.yml +++ b/.azure-pipelines/packages.yml @@ -3,6 +3,7 @@ pr: none variables: buildConfiguration: release + dotnetCoreSdkVersion: 5.0.103 publishOutput: $(Build.SourcesDirectory)/src/bin/managed-publish stages: @@ -26,7 +27,7 @@ stages: displayName: install dotnet core sdk 5.0 inputs: packageType: sdk - version: 5.0.x + version: $(dotnetCoreSdkVersion) - task: NuGetToolInstaller@1 displayName: install nuget @@ -82,7 +83,7 @@ stages: - task: UseDotNet@2 displayName: install dotnet core sdk inputs: - version: 5.0.x + version: $(dotnetCoreSdkVersion) - task: DotNetCoreCLI@2 displayName: dotnet build Datadog.Trace.ClrProfiler.Managed.Loader @@ -136,7 +137,7 @@ stages: - task: UseDotNet@2 displayName: install dotnet core sdk inputs: - version: 5.0.x + version: $(dotnetCoreSdkVersion) - task: DotNetCoreCLI@2 displayName: dotnet build Datadog.Trace.ClrProfiler.Managed.Loader @@ -299,11 +300,11 @@ stages: env: SECRET: $(AWS_SECRET_ACCESS_KEY) - # by default, run this step on main branch only. + # by default, run this step on master branch only. # use "push_artifacts_to_s3" to override: # "true": run this step # "false": do NOT run this step - # else: run this stage if branch is main + # else: run this stage if branch is master - script: aws s3 cp s3_upload s3://datadog-reliability-env/dotnet/ --recursive displayName: Upload deb, MSI, index.txt to s3 @@ -313,6 +314,6 @@ stages: ne(variables['push_artifacts_to_s3'], 'false'), or( eq(variables['push_artifacts_to_s3'], 'true'), - eq(variables['Build.SourceBranch'], 'refs/heads/main') + eq(variables['Build.SourceBranch'], 'refs/heads/master') ) ) diff --git a/.azure-pipelines/runner.yml b/.azure-pipelines/runner.yml index 22a40f9317..72a9651552 100644 --- a/.azure-pipelines/runner.yml +++ b/.azure-pipelines/runner.yml @@ -3,6 +3,20 @@ pr: none variables: publishOutput: $(System.DefaultWorkingDirectory)/src/bin/managed-publish + dotnetCoreSdk5Version: 5.0.103 + ddApiKey: $(DD_API_KEY) + DD_DOTNET_TRACER_MSBUILD: + +# Declare the datadog agent as a resource to be used as a pipeline service +resources: + containers: + - container: dd_agent + image: datadog/agent + ports: + - 8126:8126 + env: + DD_API_KEY: $(ddApiKey) + DD_INSIDE_CI: true jobs: @@ -13,7 +27,7 @@ jobs: displayName: install dotnet core sdk 5.0 inputs: packageType: sdk - version: 5.0.x + version: $(dotnetCoreSdk5Version) includePreviewVersions: true - task: DotNetCoreCLI@2 @@ -112,7 +126,7 @@ jobs: displayName: install dotnet core sdk 5.0 inputs: packageType: sdk - version: 5.0.x + version: $(dotnetCoreSdk5Version) - task: DotNetCoreCLI@2 displayName: dotnet build @@ -143,6 +157,10 @@ jobs: pool: vmImage: windows-2019 + # Enable the Datadog Agent service for this job + services: + dd_agent: dd_agent + steps: - download: current artifact: linux-tracer-home @@ -203,22 +221,22 @@ jobs: displayName: install dotnet core sdk 5.0 inputs: packageType: sdk - version: 5.0.x + version: $(dotnetCoreSdk5Version) includePreviewVersions: true - task: DotNetCoreCLI@2 displayName: dotnet build inputs: command: build - configuration: $(buildConfiguration) - arguments: -l:DatadogLogger,"$(OTEL_DOTNET_TRACER_MSBUILD)" + configuration: Release + arguments: -l:DatadogLogger,"$(DD_DOTNET_TRACER_MSBUILD)" projects: | src/**/*.csproj test/**/*.Tests.csproj benchmarks/**/*.csproj !src/Datadog.Trace.Tools.Runner/*.csproj env: - OTEL_SERVICE_NAME: dd-tracer-dotnet + DD_SERVICE: dd-trace-dotnet - task: NuGetToolInstaller@1 displayName: install nuget @@ -233,19 +251,19 @@ jobs: displayName: tool build inputs: solution: src/Datadog.Trace.Tools.Runner/Datadog.Trace.Tools.Runner.proj - msbuildArguments: /t:BuildTool /l:DatadogLogger,"$(OTEL_DOTNET_TRACER_MSBUILD)" + msbuildArguments: /t:BuildTool /l:DatadogLogger,"$(DD_DOTNET_TRACER_MSBUILD)" maximumCpuCount: true env: - OTEL_SERVICE_NAME: dd-tracer-dotnet-runner-tool + DD_SERVICE: dd-trace-dotnet-runner-tool - task: MSBuild@1 displayName: standalone build inputs: solution: src/Datadog.Trace.Tools.Runner/Datadog.Trace.Tools.Runner.proj - msbuildArguments: /t:BuildStandalone /l:DatadogLogger,"$(OTEL_DOTNET_TRACER_MSBUILD)" + msbuildArguments: /t:BuildStandalone /l:DatadogLogger,"$(DD_DOTNET_TRACER_MSBUILD)" maximumCpuCount: true env: - OTEL_SERVICE_NAME: dd-tracer-dotnet-runner-tool + DD_SERVICE: dd-trace-dotnet-runner-tool - task: DeleteFiles@1 displayName: 'Remove unneeded files' diff --git a/.azure-pipelines/steps/install-dotnet-5-sdk.yml b/.azure-pipelines/steps/install-dotnet-5-sdk.yml index f70b06c162..493ab90d6c 100644 --- a/.azure-pipelines/steps/install-dotnet-5-sdk.yml +++ b/.azure-pipelines/steps/install-dotnet-5-sdk.yml @@ -1,7 +1,17 @@ +parameters: + - name: includeX86 + type: boolean + default: false + steps: - task: UseDotNet@2 displayName: install dotnet core sdk 5 inputs: packageType: sdk version: $(dotnetCoreSdk5Version) - includePreviewVersions: true \ No newline at end of file + includePreviewVersions: true + +- ${{ if eq(parameters.includeX86, true) }}: + - template: install-dotnet-sdk-32bit.yml + parameters: + sdkVersion: $(dotnetCoreSdk5Version) \ No newline at end of file diff --git a/.azure-pipelines/steps/install-dotnet-sdk-32bit.yml b/.azure-pipelines/steps/install-dotnet-sdk-32bit.yml new file mode 100644 index 0000000000..97a9ef0653 --- /dev/null +++ b/.azure-pipelines/steps/install-dotnet-sdk-32bit.yml @@ -0,0 +1,43 @@ +parameters: + - name: sdkVersion + type: string + default: '' + + - name: channel + type: string + default: '' + +steps: + - bash: | + if [ -n "$CHANNEL" ] && [ -n "$SDKVERSION" ]; then + echo "##vso[task.logissue type=error;]You can't provide both \"channel\" and \"sdkVersion\". Pick one." + echo "##vso[task.complete result=Failed;]" + elif [ -z "$CHANNEL" ] && [ -z "$SDKVERSION" ]; then + echo "##vso[task.logissue type=error;]You must provide either \"channel\" or \"sdkVersion\"." + echo "##vso[task.complete result=Failed;]" + fi + env: + CHANNEL: ${{ parameters.channel }} + SDKVERSION: ${{ parameters.sdkVersion }} + displayName: Validate parameters + + - ${{if ne(parameters.sdkVersion, '') }}: + - powershell: | + echo "Downloading dotnet-install.ps1" + Invoke-WebRequest -Uri "https://dot.net/v1/dotnet-install.ps1" -OutFile dotnet-install.ps1 + $path = "C:\Users\VssAdministrator\AppData\Local\Microsoft\dotnet_32" + echo "Installing dotnet (x86) to $path" + ./dotnet-install.ps1 -version ${{ parameters.sdkVersion }} -Architecture x86 -NoPath -InstallDir $path + echo "Exporting path to DOTNET_EXE_32" + echo "##vso[task.setvariable variable=DOTNET_EXE_32]$path\dotnet.exe" + displayName: install dotnet core sdk ${{ parameters.sdkVersion }} (x86) + - ${{if ne(parameters.channel, '') }}: + - powershell: | + echo "Downloading dotnet-install.ps1" + Invoke-WebRequest -Uri "https://dot.net/v1/dotnet-install.ps1" -OutFile dotnet-install.ps1 + $path = "C:\Users\VssAdministrator\AppData\Local\Microsoft\dotnet_32" + echo "Installing dotnet (x86) to $path" + ./dotnet-install.ps1 -Channel ${{ parameters.channel }} -Architecture x86 -NoPath -InstallDir $path + echo "Exporting path to DOTNET_EXE_32" + echo "##vso[task.setvariable variable=DOTNET_EXE_32]$path\dotnet.exe" + displayName: install dotnet core sdk ${{ parameters.channel }} (x86) diff --git a/.azure-pipelines/steps/install-dotnet-sdks.yml b/.azure-pipelines/steps/install-dotnet-sdks.yml index 7a966a0771..4975298406 100644 --- a/.azure-pipelines/steps/install-dotnet-sdks.yml +++ b/.azure-pipelines/steps/install-dotnet-sdks.yml @@ -1,3 +1,8 @@ +parameters: + - name: includeX86 + type: boolean + default: false + steps: - task: UseDotNet@2 displayName: install dotnet core sdk 2.1 @@ -22,4 +27,18 @@ steps: inputs: packageType: sdk version: $(dotnetCoreSdk5Version) - includePreviewVersions: true \ No newline at end of file + includePreviewVersions: true + +- ${{ if eq(parameters.includeX86, true) }}: + - template: install-dotnet-sdk-32bit.yml + parameters: + channel: 2.1 + - template: install-dotnet-sdk-32bit.yml + parameters: + channel: 3.0 + - template: install-dotnet-sdk-32bit.yml + parameters: + channel: 3.1 + - template: install-dotnet-sdk-32bit.yml + parameters: + sdkVersion: $(dotnetCoreSdk5Version) \ No newline at end of file diff --git a/.azure-pipelines/ultimate-pipeline.yml b/.azure-pipelines/ultimate-pipeline.yml index 84371218ae..8865ed8ed3 100644 --- a/.azure-pipelines/ultimate-pipeline.yml +++ b/.azure-pipelines/ultimate-pipeline.yml @@ -2,6 +2,8 @@ trigger: branches: include: - master + - release/* + - hotfix/* - refs/tags/* exclude: - refs/pull/*/head @@ -17,6 +19,8 @@ schedules: branches: include: - master + - release/* + - hotfix/* - /benchmarks/* always: true @@ -35,8 +39,7 @@ variables: NugetPackageDirectory: $(System.DefaultWorkingDirectory)/packages relativeNugetPackageDirectory: packages # For scheduled builds, only run benchmarks and crank (and deps). - # Allow forcing a benchmark/throughput run using run_benchmarks_only=true - benchmarksOnly: ${{ or(eq(variables['Build.Reason'], 'Schedule'), eq(variables['run_benchmarks_only'], 'true')) }} # only works if you have a main branch + isScheduledBuild: ${{ eq(variables['Build.Reason'], 'Schedule') }} # only works if you have a main branch # Declare the datadog agent as a resource to be used as a pipeline service resources: @@ -79,23 +82,11 @@ stages: strategy: matrix: debian: - matrixName: debian - poolName: Azure Pipelines - vmImage: ubuntu-18.04 baseImage: debian alpine: - matrixName: alpine - poolName: Azure Pipelines - vmImage: ubuntu-18.04 baseImage: alpine - arm64: - matrixName: arm64 - poolName: Arm64 - vmImage: - baseImage: debian pool: - name: $(poolName) - vmImage: $(vmImage) + vmImage: ubuntu-18.04 steps: - template: steps/run-in-docker.yml @@ -107,24 +98,46 @@ stages: - publish: $(tracerHome) displayName: Uploading linux tracer home artifact - artifact: linux-tracer-home-$(matrixName) + artifact: linux-tracer-home-$(baseImage) - publish: $(artifacts)/linux-x64 - condition: ne(variables['matrixName'], 'arm64') displayName: Upload linux-x64 packages - artifact: linux-packages-$(matrixName) + artifact: linux-packages-$(baseImage) + + - publish: $(System.DefaultWorkingDirectory) + displayName: Upload working directory after the build + artifact: build-linux-$(baseImage)-working-directory + +- stage: build_arm64 + dependsOn: [] + jobs: + - job: build + dependsOn: [] + pool: + name: Arm64 + + steps: + - template: steps/run-in-docker.yml + parameters: + build: true + target: builder + baseImage: debian + command: "Clean BuildTracerHome ZipTracerHome" + + - publish: $(tracerHome) + displayName: Uploading linux tracer home artifact + artifact: linux-tracer-home-arm64 - publish: $(artifacts)/linux-arm64 - condition: eq(variables['matrixName'], 'arm64') displayName: Upload linux-arm64 packages - artifact: linux-packages-$(matrixName) + artifact: linux-packages-arm64 - publish: $(System.DefaultWorkingDirectory) displayName: Upload working directory after the build - artifact: build-linux-$(matrixName)-working-directory + artifact: build-linux-arm64-working-directory - stage: build_macos - condition: and(succeeded(), eq(variables['benchmarksOnly'], 'False')) + condition: and(succeeded(), eq(variables['isScheduledBuild'], 'False')) dependsOn: [] jobs: - job: build @@ -147,7 +160,7 @@ stages: artifact: build-macos-working-directory - stage: package_windows - condition: and(succeeded(), eq(variables['benchmarksOnly'], 'False')) + condition: and(succeeded(), eq(variables['isScheduledBuild'], 'False')) dependsOn: build_windows pool: vmImage: windows-2019 @@ -177,7 +190,7 @@ stages: artifact: nuget-packages - stage: unit_tests_windows - condition: and(succeeded(), eq(variables['benchmarksOnly'], 'False')) + condition: and(succeeded(), eq(variables['isScheduledBuild'], 'False')) dependsOn: build_windows pool: vmImage: windows-2019 @@ -216,7 +229,7 @@ stages: condition: succeededOrFailed() - stage: unit_tests_macos - condition: and(succeeded(), eq(variables['benchmarksOnly'], 'False')) + condition: and(succeeded(), eq(variables['isScheduledBuild'], 'False')) dependsOn: build_macos jobs: - job: managed @@ -243,35 +256,23 @@ stages: condition: succeededOrFailed() - stage: unit_tests_linux - condition: and(succeeded(), eq(variables['benchmarksOnly'], 'False')) + condition: and(succeeded(), eq(variables['isScheduledBuild'], 'False')) dependsOn: [build_linux] jobs: - job: test strategy: matrix: debian: - matrixName: debian - poolName: Azure Pipelines - vmImage: ubuntu-18.04 baseImage: debian alpine: - matrixName: alpine - poolName: Azure Pipelines - vmImage: ubuntu-18.04 baseImage: alpine - arm64: - matrixName: arm64 - poolName: Arm64 - vmImage: - baseImage: debian pool: - name: $(poolName) - vmImage: $(vmImage) + vmImage: ubuntu-18.04 steps: - template: steps/restore-working-directory.yml parameters: - artifact: build-linux-$(matrixName)-working-directory + artifact: build-linux-$(baseImage)-working-directory - template: steps/run-in-docker.yml parameters: @@ -290,8 +291,38 @@ stages: testResultsFiles: build_data/results/**/*.trx condition: succeededOrFailed() +- stage: unit_tests_arm64 + condition: and(succeeded(), eq(variables['isScheduledBuild'], 'False')) + dependsOn: [build_arm64] + jobs: + - job: test + pool: + name: Arm64 + + steps: + - template: steps/restore-working-directory.yml + parameters: + artifact: build-linux-arm64-working-directory + + - template: steps/run-in-docker.yml + parameters: + build: true + baseImage: debian + command: "BuildAndRunManagedUnitTests" + + - publish: build_data + artifact: profiler-logs_unit_tests_linux_$(Agent.JobName)_$(System.JobAttempt) + condition: succeededOrFailed() + + - task: PublishTestResults@2 + displayName: publish test results + inputs: + testResultsFormat: VSTest + testResultsFiles: build_data/results/**/*.trx + condition: succeededOrFailed() + - stage: integration_tests_windows - condition: and(succeeded(), eq(variables['benchmarksOnly'], 'False')) + condition: and(succeeded(), eq(variables['isScheduledBuild'], 'False')) dependsOn: build_windows pool: vmImage: windows-2019 @@ -302,18 +333,20 @@ stages: strategy: matrix: x64: - buildPlatform: x64 + platform: x64 x86: - buildPlatform: x86 + platform: x86 steps: - template: steps/install-dotnet-sdks.yml + parameters: + includeX86: true - template: steps/restore-working-directory.yml - powershell: | Write-Host "Starting CosmosDB Emulator" Import-Module "C:/Program Files/Azure Cosmos DB Emulator/PSModules/Microsoft.Azure.CosmosDB.Emulator" - Start-CosmosDbEmulator + Start-CosmosDbEmulator -Timeout 300 displayName: 'Start CosmosDB Emulator' workingDirectory: $(Pipeline.Workspace) @@ -328,7 +361,7 @@ stages: condition: succeededOrFailed() - stage: integration_tests_windows_iis - condition: and(succeeded(), eq(variables['benchmarksOnly'], 'False')) + condition: and(succeeded(), eq(variables['isScheduledBuild'], 'False')) dependsOn: [build_windows, package_windows] jobs: - job: Windows_IIS @@ -336,25 +369,27 @@ stages: strategy: matrix: x64: - buildPlatform: x64 + platform: x64 enable32bit: false x86: - buildPlatform: x86 + platform: x86 enable32bit: true pool: vmImage: windows-2019 variables: - relativeMsiOutputDirectory: $(relativeArtifacts)/$(buildPlatform)/en-us + relativeMsiOutputDirectory: $(relativeArtifacts)/$(platform)/en-us steps: - template: steps/install-dotnet-sdks.yml + parameters: + includeX86: true - template: steps/restore-working-directory.yml - task: DownloadPipelineArtifact@2 displayName: Download MSI inputs: - artifact: windows-msi-$(buildPlatform) + artifact: windows-msi-$(platform) patterns: '**/*.msi' path: $(System.DefaultWorkingDirectory)/$(relativeMsiOutputDirectory) @@ -397,7 +432,7 @@ stages: condition: succeededOrFailed() - stage: integration_tests_linux - condition: and(succeeded(), eq(variables['benchmarksOnly'], 'False')) + condition: and(succeeded(), eq(variables['isScheduledBuild'], 'False')) dependsOn: [build_linux] jobs: - job: Test @@ -406,82 +441,33 @@ stages: debian_netcoreapp2_1: publishTargetFramework: netcoreapp2.1 baseImage: debian - matrixName: debian - poolName: Azure Pipelines - vmImage: ubuntu-18.04 - dockerComposeTask: NukeIntegrationTests - dockerComposeDependenciesTask: StartDependencies debian_netcoreapp3_0: publishTargetFramework: netcoreapp3.0 baseImage: debian - matrixName: debian - poolName: Azure Pipelines - vmImage: ubuntu-18.04 - dockerComposeTask: NukeIntegrationTests - dockerComposeDependenciesTask: StartDependencies debian_netcoreapp3_1: publishTargetFramework: netcoreapp3.1 baseImage: debian - matrixName: debian - poolName: Azure Pipelines - vmImage: ubuntu-18.04 - dockerComposeTask: NukeIntegrationTests - dockerComposeDependenciesTask: StartDependencies debian_net5_0: publishTargetFramework: net5.0 baseImage: debian - matrixName: debian - poolName: Azure Pipelines - vmImage: ubuntu-18.04 - dockerComposeTask: NukeIntegrationTests - dockerComposeDependenciesTask: StartDependencies alpine_netcoreapp2_1: publishTargetFramework: netcoreapp2.1 baseImage: alpine - matrixName: alpine - poolName: Azure Pipelines - vmImage: ubuntu-18.04 - dockerComposeTask: NukeIntegrationTests - dockerComposeDependenciesTask: StartDependencies alpine_netcoreapp3_0: publishTargetFramework: netcoreapp3.0 baseImage: alpine - matrixName: alpine - poolName: Azure Pipelines - vmImage: ubuntu-18.04 - dockerComposeTask: NukeIntegrationTests - dockerComposeDependenciesTask: StartDependencies alpine_netcoreapp3_1: publishTargetFramework: netcoreapp3.1 baseImage: alpine - matrixName: alpine - poolName: Azure Pipelines - vmImage: ubuntu-18.04 - dockerComposeTask: NukeIntegrationTests - dockerComposeDependenciesTask: StartDependencies alpine_net5_0: publishTargetFramework: net5.0 baseImage: alpine - matrixName: alpine - poolName: Azure Pipelines - vmImage: ubuntu-18.04 - dockerComposeTask: NukeIntegrationTests - dockerComposeDependenciesTask: StartDependencies - arm64_net5_0: - publishTargetFramework: net5.0 - baseImage: debian - matrixName: arm64 - poolName: Arm64 - vmImage: - dockerComposeTask: NukeIntegrationTests.ARM64 - dockerComposeDependenciesTask: StartDependencies.ARM64 variables: TestAllPackageVersions: true pool: - name: $(poolName) - vmImage: $(vmImage) + vmImage: ubuntu-18.04 steps: # Doing a clean of obj files _before_ restore to remove build output from previous runs @@ -496,7 +482,7 @@ stages: - template: steps/restore-working-directory.yml parameters: - artifact: build-linux-$(matrixName)-working-directory + artifact: build-linux-$(baseImage)-working-directory - template: steps/run-in-docker.yml parameters: @@ -508,13 +494,13 @@ stages: displayName: docker-compose build NukeIntegrationTests inputs: containerregistrytype: Container Registry - dockerComposeCommand: build --build-arg baseImage=$(baseImage) --build-arg framework=$(publishTargetFramework) $(dockerComposeTask) + dockerComposeCommand: build --build-arg baseImage=$(baseImage) --build-arg framework=$(publishTargetFramework) NukeIntegrationTests - task: DockerCompose@0 displayName: docker-compose start dependencies inputs: containerregistrytype: Container Registry - dockerComposeCommand: run --rm $(dockerComposeDependenciesTask) + dockerComposeCommand: run --rm StartDependencies - task: DockerCompose@0 displayName: docker-compose run NukeIntegrationTests @@ -523,7 +509,7 @@ stages: dockerComposeFileArgs: | baseImage=$(baseImage) framework=$(publishTargetFramework) - dockerComposeCommand: run --rm -e baseImage=$(baseImage) -e framework=$(publishTargetFramework) $(dockerComposeTask) + dockerComposeCommand: run --rm -e baseImage=$(baseImage) -e framework=$(publishTargetFramework) NukeIntegrationTests - task: DockerCompose@0 displayName: docker-compose stop services @@ -533,7 +519,7 @@ stages: condition: succeededOrFailed() - publish: build_data - artifact: profiler-logs_integration_tests_linux_$(matrixName)_$(publishTargetFramework)_$(System.JobAttempt) + artifact: profiler-logs_integration_tests_linux_$(baseImage)_$(publishTargetFramework)_$(System.JobAttempt) condition: succeededOrFailed() - task: PublishTestResults@2 @@ -543,12 +529,84 @@ stages: testResultsFiles: build_data/results/**/*.trx condition: succeededOrFailed() +- stage: integration_tests_arm64 + condition: and(succeeded(), eq(variables['isScheduledBuild'], 'False')) + dependsOn: [build_arm64] + jobs: + - job: Test + variables: + TestAllPackageVersions: true + publishTargetFramework: net5.0 + baseImage: debian + + pool: + name: Arm64 + + steps: + # Doing a clean of obj files _before_ restore to remove build output from previous runs + # Can't do a full clean, as otherwise restore-working-directory fails + # Only necessary for ARM64, but shouldn't cause any harm on others + # Can't ifdef it as depends on a matrix variable + - template: steps/run-in-docker.yml + parameters: + build: true + baseImage: $(baseImage) + command: "CleanObjFiles" + + - template: steps/restore-working-directory.yml + parameters: + artifact: build-linux-arm64-working-directory + + - template: steps/run-in-docker.yml + parameters: + build: true + baseImage: $(baseImage) + command: "BuildLinuxIntegrationTests --framework $(publishTargetFramework)" + + - task: DockerCompose@0 + displayName: docker-compose build NukeIntegrationTests + inputs: + containerregistrytype: Container Registry + dockerComposeCommand: build --build-arg baseImage=$(baseImage) --build-arg framework=$(publishTargetFramework) NukeIntegrationTests.ARM64 + + - task: DockerCompose@0 + displayName: docker-compose start dependencies + inputs: + containerregistrytype: Container Registry + dockerComposeCommand: run --rm StartDependencies.ARM64 + + - task: DockerCompose@0 + displayName: docker-compose run NukeIntegrationTests + inputs: + containerregistrytype: Container Registry + dockerComposeFileArgs: | + baseImage=$(baseImage) + framework=$(publishTargetFramework) + dockerComposeCommand: run --rm -e baseImage=$(baseImage) -e framework=$(publishTargetFramework) NukeIntegrationTests.ARM64 + + - task: DockerCompose@0 + displayName: docker-compose stop services + inputs: + containerregistrytype: Container Registry + dockerComposeCommand: down + condition: succeededOrFailed() + + - publish: build_data + artifact: profiler-logs_integration_tests_linux_arm64_$(publishTargetFramework)_$(System.JobAttempt) + condition: succeededOrFailed() + + - task: PublishTestResults@2 + displayName: publish test results + inputs: + testResultsFormat: VSTest + testResultsFiles: build_data/results/**/*.trx + condition: succeededOrFailed() + - stage: benchmarks - condition: and(succeeded(), ne(variables['skip_benchmarks'], 'true')) dependsOn: build_windows jobs: - #### Windows + #### Windows - job: Windows timeoutInMinutes: 100 @@ -573,8 +631,8 @@ stages: script: 'Start-Sleep -s 120' - stage: dotnet_tool - condition: and(succeeded(), eq(variables['benchmarksOnly'], 'False')) - dependsOn: [build_windows, build_linux, build_macos] + condition: and(succeeded(), eq(variables['isScheduledBuild'], 'False')) + dependsOn: [build_windows, build_linux, build_arm64, build_macos] jobs: - job: build_runner_tool_and_standalone @@ -677,9 +735,9 @@ stages: displayName: Uploading runner standalone osx-x64 artifact artifact: runner-standalone-osx-x64 -- stage: upload - condition: and(succeeded(), eq(variables['benchmarksOnly'], 'False')) - dependsOn: [package_windows, build_linux] +- stage: upload_to_s3 + condition: and(succeeded(), eq(variables['isScheduledBuild'], 'False')) + dependsOn: [package_windows, build_linux, build_arm64] jobs: - job: s3_upload @@ -773,9 +831,71 @@ stages: + +- stage: upload_to_feed + condition: and(succeeded(), eq(variables['isScheduledBuild'], 'False')) + dependsOn: [package_windows, build_linux, build_arm64, dotnet_tool] + jobs: + - job: upload + + pool: + vmImage: ubuntu-18.04 + + steps: + + - task: DownloadPipelineArtifact@2 + displayName: Download NuGet packages + inputs: + artifact: nuget-packages + path: $(Build.ArtifactStagingDirectory) + + # set the version from the package name + - bash: | + NUGET_NAME=$(basename $(Build.ArtifactStagingDirectory)/Datadog.Trace.OpenTracing.*.nupkg) + VERSION_NUMBER=${NUGET_NAME:26:-6} + echo "detected version: $VERSION_NUMBER" + echo "##vso[task.setvariable variable=tracer_version]$VERSION_NUMBER" + displayName: Extract version number + + - task: DownloadPipelineArtifact@2 + displayName: Download linux Alpine packages + inputs: + artifact: linux-packages-alpine + path: $(Build.ArtifactStagingDirectory) + + - task: DownloadPipelineArtifact@2 + displayName: Download linux Debian packages + inputs: + artifact: linux-packages-debian + path: $(Build.ArtifactStagingDirectory) + + - task: DownloadPipelineArtifact@2 + displayName: Download linux Arm64 packages + inputs: + artifact: linux-packages-arm64 + path: $(Build.ArtifactStagingDirectory) + + - task: DownloadPipelineArtifact@2 + displayName: Download Windows tracer home + inputs: + artifact: windows-tracer-home.zip + path: $(Build.ArtifactStagingDirectory) + + - task: DownloadPipelineArtifact@2 + displayName: Download runner dotnet tool + inputs: + artifact: runner-dotnet-tool + patterns: "*.nupkg" + path: $(Build.ArtifactStagingDirectory) + + - publish: "$(Build.ArtifactStagingDirectory)" + displayName: Publish release artifacts + artifact: $(tracer_version)-release-artifacts + + # We don't include the MSI artifacts as they're not signed + - stage: throughput - condition: and(succeeded(), ne(variables['skip_benchmarks'], 'true')) - dependsOn: [build_linux, build_windows] + dependsOn: [build_linux, build_arm64, build_windows] jobs: #### Linux diff --git a/.azure-pipelines/unit-tests.yml b/.azure-pipelines/unit-tests.yml index b2b12fba28..2374b2f166 100644 --- a/.azure-pipelines/unit-tests.yml +++ b/.azure-pipelines/unit-tests.yml @@ -1,7 +1,9 @@ trigger: branches: include: - - main + - master + - release/* + - hotfix/* - refs/tags/* exclude: - refs/pull/*/head @@ -12,7 +14,20 @@ trigger: variables: buildConfiguration: Debug - OTEL_DOTNET_TRACER_MSBUILD: + dotnetCoreSdk5Version: 5.0.103 + ddApiKey: $(DD_API_KEY) + DD_DOTNET_TRACER_MSBUILD: + +# Declare the datadog agent as a resource to be used as a pipeline service +resources: + containers: + - container: dd_agent + image: datadog/agent + ports: + - 8126:8126 + env: + DD_API_KEY: $(ddApiKey) + DD_INSIDE_CI: true jobs: @@ -26,14 +41,18 @@ jobs: pool: vmImage: $(imageName) + # Enable the Datadog Agent service for this job + services: + dd_agent: dd_agent + steps: # Install the tracer latest stable release to attach the profiler to the build and test steps. # The script exposes the required environment variables to the following steps - #- task: PowerShell@2 - # displayName: Install profiler latest release - # inputs: - # filePath: ./.azure-pipelines/setup_tracer.ps1 + - task: PowerShell@2 + displayName: Install profiler latest release + inputs: + filePath: ./.azure-pipelines/setup_tracer.ps1 - task: UseDotNet@2 displayName: install dotnet core runtime 2.1 @@ -57,31 +76,60 @@ jobs: displayName: install dotnet core sdk 5.0 inputs: packageType: sdk - version: 5.0.x + version: $(dotnetCoreSdk5Version) - task: DotNetCoreCLI@2 displayName: dotnet build inputs: command: build configuration: $(buildConfiguration) - arguments: /nowarn:netsdk1138 #-l:DatadogLogger,"$(OTEL_DOTNET_TRACER_MSBUILD)" + arguments: /nowarn:netsdk1138 #-l:DatadogLogger,"$(DD_DOTNET_TRACER_MSBUILD)" projects: | src/**/*.csproj test/**/*.Tests.csproj test/benchmarks/**/*.csproj !src/Datadog.Trace.Tools.Runner/*.csproj env: - OTEL_SERVICE_NAME: dd-trace-dotnet + DD_SERVICE: dd-trace-dotnet - task: DotNetCoreCLI@2 displayName: dotnet test inputs: command: test configuration: $(buildConfiguration) + projects: test/**/*.Tests.csproj + env: + DD_SERVICE: dd-trace-dotnet + +- job: managed_linux_arm64 + pool: Arm64 + workspace: + clean: all + + steps: + + - task: DotNetCoreCLI@2 + displayName: dotnet build + inputs: + command: build + configuration: $(buildConfiguration) + arguments: /nowarn:netsdk1138 projects: | + src/**/*.csproj test/**/*.Tests.csproj + benchmarks/**/*.csproj + !src/Datadog.Trace.Tools.Runner/*.csproj + env: + DD_SERVICE: dd-trace-dotnet + + - task: DotNetCoreCLI@2 + displayName: dotnet test + inputs: + command: test + configuration: $(buildConfiguration) + projects: test/**/*.Tests.csproj env: - OTEL_SERVICE_NAME: dd-tracer-dotnet + DD_SERVICE: dd-trace-dotnet - job: managed_macos pool: @@ -111,7 +159,7 @@ jobs: displayName: install dotnet core sdk 5.0 inputs: packageType: sdk - version: 5.0.x + version: $(dotnetCoreSdk5Version) - task: DotNetCoreCLI@2 displayName: dotnet build @@ -132,7 +180,7 @@ jobs: configuration: $(buildConfiguration) projects: test/**/*.Tests.csproj env: - OTEL_SERVICE: dd-trace-dotnet + DD_SERVICE: dd-trace-dotnet - job: windows_profiler @@ -157,7 +205,7 @@ jobs: displayName: install dotnet core sdk 5.0 inputs: packageType: sdk - version: 5.0.x + version: $(dotnetCoreSdk5Version) - task: DotNetCoreCLI@2 displayName: dotnet build @@ -214,7 +262,7 @@ jobs: displayName: install dotnet core sdk 5.0 inputs: packageType: sdk - version: 5.0.x + version: $(dotnetCoreSdk5Version) - task: DotNetCoreCLI@2 displayName: dotnet build @@ -224,7 +272,7 @@ jobs: arguments: /nowarn:netsdk1138 projects: | src/Datadog.Trace.ClrProfiler.Managed.Loader/Datadog.Trace.ClrProfiler.Managed.Loader.csproj - + - script: | sudo apt-get update sudo apt-get install -y llvm clang @@ -236,6 +284,22 @@ jobs: make displayName: build_profiler +- job: linux_profiler_arm64 + pool: Arm64 + workspace: + clean: all + + steps: + + - task: DotNetCoreCLI@2 + displayName: dotnet build + inputs: + command: build + configuration: $(buildConfiguration) + arguments: /nowarn:netsdk1138 + projects: | + src/Datadog.Trace.ClrProfiler.Managed.Loader/Datadog.Trace.ClrProfiler.Managed.Loader.csproj + - script: | cd ./src/Datadog.Trace.ClrProfiler.Native CXX=clang++ CC=clang cmake . @@ -257,7 +321,7 @@ jobs: displayName: install dotnet core sdk 5.0 inputs: packageType: sdk - version: 5.0.x + version: $(dotnetCoreSdk5Version) - task: DotNetCoreCLI@2 displayName: dotnet build @@ -272,4 +336,4 @@ jobs: cd ./src/Datadog.Trace.ClrProfiler.Native cmake . make - displayName: build_profiler \ No newline at end of file + displayName: build_profiler diff --git a/.clang-format b/.clang-format index 5f775353ed..c6d3b68926 100644 --- a/.clang-format +++ b/.clang-format @@ -1,3 +1,44 @@ --- -# We'll use defaults from the LLVM style, but with 4 columns indentation. -BasedOnStyle: Google \ No newline at end of file +ColumnLimit: 120 +UseTab: Never +IndentWidth: 4 +AccessModifierOffset: -4 +NamespaceIndentation: Inner + +BreakBeforeBraces: Custom +BraceWrapping: + AfterNamespace: true + AfterEnum: true + AfterStruct: true + AfterClass: true + SplitEmptyFunction: true + SplitEmptyRecord: true + AfterControlStatement: true + AfterFunction: true + AfterUnion: true + BeforeElse: true + AfterCaseLabel: true + AfterExternBlock: true + BeforeCatch: true + +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: AfterColon +CompactNamespaces: false +AlwaysBreakTemplateDeclarations: true +BreakConstructorInitializersBeforeComma: true +ConstructorInitializerAllOnOneLineOrOnePerLine: true +AllowShortBlocksOnASingleLine: false +AllowShortFunctionsOnASingleLine: false +AllowShortIfStatementsOnASingleLine: true +AllowShortLoopsOnASingleLine: true +PointerAlignment: Left +AlignConsecutiveAssignments: false +AlignTrailingComments: true +SpaceAfterCStyleCast: true +CommentPragmas: '^ NO-FORMAT:' +IndentCaseLabels: true +IndentGotoLabels: true + +# The following doesn't work pre clang-format version 13 +#BreakBeforeConceptDeclarations: true +#EmptyLineBeforeAccessModifier: LogicalBlock diff --git a/Datadog.Trace.proj b/Datadog.Trace.proj index f67eec190a..edc20ec262 100644 --- a/Datadog.Trace.proj +++ b/Datadog.Trace.proj @@ -264,13 +264,13 @@ ApiVersion=2.1.3;RestoreRecursive=false;BuildProjectReferences=false + + ApiVersion=3.0.0;RestoreRecursive=false;BuildProjectReferences=false + ApiVersion=1.0.187;RestoreRecursive=false;BuildProjectReferences=false diff --git a/build/PackageVersionsGeneratorDefinitions.json b/build/PackageVersionsGeneratorDefinitions.json index ac7005694e..f91a3f8e29 100644 --- a/build/PackageVersionsGeneratorDefinitions.json +++ b/build/PackageVersionsGeneratorDefinitions.json @@ -55,7 +55,7 @@ "SampleProjectName": "Samples.Microsoft.Data.SqlClient", "NugetPackageSearchName": "Microsoft.Data.SqlClient", "MinVersion": "1.0.0", - "MaxVersionExclusive": "3.0.0" + "MaxVersionExclusive": "4.0.0" }, { "IntegrationName": "StackExchangeRedis", diff --git a/build/PackageVersionsLatestMinors.g.props b/build/PackageVersionsLatestMinors.g.props index f942c8c073..05c6bb8d10 100644 --- a/build/PackageVersionsLatestMinors.g.props +++ b/build/PackageVersionsLatestMinors.g.props @@ -168,6 +168,9 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely ApiVersion=2.1.3;RestoreRecursive=false;BuildProjectReferences=false + + ApiVersion=3.0.0;RestoreRecursive=false;BuildProjectReferences=false + ApiVersion=1.0.488;RestoreRecursive=false;BuildProjectReferences=false diff --git a/build/_build/Build.Steps.cs b/build/_build/Build.Steps.cs index 2c69bba35a..c81b14491d 100644 --- a/build/_build/Build.Steps.cs +++ b/build/_build/Build.Steps.cs @@ -250,7 +250,7 @@ partial class Build var dest = TracerHomeDirectory; Logger.Info($"Copying '{source}' to '{dest}'"); - CopyFileToDirectory(source, dest, FileExistsPolicy.OverwriteIfNewer); + CopyFileToDirectory(source, dest, FileExistsPolicy.Overwrite); }); Target PublishManagedProfiler => _ => _ @@ -285,7 +285,7 @@ partial class Build $"{NativeProfilerProject.Name}.dll"; var dest = TracerHomeDirectory / $"win-{architecture}"; Logger.Info($"Copying '{source}' to '{dest}'"); - CopyFileToDirectory(source, dest, FileExistsPolicy.OverwriteIfNewer); + CopyFileToDirectory(source, dest, FileExistsPolicy.Overwrite); } }); @@ -299,7 +299,7 @@ partial class Build CopyFileToDirectory( RootDirectory / "build" / "artifacts" / "createLogPath.sh", TracerHomeDirectory, - FileExistsPolicy.OverwriteIfNewer); + FileExistsPolicy.Overwrite); // Copy Native file CopyFileToDirectory( @@ -318,7 +318,7 @@ partial class Build CopyFileToDirectory( RootDirectory / "build" / "artifacts" / "createLogPath.sh", TracerHomeDirectory, - FileExistsPolicy.OverwriteIfNewer); + FileExistsPolicy.Overwrite); // Create home directory CopyFileToDirectory( @@ -339,7 +339,7 @@ partial class Build .Executes(() => { // start by copying everything from the tracer home dir - CopyDirectoryRecursively(TracerHomeDirectory, DDTracerHomeDirectory, DirectoryExistsPolicy.Merge); + CopyDirectoryRecursively(TracerHomeDirectory, DDTracerHomeDirectory, DirectoryExistsPolicy.Merge, FileExistsPolicy.Overwrite); if (IsWin) { @@ -356,7 +356,7 @@ partial class Build EnsureCleanDirectory(outputDir); MoveFile( DDTracerHomeDirectory / fileName, - outputDir / architecture); + outputDir / fileName); }); Target BuildMsi => _ => _ @@ -730,6 +730,7 @@ _ when projectPath.ToString().Contains("Samples.OracleMDA") => false, // .DisableRestore() .EnableNoDependencies() .SetConfiguration(BuildConfiguration) + .SetTargetPlatform(Platform) .SetProperty("DeployOnBuild", true) .SetProperty("PublishProfile", publishProfile) .SetMaxCpuCount(null) @@ -753,6 +754,7 @@ _ when projectPath.ToString().Contains("Samples.OracleMDA") => false, try { DotNetTest(config => config + .SetDotnetPath(Platform) .SetConfiguration(BuildConfiguration) .SetTargetPlatform(Platform) .EnableNoRestore() @@ -766,6 +768,7 @@ _ when projectPath.ToString().Contains("Samples.OracleMDA") => false, // TODO: I think we should change this filter to run on Windows by default // (RunOnWindows!=False|Category=Smoke)&LoadFromGAC!=True&IIS!=True DotNetTest(config => config + .SetDotnetPath(Platform) .SetConfiguration(BuildConfiguration) .SetTargetPlatform(Platform) .EnableNoRestore() @@ -795,6 +798,7 @@ _ when projectPath.ToString().Contains("Samples.OracleMDA") => false, { // Different filter from RunWindowsIntegrationTests DotNetTest(config => config + .SetDotnetPath(Platform) .SetConfiguration(BuildConfiguration) .SetTargetPlatform(Platform) .EnableNoRestore() @@ -986,12 +990,12 @@ var name when multiApiProjects.Contains(name) => false, var src = TracerHomeDirectory; var testProject = Solution.GetProject(Projects.ClrProfilerIntegrationTests).Directory; var dest = testProject / "bin" / BuildConfiguration / Framework / "profiler-lib"; - CopyDirectoryRecursively(src, dest, DirectoryExistsPolicy.Merge, FileExistsPolicy.OverwriteIfNewer); + CopyDirectoryRecursively(src, dest, DirectoryExistsPolicy.Merge, FileExistsPolicy.Overwrite); // not sure exactly where this is supposed to go, may need to change the original build foreach (var linuxDir in TracerHomeDirectory.GlobDirectories("linux-*")) { - CopyDirectoryRecursively(linuxDir, dest, DirectoryExistsPolicy.Merge, FileExistsPolicy.OverwriteIfNewer); + CopyDirectoryRecursively(linuxDir, dest, DirectoryExistsPolicy.Merge, FileExistsPolicy.Overwrite); } }); diff --git a/build/_build/Build.Utilities.cs b/build/_build/Build.Utilities.cs index aae0556175..d8868e2e5b 100644 --- a/build/_build/Build.Utilities.cs +++ b/build/_build/Build.Utilities.cs @@ -158,6 +158,7 @@ partial class Build .SetProperty("platform", Platform)); DotNetRun(s => s + .SetDotnetPath(Platform) .SetFramework(Framework) .EnableNoLaunchProfile() .SetProjectFile(project) diff --git a/build/_build/Build.cs b/build/_build/Build.cs index 48ac11f2be..e87a28312f 100644 --- a/build/_build/Build.cs +++ b/build/_build/Build.cs @@ -51,7 +51,7 @@ partial class Build : NukeBuild readonly bool IsAlpine = false; [Parameter("The build version (for packaging purposes). Default is latest")] - readonly string Version = "1.27.0"; + readonly string Version = "1.27.1"; [Parameter("Prints the available drive space before executing each target. Defaults to false")] readonly bool PrintDriveSpace = false; diff --git a/build/_build/DotNetSettingsExtensions.cs b/build/_build/DotNetSettingsExtensions.cs index d6518886f2..0d42edfb30 100644 --- a/build/_build/DotNetSettingsExtensions.cs +++ b/build/_build/DotNetSettingsExtensions.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using Nuke.Common; using Nuke.Common.IO; using Nuke.Common.ProjectModel; using Nuke.Common.Tooling; @@ -109,4 +110,28 @@ public static MSBuildSettings SetMSBuildPath(this MSBuildSettings settings) .When(!string.IsNullOrEmpty(vsRoot), c => c.SetProcessToolPath(Path.Combine(vsRoot, "MSBuild", "Current", "Bin", "MSBuild.exe"))); } + + /// + /// Conditionally set the dotnet.exe location, using the 32-bit dll when targeting x86 + /// + public static T SetDotnetPath(this T settings, MSBuildTargetPlatform platform) + where T : ToolSettings + { + if (platform != MSBuildTargetPlatform.x86 && platform != MSBuildTargetPlatform.Win32) + { + return settings; + } + + + // assume it's installed where we expect + var dotnetPath = EnvironmentInfo.GetVariable("DOTNET_EXE_32") + ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "dotnet", "dotnet.exe"); + + if (!File.Exists(dotnetPath)) + { + throw new Exception($"Error locating 32-bit dotnet process. Expected at '{dotnetPath}'"); + } + + return settings.SetProcessToolPath(dotnetPath); + } } diff --git a/build/docker/Datadog.Trace.ClrProfiler.IntegrationTests.sh b/build/docker/Datadog.Trace.ClrProfiler.IntegrationTests.sh index 005e85baf5..97fa7e8873 100755 --- a/build/docker/Datadog.Trace.ClrProfiler.IntegrationTests.sh +++ b/build/docker/Datadog.Trace.ClrProfiler.IntegrationTests.sh @@ -6,7 +6,7 @@ cd "$( dirname "${BASH_SOURCE[0]}" )"/../../ buildConfiguration=${buildConfiguration:-Debug} publishTargetFramework=${publishTargetFramework:-netcoreapp3.1} -mkdir -p /var/log/opentelemetry/dotnet +mkdir -p /var/log/datadog/dotnet #https://docs.microsoft.com/en-us/dotnet/core/diagnostics/dumps#collecting-dumps-on-crash export COMPlus_DbgEnableMiniDump=1 @@ -17,7 +17,7 @@ cleanup() { # Collect run data mkdir /project/build_data - cp /var/log/opentelemetry/dotnet/* /project/build_data/ + cp /var/log/datadog/dotnet/* /project/build_data/ cp /tmp/coredump* /project/build_data/ 2>/dev/null || : } diff --git a/build/docker/Datadog.Trace.ClrProfiler.Native.sh b/build/docker/Datadog.Trace.ClrProfiler.Native.sh index 1b232da73a..b99167c9ee 100755 --- a/build/docker/Datadog.Trace.ClrProfiler.Native.sh +++ b/build/docker/Datadog.Trace.ClrProfiler.Native.sh @@ -1,28 +1,7 @@ #!/bin/bash set -euxo pipefail -uname_os() { - os=$(uname -s | tr '[:upper:]' '[:lower:]') - case "$os" in - cygwin_nt*) echo "windows" ;; - mingw*) echo "windows" ;; - msys_nt*) echo "windows" ;; - *) echo "$os" ;; - esac -} - -native_sufix() { - os=$(uname_os) - case "$os" in - windows*) echo "dll" ;; - linux*) echo "so" ;; - darwin*) echo "dylib" ;; - *) echo "OS: ${os} is not supported" ; exit 1 ;; - esac -} - DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" -SUFIX=$(native_sufix) cd "$DIR/../.." @@ -34,10 +13,10 @@ BUILD_TYPE=${buildConfiguration:-Debug} cd src/Datadog.Trace.ClrProfiler.Native mkdir -p build -(cd build && cmake ../ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} && make) +(cd build && cmake ../ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} && make) mkdir -p bin/${BUILD_TYPE}/x64 -cp -f build/bin/Datadog.Trace.ClrProfiler.Native.${SUFIX} bin/${BUILD_TYPE}/x64/OpenTelemetry.AutoInstrumentation.ClrProfiler.Native.${SUFIX} +cp -f build/bin/Datadog.Trace.ClrProfiler.Native.so bin/${BUILD_TYPE}/x64/Datadog.Trace.ClrProfiler.Native.so # If running the unified pipeline, do not copy managed assets yet. Do so during the package build step if [ -z "${UNIFIED_PIPELINE-}" ]; then diff --git a/build/docker/IIS/LoaderOptimizationRegKey.dockerfile b/build/docker/IIS/LoaderOptimizationRegKey.dockerfile index a8983df190..69b154ca77 100644 --- a/build/docker/IIS/LoaderOptimizationRegKey.dockerfile +++ b/build/docker/IIS/LoaderOptimizationRegKey.dockerfile @@ -1,12 +1,8 @@ -FROM mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019 +FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] -# Install .NET Framework, and ASP.NET features -RUN Add-WindowsFeature NET-Framework-45-ASPNET; \ - Add-WindowsFeature Web-Asp-Net45 - # Copy IIS websites -ADD test/test-applications/aspnet/Samples.AspNet472.LoaderOptimizationRegKey/bin/Release/Publish LoaderOptimizationRegKey +ADD test/test-applications/aspnet/Samples.AspNet472.LoaderOptimizationRegKey/bin/Release/publish LoaderOptimizationRegKey # Set up IIS websites ARG ENABLE_32_BIT diff --git a/build/docker/build.sh b/build/docker/build.sh index 0892d7c225..efa3efe1b5 100755 --- a/build/docker/build.sh +++ b/build/docker/build.sh @@ -22,12 +22,6 @@ done dotnet publish -f netstandard2.0 -c $buildConfiguration src/Datadog.Trace.ClrProfiler.Managed/Datadog.Trace.ClrProfiler.Managed.csproj -o "$PUBLISH_OUTPUT/netstandard2.0" dotnet publish -f netcoreapp3.1 -c $buildConfiguration src/Datadog.Trace.ClrProfiler.Managed/Datadog.Trace.ClrProfiler.Managed.csproj -o "$PUBLISH_OUTPUT/netcoreapp3.1" -# Exit if QUICK_BUILD env var is not empty -if [ -n "${QUICK_BUILD-}" ] -then - exit -fi - # Only build Samples.AspNetCoreMvc21 for netcoreapp2.1 if [ "$publishTargetFramework" == "netcoreapp2.1" ] then diff --git a/build/docker/linux-build.dockerfile b/build/docker/linux-build.dockerfile index 7bcfcd67eb..e934b17db2 100644 --- a/build/docker/linux-build.dockerfile +++ b/build/docker/linux-build.dockerfile @@ -6,7 +6,7 @@ ARG BUILD_CONFIGURATION=Release ARG WORKSPACE=/workspace ARG PUBLISH_FOLDER=/workspace/publish -ARG TRACER_HOME=/otel-tracer-dotnet +ARG TRACER_HOME=/dd-tracer-dotnet FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-managed-base # Instructions to install .NET Core runtimes from @@ -66,10 +66,10 @@ ARG PUBLISH_FOLDER ARG TRACER_HOME COPY --from=build-managed ${WORKSPACE} ${WORKSPACE} WORKDIR ${WORKSPACE}/src/Datadog.Trace.ClrProfiler.Native/build -RUN cmake .. && make && cp -f ./bin/Datadog.Trace.ClrProfiler.Native.so ${PUBLISH_FOLDER}/OpenTelemetry.AutoInstrumentation.ClrProfiler.Native.so -RUN mkdir -p /var/log/opentelemetry/dotnet +RUN cmake .. && make && cp -f ./bin/Datadog.Trace.ClrProfiler.Native.so ${PUBLISH_FOLDER}/ +RUN mkdir -p /var/log/datadog/dotnet WORKDIR ${PUBLISH_FOLDER} -RUN echo "#!/bin/bash\n set -euxo pipefail\n export CORECLR_ENABLE_PROFILING=\"1\"\n export CORECLR_PROFILER=\"{918728DD-259F-4A6A-AC2B-B85E1B658318}\"\n export OTEL_DOTNET_TRACER_HOME=\"${TRACER_HOME}\"\n export CORECLR_PROFILER_PATH=\"\${OTEL_DOTNET_TRACER_HOME}/OpenTelemetry.AutoInstrumentation.ClrProfiler.Native.so\"\n export OTEL_INTEGRATIONS=\"\${OTEL_DOTNET_TRACER_HOME}/integrations.json\"\n eval \"\$@\"\n" > dd-trace.bash +RUN echo "#!/bin/bash\n set -euxo pipefail\n export CORECLR_ENABLE_PROFILING=\"1\"\n export CORECLR_PROFILER=\"{846F5F1C-F9AE-4B07-969E-05C26BC060D8}\"\n export DD_DOTNET_TRACER_HOME=\"${TRACER_HOME}\"\n export CORECLR_PROFILER_PATH=\"\${DD_DOTNET_TRACER_HOME}/Datadog.Trace.ClrProfiler.Native.so\"\n export DD_INTEGRATIONS=\"\${DD_DOTNET_TRACER_HOME}/integrations.json\"\n eval \"\$@\"\n" > dd-trace.bash RUN chmod +x dd-trace.bash @@ -82,8 +82,8 @@ COPY --from=build-native /var/log/datadog/ /var/log/datadog/ FROM build-native as native-linux-binary ARG PUBLISH_FOLDER -COPY --from=build-native ${PUBLISH_FOLDER}/OpenTelemetry.AutoInstrumentation.ClrProfiler.Native.so OpenTelemetry.AutoInstrumentation.ClrProfiler.Native.so -CMD cp -f OpenTelemetry.AutoInstrumentation.ClrProfiler.Native.so /home/linux-x64/OpenTelemetry.AutoInstrumentation.ClrProfiler.Native.so +COPY --from=build-native ${PUBLISH_FOLDER}/Datadog.Trace.ClrProfiler.Native.so Datadog.Trace.ClrProfiler.Native.so +CMD cp -f Datadog.Trace.ClrProfiler.Native.so /home/linux-x64/Datadog.Trace.ClrProfiler.Native.so FROM build-managed-base as dotnet-sdk-with-dd-tracer diff --git a/build/docker/package.sh b/build/docker/package.sh index 2992647255..840287dac4 100755 --- a/build/docker/package.sh +++ b/build/docker/package.sh @@ -2,14 +2,12 @@ set -euxo pipefail DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" -VERSION=0.0.1 +VERSION=1.27.1 BUILD_TYPE=${buildConfiguration:-Debug} ARCH=${ARCHITECTURE:-x64} mkdir -p $DIR/../../deploy/linux -for target in integrations.json defaults.env LICENSE NOTICE ; do - cp $DIR/../../$target $DIR/../../src/Datadog.Trace.ClrProfiler.Native/bin/${BUILD_TYPE}/x64/ -done +cp $DIR/../../integrations.json $DIR/../../src/Datadog.Trace.ClrProfiler.Native/bin/${BUILD_TYPE}/x64/ cp $DIR/../../build/artifacts/createLogPath.sh $DIR/../../src/Datadog.Trace.ClrProfiler.Native/bin/${BUILD_TYPE}/x64/ # If running the unified pipeline, copy managed assets now instead of in the profiler build step @@ -27,35 +25,29 @@ for pkgtype in $PKGTYPES ; do -f \ -s dir \ -t $pkgtype \ - -n otel-dotnet-autoinstrumentation \ - --license "Apache License, Version 2.0" \ - --provides otel-dotnet-autoinstrumentation \ - --vendor OpenTelemetry \ + -n datadog-dotnet-apm \ -v $VERSION \ - $(if [ $pkgtype != 'tar' ] ; then echo --prefix /opt/otel-dotnet-autoinstrumentation ; fi) \ + $(if [ $pkgtype != 'tar' ] ; then echo --prefix /opt/datadog ; fi) \ --chdir $DIR/../../src/Datadog.Trace.ClrProfiler.Native/bin/${BUILD_TYPE}/x64 \ netstandard2.0/ \ netcoreapp3.1/ \ - OpenTelemetry.AutoInstrumentation.ClrProfiler.Native.so \ + Datadog.Trace.ClrProfiler.Native.so \ integrations.json \ - createLogPath.sh \ - defaults.env \ - LICENSE \ - NOTICE + createLogPath.sh done -gzip -f otel-dotnet-autoinstrumentation.tar +gzip -f datadog-dotnet-apm.tar if [ -z "${MUSL-}" ]; then if [ "$ARCH" == "x64" ]; then - mv otel-dotnet-autoinstrumentation.tar.gz otel-dotnet-autoinstrumentation-$VERSION.tar.gz + mv datadog-dotnet-apm.tar.gz datadog-dotnet-apm-$VERSION.tar.gz else - mv otel-dotnet-autoinstrumentation.tar.gz otel-dotnet-autoinstrumentation-$VERSION.$ARCH.tar.gz + mv datadog-dotnet-apm.tar.gz datadog-dotnet-apm-$VERSION.$ARCH.tar.gz fi else if [ "$ARCH" == "x64" ]; then - mv otel-dotnet-autoinstrumentation.tar.gz otel-dotnet-autoinstrumentation-$VERSION-musl.tar.gz + mv datadog-dotnet-apm.tar.gz datadog-dotnet-apm-$VERSION-musl.tar.gz else - mv otel-dotnet-autoinstrumentation.tar.gz otel-dotnet-autoinstrumentation-$VERSION-musl.$ARCH.tar.gz + mv datadog-dotnet-apm.tar.gz datadog-dotnet-apm-$VERSION-musl.$ARCH.tar.gz fi fi diff --git a/build/docker/with-profiler-logs.bash b/build/docker/with-profiler-logs.bash index 3c5f8e0b38..05addb04a8 100755 --- a/build/docker/with-profiler-logs.bash +++ b/build/docker/with-profiler-logs.bash @@ -1,11 +1,10 @@ #!/bin/bash set -euxo pipefail -mkdir -p /var/log/opentelemetry/dotnet -touch /var/log/opentelemetry/dotnet/dotnet-tracer-native.log +mkdir -p /var/log/datadog/dotnet cleanup() { - cat /var/log/opentelemetry/dotnet/dotnet-tracer-native* \ + cat /var/log/datadog/dotnet/dotnet-tracer-native* \ | awk ' /info/ {print "\033[32m" $0 "\033[39m"} /warn/ {print "\033[31m" $0 "\033[39m"} diff --git a/build/docker/with-profiler.bash b/build/docker/with-profiler.bash index c85e1ee7f5..293b7daf71 100755 --- a/build/docker/with-profiler.bash +++ b/build/docker/with-profiler.bash @@ -4,9 +4,9 @@ set -euxo pipefail DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../.." >/dev/null && pwd )" export CORECLR_ENABLE_PROFILING="1" -export CORECLR_PROFILER="{918728DD-259F-4A6A-AC2B-B85E1B658318}" -export CORECLR_PROFILER_PATH="${DIR}/src/Datadog.Trace.ClrProfiler.Native/obj/Debug/x64/OpenTelemetry.AutoInstrumentation.ClrProfiler.Native.so" -export OTEL_DOTNET_TRACER_HOME="${DIR}" -export OTEL_INTEGRATIONS="${OTEL_DOTNET_TRACER_HOME}/integrations.json" +export CORECLR_PROFILER="{846F5F1C-F9AE-4B07-969E-05C26BC060D8}" +export CORECLR_PROFILER_PATH="${DIR}/src/Datadog.Trace.ClrProfiler.Native/obj/Debug/x64/Datadog.Trace.ClrProfiler.Native.so" +export DD_DOTNET_TRACER_HOME="${DIR}" +export DD_INTEGRATIONS="${DD_DOTNET_TRACER_HOME}/integrations.json" eval "$@" diff --git a/build/tools/PrepareRelease/PrepareRelease.csproj b/build/tools/PrepareRelease/PrepareRelease.csproj index 9ef755d123..30875a49bd 100644 --- a/build/tools/PrepareRelease/PrepareRelease.csproj +++ b/build/tools/PrepareRelease/PrepareRelease.csproj @@ -6,9 +6,12 @@ netcoreapp3.1 + + + + - diff --git a/build/tools/PrepareRelease/Program.cs b/build/tools/PrepareRelease/Program.cs index 0409dd678d..9ae4ce1bfe 100644 --- a/build/tools/PrepareRelease/Program.cs +++ b/build/tools/PrepareRelease/Program.cs @@ -7,7 +7,6 @@ using System.Diagnostics; using System.IO; using System.Linq; -using Datadog.Core.Tools; namespace PrepareRelease { @@ -24,7 +23,7 @@ public static void Main(string[] args) throw new ArgumentException($@"You must specify at least one job name from [""{Versions}"", ""{Integrations}, ""{Msi}""]."); } - var solutionDir = EnvironmentTools.GetSolutionDirectory(); + var solutionDir = GetSolutionDirectory(); if (JobShouldRun(Integrations, args)) { @@ -36,7 +35,7 @@ public static void Main(string[] args) if (JobShouldRun(Versions, args)) { Console.WriteLine("--------------- Versions Job Started ---------------"); - SetAllVersions.Run(); + new SetAllVersions(solutionDir).Run(); Console.WriteLine("--------------- Versions Job Complete ---------------"); } @@ -44,9 +43,7 @@ public static void Main(string[] args) { Environment.SetEnvironmentVariable("SOLUTION_DIR", solutionDir); - var outputDir = Path.Combine(solutionDir, "src", "bin", "windows-tracer-home"); - Environment.SetEnvironmentVariable("OUTPUT_DIR", outputDir); - + var outputDir = Path.Combine(solutionDir, "bin", "tracer-home"); var publishBatch = Path.Combine(solutionDir, "build", "tools", "PrepareRelease", "publish-all.bat"); ExecuteCommand(publishBatch); @@ -69,5 +66,31 @@ private static void ExecuteCommand(string command) Console.WriteLine("Publish ExitCode: " + process.ExitCode, "ExecuteCommand"); process?.Close(); } + + private static string GetSolutionDirectory() + { + var startDirectory = Environment.CurrentDirectory; + var currentDirectory = Directory.GetParent(startDirectory); + const string searchItem = @"Datadog.Trace.sln"; + + while (true) + { + var slnFile = currentDirectory.GetFiles(searchItem).SingleOrDefault(); + + if (slnFile != null) + { + break; + } + + currentDirectory = currentDirectory.Parent; + + if (currentDirectory == null || !currentDirectory.Exists) + { + throw new Exception($"Unable to find solution directory from: {startDirectory}"); + } + } + + return currentDirectory.FullName; + } } } diff --git a/build/tools/PrepareRelease/SetAllVersions.cs b/build/tools/PrepareRelease/SetAllVersions.cs index d0e539703c..5976592cc9 100644 --- a/build/tools/PrepareRelease/SetAllVersions.cs +++ b/build/tools/PrepareRelease/SetAllVersions.cs @@ -7,13 +7,35 @@ using System.IO; using System.Text; using System.Text.RegularExpressions; -using Datadog.Core.Tools; namespace PrepareRelease { - public static class SetAllVersions + public class SetAllVersions { - public static void Run() + public SetAllVersions(string solutionDirectory) + { + SolutionDirectory = solutionDirectory; + } + + /// + /// Gets the root solution directory, where "Datadog.Trace.sln" can be found. + /// + public string SolutionDirectory { get; } + + /// + /// Gets the current tracer version. + /// This is the single source of truth for the current tracer version. + /// When changing the tracer version, update this value and , + /// then run the "PrepareRelease" tool to update the entire solution. + /// + public Version TracerVersion { get; } = new("0.0.1"); + + /// + /// Gets a value indicating whether the current tracer version is a prerelease. + /// + public bool IsPrerelease { get; } = false; + + public void Run() { Console.WriteLine($"Updating version instances to {VersionString()}"); @@ -154,42 +176,42 @@ public static void Run() Console.WriteLine($"Completed synchronizing versions to {VersionString()}"); } - private static string FourPartVersionReplace(string text) + private string FourPartVersionReplace(string text) { return Regex.Replace(text, VersionPattern(fourPartVersion: true), FourPartVersionString(), RegexOptions.Singleline); } - private static string FullVersionReplace(string text, string split, string prefix = "") + private string FullVersionReplace(string text, string split, string prefix = "") { return Regex.Replace(text, prefix + VersionPattern(split), prefix + VersionString(split), RegexOptions.Singleline); } - private static string FullAssemblyNameReplace(string text) + private string FullAssemblyNameReplace(string text) { return Regex.Replace(text, AssemblyString(VersionPattern()), AssemblyString(VersionString()), RegexOptions.Singleline); } - private static string MajorAssemblyVersionReplace(string text, string split) + private string MajorAssemblyVersionReplace(string text, string split) { return Regex.Replace(text, VersionPattern(fourPartVersion: true), MajorVersionString(split), RegexOptions.Singleline); } - private static string DatadogTraceNugetDependencyVersionReplace(string text) + private string DatadogTraceNugetDependencyVersionReplace(string text) { return Regex.Replace(text, $"", $"", RegexOptions.Singleline); } - private static string NugetVersionReplace(string text) + private string NugetVersionReplace(string text) { return Regex.Replace(text, $"{VersionPattern(withPrereleasePostfix: true)}", $"{VersionString(withPrereleasePostfix: true)}", RegexOptions.Singleline); } - private static string NuspecVersionReplace(string text) + private string NuspecVersionReplace(string text) { return Regex.Replace(text, $"{VersionPattern(withPrereleasePostfix: true)}", $"{VersionString(withPrereleasePostfix: true)}", RegexOptions.Singleline); } - private static string WixProjReplace(string text) + private string WixProjReplace(string text) { text = Regex.Replace( text, @@ -206,10 +228,9 @@ private static string WixProjReplace(string text) return text; } - private static void SynchronizeVersion(string path, Func transform) + private void SynchronizeVersion(string path, Func transform) { - var solutionDirectory = EnvironmentTools.GetSolutionDirectory(); - var fullPath = Path.Combine(solutionDirectory, path); + var fullPath = Path.Combine(SolutionDirectory, path); Console.WriteLine($"Updating version instances for {path}"); @@ -224,22 +245,22 @@ private static void SynchronizeVersion(string path, Func transfo File.WriteAllText(fullPath, newFileContent, new UTF8Encoding(encoderShouldEmitUTF8Identifier: false)); } - private static string FourPartVersionString(string split = ".") + private string FourPartVersionString(string split = ".") { - return $"{TracerVersion.Major}{split}{TracerVersion.Minor}{split}{TracerVersion.Patch}{split}0"; + return $"{TracerVersion.Major}{split}{TracerVersion.Minor}{split}{TracerVersion.Build}{split}0"; } - private static string MajorVersionString(string split = ".") + private string MajorVersionString(string split = ".") { return $"{TracerVersion.Major}{split}0{split}0{split}0"; } - private static string VersionString(string split = ".", bool withPrereleasePostfix = false) + private string VersionString(string split = ".", bool withPrereleasePostfix = false) { - var newVersion = $"{TracerVersion.Major}{split}{TracerVersion.Minor}{split}{TracerVersion.Patch}"; + var newVersion = $"{TracerVersion.Major}{split}{TracerVersion.Minor}{split}{TracerVersion.Build}"; // this gets around a compiler warning about unreachable code below - var isPreRelease = TracerVersion.IsPreRelease; + var isPreRelease = IsPrerelease; // ReSharper disable once ConditionIsAlwaysTrueOrFalse if (withPrereleasePostfix && isPreRelease) @@ -250,7 +271,7 @@ private static string VersionString(string split = ".", bool withPrereleasePostf return newVersion; } - private static string VersionPattern(string split = ".", bool withPrereleasePostfix = false, bool fourPartVersion = false) + private string VersionPattern(string split = ".", bool withPrereleasePostfix = false, bool fourPartVersion = false) { if (split == ".") { @@ -272,7 +293,7 @@ private static string VersionPattern(string split = ".", bool withPrereleasePost return pattern; } - private static string AssemblyString(string versionText) + private string AssemblyString(string versionText) { return $"OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version={versionText}.0, Culture=neutral, PublicKeyToken=34b8972644a12429"; } diff --git a/build/tools/PrepareRelease/publish-all.bat b/build/tools/PrepareRelease/publish-all.bat index 5bcb9a56b4..31a8f5bc11 100644 --- a/build/tools/PrepareRelease/publish-all.bat +++ b/build/tools/PrepareRelease/publish-all.bat @@ -1,8 +1 @@ -REM SET SOLUTION_DIR=C:\Github\otel-trace-dotnet - -SET TOOL_BUILD_CONFIG=Release -SET INTEGRATIONS_PROJ=%SOLUTION_DIR%\src\Datadog.Trace.ClrProfiler.Managed\Datadog.Trace.ClrProfiler.Managed.csproj -SET OUTPUT_DIR=%SOLUTION_DIR%\build\tools\PrepareRelease\bin\tracer-home - -RMDIR "%OUTPUT_DIR%" /S /Q -dotnet msbuild "%SOLUTION_DIR%\Datadog.Trace.proj" /t:PublishManagedProfilerOnDisk /p:Configuration=Release;TracerHomeDirectory=%OUTPUT_DIR% +%SOLUTION_DIR%\build.cmd Clean BuildTracerHome diff --git a/docker-compose.yml b/docker-compose.yml index b25baee879..4bfb255f95 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -227,7 +227,6 @@ services: dockerfile: ./build/docker/package.dockerfile image: datadog-package environment: - - buildConfiguration=${buildConfiguration} - PKGTYPES=deb rpm tar command: /project/build/docker/package.sh volumes: @@ -239,7 +238,6 @@ services: dockerfile: ./build/docker/package.alpine.dockerfile image: datadog-package-alpine environment: - - buildConfiguration=${buildConfiguration} - PKGTYPES=tar - MUSL=true command: /project/build/docker/package.sh @@ -384,7 +382,7 @@ services: - ./:/project environment: - RABBITMQ_HOST=rabbitmq - - OTEL_TRACE_CALLTARGET_ENABLED=true + - DD_TRACE_CALLTARGET_ENABLED=true depends_on: - rabbitmq diff --git a/docs/README.md b/docs/README.md index 7d8667692d..be2ed6fcd7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -37,3 +37,81 @@ Approvers ([@open-telemetry/dotnet-instrumentation-approvers](https://github.com - [Tony Redondo](https://github.com/tonyredondo), Datadog Learn more about roles in the [community repository](https://github.com/open-telemetry/community/blob/main/community-membership.md). + +# Development + +## Windows + +### Minimum requirements +- [Visual Studio 2019 (16.8)](https://visualstudio.microsoft.com/downloads/) or newer + - Workloads + - Desktop development with C++ + - .NET desktop development + - .NET Core cross-platform development + - Optional: ASP.NET and web development (to build samples) + - Individual components + - .NET Framework 4.7 targeting pack +- [.NET 5.0 SDK](https://dotnet.microsoft.com/download/dotnet/5.0) +- [.NET 5.0 x86 SDK](https://dotnet.microsoft.com/download/dotnet/5.0) to run 32-bit tests locally +- Optional: [ASP.NET Core 2.1 Runtime](https://dotnet.microsoft.com/download/dotnet-core/2.1) to test in .NET Core 2.1 locally. +- Optional: [ASP.NET Core 3.0 Runtime](https://dotnet.microsoft.com/download/dotnet-core/3.0) to test in .NET Core 3.0 locally. +- Optional: [ASP.NET Core 3.1 Runtime](https://dotnet.microsoft.com/download/dotnet-core/3.1) to test in .NET Core 3.1 locally. +- Optional: [nuget.exe CLI](https://www.nuget.org/downloads) v5.3 or newer +- Optional: [WiX Toolset 3.11.1](http://wixtoolset.org/releases/) or newer to build Windows installer (msi) + - [WiX Toolset Visual Studio Extension](https://wixtoolset.org/releases/) to build installer from Visual Studio +- Optional: [Docker for Windows](https://docs.docker.com/docker-for-windows/) to build Linux binaries and run integration tests on Linux containers. See [section on Docker Compose](#building-and-running-tests-with-docker-compose). + - Requires Windows 10 (1607 Anniversary Update, Build 14393 or newer) + + +This repository uses [Nuke](https://nuke.build/) for build automation. To see a list of possible targets run: + +```cmd +.\build.cmd --help +``` + +For example: + +```powershell +# Clean and build the main tracer project +.\build.cmd Clean BuildTracerHome + +# Build and run managed and native unit tests. Requires BuildTracerHome to have previously been run +.\build.cmd BuildAndRunManagedUnitTests BuildAndRunNativeUnitTests + +# Build NuGet packages and MSIs. Requires BuildTracerHome to have previously been run +.\build.cmd PackageTracerHome + +# Build and run integration tests. Requires BuildTracerHome to have previously been run +.\build.cmd BuildAndRunWindowsIntegrationTests +``` + +## Linux + +The recommended approach for Linux is to build using Docker. You can use this approach for both Windows and Linux hosts. The _build_in_docker.sh_ script automates building a Docker image with the required dependencies, and running the specified Nuke targets. For example: + +```bash +# Clean and build the main tracer project +./build_in_docker.sh Clean BuildTracerHome + +# Build and run managed unit tests. Requires BuildTracerHome to have previously been run +./build_in_docker.sh BuildAndRunManagedUnitTests + +# Build and run integration tests. Requires BuildTracerHome to have previously been run +./build_in_docker.sh BuildAndRunLinuxIntegrationTests +``` + +## Further Reading + +Datadog APM +- [Datadog APM](https://docs.datadoghq.com/tracing/) +- [Datadog APM - Tracing .NET Core and .NET 5 Applications](https://docs.datadoghq.com/tracing/setup_overview/setup/dotnet-core) +- [Datadog APM - Tracing .NET Framework Applications](https://docs.datadoghq.com/tracing/setup_overview/setup/dotnet-framework) + +Microsoft .NET Profiling APIs +- [Profiling API](https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/profiling/) +- [Metadata API](https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/metadata/) +- [The Book of the Runtime - Profiling](https://github.com/dotnet/coreclr/blob/master/Documentation/botr/profiling.md) + +OpenTracing +- [OpenTracing documentation](https://github.com/opentracing/opentracing-csharp) +- [OpenTracing terminology](https://github.com/opentracing/specification/blob/master/specification.md) diff --git a/integrations.json b/integrations.json index 327299c3a5..6f8925138f 100644 --- a/integrations.json +++ b/integrations.json @@ -68,7 +68,7 @@ }, "wrapper": { "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration", "action": "CallTargetModification" } }, @@ -91,8 +91,8 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration", "action": "CallTargetModification" } }, @@ -277,7 +277,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SDK.RuntimePipelineInvokeAsyncIntegration", "action": "CallTargetModification" } @@ -300,7 +300,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SDK.RuntimePipelineInvokeSyncIntegration", "action": "CallTargetModification" } @@ -329,7 +329,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SQS.CreateQueueAsyncIntegration", "action": "CallTargetModification" } @@ -352,7 +352,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SQS.CreateQueueIntegration", "action": "CallTargetModification" } @@ -376,7 +376,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SQS.DeleteMessageAsyncIntegration", "action": "CallTargetModification" } @@ -400,7 +400,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SQS.DeleteMessageBatchAsyncIntegration", "action": "CallTargetModification" } @@ -423,7 +423,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SQS.DeleteMessageBatchIntegration", "action": "CallTargetModification" } @@ -446,7 +446,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SQS.DeleteMessageIntegration", "action": "CallTargetModification" } @@ -470,7 +470,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SQS.DeleteQueueAsyncIntegration", "action": "CallTargetModification" } @@ -493,7 +493,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SQS.DeleteQueueIntegration", "action": "CallTargetModification" } @@ -517,7 +517,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SQS.ReceiveMessageAsyncIntegration", "action": "CallTargetModification" } @@ -540,7 +540,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SQS.ReceiveMessageIntegration", "action": "CallTargetModification" } @@ -564,7 +564,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SQS.SendMessageAsyncIntegration", "action": "CallTargetModification" } @@ -588,7 +588,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SQS.SendMessageBatchAsyncIntegration", "action": "CallTargetModification" } @@ -611,7 +611,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SQS.SendMessageBatchIntegration", "action": "CallTargetModification" } @@ -634,7 +634,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AWS.SQS.SendMessageIntegration", "action": "CallTargetModification" } @@ -664,7 +664,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.CosmosDb.ClientQueryIteratorsIntegrations", "action": "CallTargetModification" } @@ -689,7 +689,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.CosmosDb.ClientQueryIteratorsIntegrations", "action": "CallTargetModification" } @@ -714,7 +714,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.CosmosDb.ClientQueryIteratorsIntegrations", "action": "CallTargetModification" } @@ -739,7 +739,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.CosmosDb.ClientQueryIteratorsIntegrations", "action": "CallTargetModification" } @@ -764,7 +764,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.CosmosDb.ContainerQueryIteratorsIntegrations", "action": "CallTargetModification" } @@ -789,7 +789,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.CosmosDb.ContainerQueryIteratorsIntegrations", "action": "CallTargetModification" } @@ -814,7 +814,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.CosmosDb.ContainerQueryIteratorsIntegrations", "action": "CallTargetModification" } @@ -839,7 +839,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.CosmosDb.ContainerQueryIteratorsIntegrations", "action": "CallTargetModification" } @@ -864,7 +864,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.CosmosDb.DatabaseQueryIteratorsIntegrations", "action": "CallTargetModification" } @@ -889,7 +889,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.CosmosDb.DatabaseQueryIteratorsIntegrations", "action": "CallTargetModification" } @@ -914,7 +914,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.CosmosDb.DatabaseQueryIteratorsIntegrations", "action": "CallTargetModification" } @@ -939,7 +939,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.CosmosDb.DatabaseQueryIteratorsIntegrations", "action": "CallTargetModification" } @@ -964,7 +964,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.CosmosDb.DatabaseQueryIteratorsIntegrations", "action": "CallTargetModification" } @@ -989,7 +989,7 @@ "maximum_patch": 65535 }, "wrapper": { - "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.CosmosDb.DatabaseQueryIteratorsIntegrations", "action": "CallTargetModification" } @@ -2126,7 +2126,7 @@ }, "wrapper": { "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderAsyncIntegration", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithCancellationAsyncIntegration", "action": "CallTargetModification" } }, @@ -2150,7 +2150,7 @@ }, "wrapper": { "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration", "action": "CallTargetModification" } }, @@ -2174,7 +2174,7 @@ }, "wrapper": { "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration", "action": "CallTargetModification" } }, @@ -2541,7 +2541,7 @@ }, "wrapper": { "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration", "action": "CallTargetModification" } }, @@ -2565,7 +2565,7 @@ }, "wrapper": { "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration", "action": "CallTargetModification" } }, @@ -3409,7 +3409,7 @@ "minimum_major": 1, "minimum_minor": 0, "minimum_patch": 0, - "maximum_major": 2, + "maximum_major": 3, "maximum_minor": 65535, "maximum_patch": 65535 }, @@ -3475,7 +3475,7 @@ "minimum_major": 1, "minimum_minor": 0, "minimum_patch": 0, - "maximum_major": 2, + "maximum_major": 3, "maximum_minor": 65535, "maximum_patch": 65535 }, @@ -3485,6 +3485,74 @@ "action": "CallTargetModification" } }, + { + "caller": {}, + "target": { + "assembly": "Microsoft.Data.SqlClient", + "type": "Microsoft.Data.SqlClient.SqlCommand", + "method": "ExecuteReaderAsync", + "signature_types": [ + "System.Threading.Tasks.Task`1" + ], + "minimum_major": 1, + "minimum_minor": 0, + "minimum_patch": 0, + "maximum_major": 3, + "maximum_minor": 65535, + "maximum_patch": 65535 + }, + "wrapper": { + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderAsyncIntegration", + "action": "CallTargetModification" + } + }, + { + "caller": {}, + "target": { + "assembly": "Microsoft.Data.SqlClient", + "type": "Microsoft.Data.SqlClient.SqlCommand", + "method": "ExecuteReaderAsync", + "signature_types": [ + "System.Threading.Tasks.Task`1", + "System.Threading.CancellationToken" + ], + "minimum_major": 1, + "minimum_minor": 0, + "minimum_patch": 0, + "maximum_major": 3, + "maximum_minor": 65535, + "maximum_patch": 65535 + }, + "wrapper": { + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithCancellationAsyncIntegration", + "action": "CallTargetModification" + } + }, + { + "caller": {}, + "target": { + "assembly": "Microsoft.Data.SqlClient", + "type": "Microsoft.Data.SqlClient.SqlCommand", + "method": "ExecuteReaderAsync", + "signature_types": [ + "System.Threading.Tasks.Task`1", + "System.Data.CommandBehavior" + ], + "minimum_major": 1, + "minimum_minor": 0, + "minimum_patch": 0, + "maximum_major": 3, + "maximum_minor": 65535, + "maximum_patch": 65535 + }, + "wrapper": { + "assembly": "Datadog.Trace.ClrProfiler.Managed, Version=1.27.1.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "action": "CallTargetModification" + } + }, { "caller": {}, "target": { @@ -3505,7 +3573,7 @@ }, "wrapper": { "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration", "action": "CallTargetModification" } }, @@ -3529,7 +3597,7 @@ }, "wrapper": { "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration", "action": "CallTargetModification" } }, @@ -3547,13 +3615,13 @@ "minimum_major": 1, "minimum_minor": 0, "minimum_patch": 0, - "maximum_major": 2, + "maximum_major": 3, "maximum_minor": 65535, "maximum_patch": 65535 }, "wrapper": { "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration", "action": "CallTargetModification" } }, @@ -3577,7 +3645,7 @@ }, "wrapper": { "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration", "action": "CallTargetModification" } }, @@ -3601,7 +3669,7 @@ }, "wrapper": { "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration", "action": "CallTargetModification" } }, @@ -3619,13 +3687,13 @@ "minimum_major": 1, "minimum_minor": 0, "minimum_patch": 0, - "maximum_major": 2, + "maximum_major": 3, "maximum_minor": 65535, "maximum_patch": 65535 }, "wrapper": { "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration", "action": "CallTargetModification" } }, @@ -3685,7 +3753,7 @@ "minimum_major": 1, "minimum_minor": 0, "minimum_patch": 0, - "maximum_major": 2, + "maximum_major": 3, "maximum_minor": 65535, "maximum_patch": 65535 }, @@ -3754,7 +3822,7 @@ "minimum_major": 1, "minimum_minor": 0, "minimum_patch": 0, - "maximum_major": 2, + "maximum_major": 3, "maximum_minor": 65535, "maximum_patch": 65535 }, @@ -3823,7 +3891,7 @@ "minimum_major": 1, "minimum_minor": 0, "minimum_patch": 0, - "maximum_major": 2, + "maximum_major": 3, "maximum_minor": 65535, "maximum_patch": 65535 }, @@ -3892,7 +3960,7 @@ "minimum_major": 1, "minimum_minor": 0, "minimum_patch": 0, - "maximum_major": 2, + "maximum_major": 3, "maximum_minor": 65535, "maximum_patch": 65535 }, @@ -3958,7 +4026,7 @@ "minimum_major": 1, "minimum_minor": 0, "minimum_patch": 0, - "maximum_major": 2, + "maximum_major": 3, "maximum_minor": 65535, "maximum_patch": 65535 }, @@ -4037,7 +4105,7 @@ }, "wrapper": { "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration", "action": "CallTargetModification" } }, @@ -4061,7 +4129,7 @@ }, "wrapper": { "assembly": "OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429", - "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAsyncIntegration", + "type": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration", "action": "CallTargetModification" } }, diff --git a/src/Datadog.Trace.Ci.Shared/CIEnvironmentValues.cs b/src/Datadog.Trace.Ci.Shared/CIEnvironmentValues.cs index 9c4571410b..01ce05adde 100644 --- a/src/Datadog.Trace.Ci.Shared/CIEnvironmentValues.cs +++ b/src/Datadog.Trace.Ci.Shared/CIEnvironmentValues.cs @@ -185,13 +185,40 @@ internal static void ReloadEnvironmentData() // Merge commits have a different commit hash from the one reported by the CI. if (gitInfo.Commit == Commit) { - AuthorName = gitInfo.AuthorName; - AuthorEmail = gitInfo.AuthorEmail; - AuthorDate = gitInfo.AuthorDate; - CommitterName = gitInfo.CommitterName; - CommitterEmail = gitInfo.CommitterEmail; - CommitterDate = gitInfo.CommitterDate; - Message = gitInfo.Message; + if (string.IsNullOrEmpty(AuthorName)) + { + AuthorName = gitInfo.AuthorName; + } + + if (string.IsNullOrEmpty(AuthorEmail)) + { + AuthorEmail = gitInfo.AuthorEmail; + } + + if (AuthorDate is null) + { + AuthorDate = gitInfo.AuthorDate; + } + + if (string.IsNullOrEmpty(CommitterName)) + { + CommitterName = gitInfo.CommitterName; + } + + if (string.IsNullOrEmpty(CommitterEmail)) + { + CommitterEmail = gitInfo.CommitterEmail; + } + + if (CommitterDate is null) + { + CommitterDate = gitInfo.CommitterDate; + } + + if (string.IsNullOrEmpty(Message)) + { + Message = gitInfo.Message; + } } // ********** @@ -246,6 +273,8 @@ private static void SetupTravisEnvironment() PipelineName = repoSlug; PipelineUrl = EnvironmentHelpers.GetEnvironmentVariable("TRAVIS_BUILD_WEB_URL"); JobUrl = EnvironmentHelpers.GetEnvironmentVariable("TRAVIS_JOB_WEB_URL"); + + Message = EnvironmentHelpers.GetEnvironmentVariable("TRAVIS_COMMIT_MESSAGE"); } private static void SetupCircleCiEnvironment() @@ -357,6 +386,8 @@ private static void SetupGitlabEnvironment() JobName = EnvironmentHelpers.GetEnvironmentVariable("CI_JOB_NAME"); StageName = EnvironmentHelpers.GetEnvironmentVariable("CI_JOB_STAGE"); + Message = EnvironmentHelpers.GetEnvironmentVariable("CI_COMMIT_MESSAGE"); + // Clean pipeline url PipelineUrl = PipelineUrl?.Replace("/-/pipelines/", "/pipelines/"); } @@ -389,6 +420,10 @@ private static void SetupAppveyorEnvironment() { Branch = EnvironmentHelpers.GetEnvironmentVariable("APPVEYOR_REPO_BRANCH"); } + + Message = EnvironmentHelpers.GetEnvironmentVariable("APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED"); + AuthorName = EnvironmentHelpers.GetEnvironmentVariable("APPVEYOR_REPO_COMMIT_AUTHOR"); + AuthorEmail = EnvironmentHelpers.GetEnvironmentVariable("APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL"); } private static void SetupAzurePipelinesEnvironment() @@ -426,6 +461,10 @@ private static void SetupAzurePipelinesEnvironment() { Branch = EnvironmentHelpers.GetEnvironmentVariable("BUILD_SOURCEBRANCHNAME"); } + + Message = EnvironmentHelpers.GetEnvironmentVariable("BUILD_SOURCEVERSIONMESSAGE"); + AuthorName = EnvironmentHelpers.GetEnvironmentVariable("BUILD_REQUESTEDFORID"); + AuthorEmail = EnvironmentHelpers.GetEnvironmentVariable("BUILD_REQUESTEDFOREMAIL"); } private static void SetupBitbucketEnvironment() @@ -511,6 +550,10 @@ private static void SetupBuildkiteEnvironment() PipelineName = EnvironmentHelpers.GetEnvironmentVariable("BUILDKITE_PIPELINE_SLUG"); PipelineUrl = EnvironmentHelpers.GetEnvironmentVariable("BUILDKITE_BUILD_URL"); JobUrl = string.Format("{0}#{1}", EnvironmentHelpers.GetEnvironmentVariable("BUILDKITE_BUILD_URL"), EnvironmentHelpers.GetEnvironmentVariable("BUILDKITE_JOB_ID")); + + Message = EnvironmentHelpers.GetEnvironmentVariable("BUILDKITE_MESSAGE"); + AuthorName = EnvironmentHelpers.GetEnvironmentVariable("BUILDKITE_BUILD_AUTHOR"); + AuthorEmail = EnvironmentHelpers.GetEnvironmentVariable("BUILDKITE_BUILD_AUTHOR_EMAIL"); } private static void SetupBitriseEnvironment() @@ -532,6 +575,8 @@ private static void SetupBitriseEnvironment() PipelineNumber = EnvironmentHelpers.GetEnvironmentVariable("BITRISE_BUILD_NUMBER"); PipelineName = EnvironmentHelpers.GetEnvironmentVariable("BITRISE_APP_TITLE"); PipelineUrl = EnvironmentHelpers.GetEnvironmentVariable("BITRISE_BUILD_URL"); + + Message = EnvironmentHelpers.GetEnvironmentVariable("BITRISE_GIT_MESSAGE"); } [MethodImpl(MethodImplOptions.AggressiveInlining)] diff --git a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/AdoNetClientInstrumentMethodAttribute.cs b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/AdoNetClientInstrumentMethodAttribute.cs index c9c17c018c..a4a689065e 100644 --- a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/AdoNetClientInstrumentMethodAttribute.cs +++ b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/AdoNetClientInstrumentMethodAttribute.cs @@ -64,11 +64,22 @@ public CommandExecuteReaderAsyncAttribute(Type adoNetClientDataType) { MethodName = AdoNetConstants.MethodNames.ExecuteReaderAsync; ReturnTypeName = AdoNetClientData.DataReaderTaskType; - ParameterTypeNames = new[] { ClrNames.CancellationToken }; CallTargetType = typeof(CommandExecuteReaderAsyncIntegration); } } + internal class CommandExecuteReaderWithCancellationAsyncAttribute : AdoNetClientInstrumentMethodAttribute + { + public CommandExecuteReaderWithCancellationAsyncAttribute(Type adoNetClientDataType) + : base(adoNetClientDataType) + { + MethodName = AdoNetConstants.MethodNames.ExecuteReaderAsync; + ReturnTypeName = AdoNetClientData.DataReaderTaskType; + ParameterTypeNames = new[] { ClrNames.CancellationToken }; + CallTargetType = typeof(CommandExecuteReaderWithCancellationAsyncIntegration); + } + } + internal class CommandExecuteReaderWithBehaviorAsyncAttribute : AdoNetClientInstrumentMethodAttribute { public CommandExecuteReaderWithBehaviorAsyncAttribute(Type adoNetClientDataType) @@ -76,20 +87,32 @@ public CommandExecuteReaderWithBehaviorAsyncAttribute(Type adoNetClientDataType) { MethodName = AdoNetConstants.MethodNames.ExecuteReaderAsync; ReturnTypeName = AdoNetClientData.DataReaderTaskType; - ParameterTypeNames = new[] { AdoNetConstants.TypeNames.CommandBehavior, ClrNames.CancellationToken }; + ParameterTypeNames = new[] { AdoNetConstants.TypeNames.CommandBehavior }; CallTargetType = typeof(CommandExecuteReaderWithBehaviorAsyncIntegration); } } - internal class CommandExecuteDbDataReaderWithBehaviorAsyncAttribute : AdoNetClientInstrumentMethodAttribute + internal class CommandExecuteReaderWithBehaviorAndCancellationAsyncAttribute : AdoNetClientInstrumentMethodAttribute { - public CommandExecuteDbDataReaderWithBehaviorAsyncAttribute(Type adoNetClientDataType) + public CommandExecuteReaderWithBehaviorAndCancellationAsyncAttribute(Type adoNetClientDataType) + : base(adoNetClientDataType) + { + MethodName = AdoNetConstants.MethodNames.ExecuteReaderAsync; + ReturnTypeName = AdoNetClientData.DataReaderTaskType; + ParameterTypeNames = new[] { AdoNetConstants.TypeNames.CommandBehavior, ClrNames.CancellationToken }; + CallTargetType = typeof(CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration); + } + } + + internal class CommandExecuteDbDataReaderWithBehaviorAndCancellationAsyncAttribute : AdoNetClientInstrumentMethodAttribute + { + public CommandExecuteDbDataReaderWithBehaviorAndCancellationAsyncAttribute(Type adoNetClientDataType) : base(adoNetClientDataType) { MethodName = AdoNetConstants.MethodNames.ExecuteDbDataReaderAsync; ReturnTypeName = AdoNetConstants.TypeNames.DbDataReaderTaskType; ParameterTypeNames = new[] { AdoNetConstants.TypeNames.CommandBehavior, ClrNames.CancellationToken }; - CallTargetType = typeof(CommandExecuteReaderWithBehaviorAsyncIntegration); + CallTargetType = typeof(CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration); } } diff --git a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/AdoNetDefinitions.cs b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/AdoNetDefinitions.cs index 6ffd57beb0..e255680f53 100644 --- a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/AdoNetDefinitions.cs +++ b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/AdoNetDefinitions.cs @@ -19,8 +19,8 @@ ********************************************************************************/ // Task System.Data.Common.DBCommand.ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken) -[assembly: CommandExecuteDbDataReaderWithBehaviorAsync(typeof(SystemDataClientData))] -[assembly: CommandExecuteDbDataReaderWithBehaviorAsync(typeof(SystemDataCommonClientData))] +[assembly: CommandExecuteDbDataReaderWithBehaviorAndCancellationAsync(typeof(SystemDataClientData))] +[assembly: CommandExecuteDbDataReaderWithBehaviorAndCancellationAsync(typeof(SystemDataCommonClientData))] /******************************************************************************** * Task .ExecuteScalarAsync(CancellationToken) diff --git a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/CommandExecuteReaderAsyncIntegration.cs b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/CommandExecuteReaderAsyncIntegration.cs index b78bc6e9e6..83d959d947 100644 --- a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/CommandExecuteReaderAsyncIntegration.cs +++ b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/CommandExecuteReaderAsyncIntegration.cs @@ -12,7 +12,7 @@ namespace Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet { /// /// CallTarget instrumentation for: - /// Task[*DataReader] [Command].ExecuteReaderAsync(CancellationToken) + /// Task[*DataReader] [Command].ExecuteReaderAsync() /// public class CommandExecuteReaderAsyncIntegration { @@ -21,9 +21,8 @@ public class CommandExecuteReaderAsyncIntegration /// /// Type of the target /// Instance value, aka `this` of the instrumented method. - /// CancellationToken value /// Calltarget state value - public static CallTargetState OnMethodBegin(TTarget instance, CancellationToken cancellationToken) + public static CallTargetState OnMethodBegin(TTarget instance) { return new CallTargetState(ScopeDBFactory.CreateDbCommandScope(Tracer.Instance, (IDbCommand)instance)); } diff --git a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration.cs b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration.cs new file mode 100644 index 0000000000..5a63388d38 --- /dev/null +++ b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration.cs @@ -0,0 +1,50 @@ +// +// 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. +// + +using System; +using System.Data; +using System.Threading; +using Datadog.Trace.ClrProfiler.CallTarget; + +namespace Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet +{ + /// + /// CallTarget instrumentation for: + /// Task[*DataReader] [Command].ExecuteReaderAsync(CommandBehavior, CancellationToken) + /// Task[DbDataReader] [Command].ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken) + /// + public class CommandExecuteReaderWithBehaviorAndCancellationAsyncIntegration + { + /// + /// OnMethodBegin callback + /// + /// Type of the target + /// Command Behavior type + /// Instance value, aka `this` of the instrumented method. + /// Command behavior + /// CancellationToken value + /// Calltarget state value + public static CallTargetState OnMethodBegin(TTarget instance, TBehavior commandBehavior, CancellationToken cancellationToken) + { + return new CallTargetState(ScopeDBFactory.CreateDbCommandScope(Tracer.Instance, (IDbCommand)instance)); + } + + /// + /// OnAsyncMethodEnd callback + /// + /// Type of the target + /// Type of the return value, in an async scenario will be T of Task of T + /// Instance value, aka `this` of the instrumented method. + /// Return value instance + /// Exception instance in case the original code threw an exception. + /// Calltarget state value + /// A response value, in an async scenario will be T of Task of T + public static TReturn OnAsyncMethodEnd(TTarget instance, TReturn returnValue, Exception exception, CallTargetState state) + { + state.Scope.DisposeWithException(exception); + return returnValue; + } + } +} diff --git a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/CommandExecuteReaderWithBehaviorAsyncIntegration.cs b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/CommandExecuteReaderWithBehaviorAsyncIntegration.cs index ba4e50826b..0b7f67558f 100644 --- a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/CommandExecuteReaderWithBehaviorAsyncIntegration.cs +++ b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/CommandExecuteReaderWithBehaviorAsyncIntegration.cs @@ -5,15 +5,13 @@ using System; using System.Data; -using System.Threading; using Datadog.Trace.ClrProfiler.CallTarget; namespace Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet { /// /// CallTarget instrumentation for: - /// Task[*DataReader] [Command].ExecuteReaderAsync(CommandBehavior, CancellationToken) - /// Task[DbDataReader] [Command].ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken) + /// Task[*DataReader] [Command].ExecuteReaderAsync(CommandBehavior) /// public class CommandExecuteReaderWithBehaviorAsyncIntegration { @@ -24,9 +22,8 @@ public class CommandExecuteReaderWithBehaviorAsyncIntegration /// Command Behavior type /// Instance value, aka `this` of the instrumented method. /// Command behavior - /// CancellationToken value /// Calltarget state value - public static CallTargetState OnMethodBegin(TTarget instance, TBehavior commandBehavior, CancellationToken cancellationToken) + public static CallTargetState OnMethodBegin(TTarget instance, TBehavior commandBehavior) { return new CallTargetState(ScopeDBFactory.CreateDbCommandScope(Tracer.Instance, (IDbCommand)instance)); } diff --git a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/CommandExecuteReaderWithCancellationAsyncIntegration.cs b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/CommandExecuteReaderWithCancellationAsyncIntegration.cs new file mode 100644 index 0000000000..9885e18c69 --- /dev/null +++ b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/CommandExecuteReaderWithCancellationAsyncIntegration.cs @@ -0,0 +1,47 @@ +// +// 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. +// + +using System; +using System.Data; +using System.Threading; +using Datadog.Trace.ClrProfiler.CallTarget; + +namespace Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet +{ + /// + /// CallTarget instrumentation for: + /// Task[*DataReader] [Command].ExecuteReaderAsync(CancellationToken) + /// + public class CommandExecuteReaderWithCancellationAsyncIntegration + { + /// + /// OnMethodBegin callback + /// + /// Type of the target + /// Instance value, aka `this` of the instrumented method. + /// CancellationToken value + /// Calltarget state value + public static CallTargetState OnMethodBegin(TTarget instance, CancellationToken cancellationToken) + { + return new CallTargetState(ScopeDBFactory.CreateDbCommandScope(Tracer.Instance, (IDbCommand)instance)); + } + + /// + /// OnAsyncMethodEnd callback + /// + /// Type of the target + /// Type of the return value, in an async scenario will be T of Task of T + /// Instance value, aka `this` of the instrumented method. + /// Return value instance + /// Exception instance in case the original code threw an exception. + /// Calltarget state value + /// A response value, in an async scenario will be T of Task of T + public static TReturn OnAsyncMethodEnd(TTarget instance, TReturn returnValue, Exception exception, CallTargetState state) + { + state.Scope.DisposeWithException(exception); + return returnValue; + } + } +} diff --git a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/MySql/MySqlDefinitions.cs b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/MySql/MySqlDefinitions.cs index e2858ce18b..769fff6d10 100644 --- a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/MySql/MySqlDefinitions.cs +++ b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/MySql/MySqlDefinitions.cs @@ -29,21 +29,21 @@ ********************************************************************************/ // Task MySqlConnector.MySqlCommand.ExecuteReaderAsync(CancellationToken) -[assembly: CommandExecuteReaderAsync(typeof(MySqlConnectorClientData))] +[assembly: CommandExecuteReaderWithCancellationAsync(typeof(MySqlConnectorClientData))] /******************************************************************************** * Task<[*]DataReader> .ExecuteReaderAsync(CommandBehavior, CancellationToken) ********************************************************************************/ // Task MySqlConnector.MySqlCommand.ExecuteReaderAsync(CommandBehavior, CancellationToken) -[assembly: CommandExecuteReaderWithBehaviorAsync(typeof(MySqlConnectorClientData))] +[assembly: CommandExecuteReaderWithBehaviorAndCancellationAsync(typeof(MySqlConnectorClientData))] /******************************************************************************** * Task .ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken) ********************************************************************************/ // Task MySqlConnector.MySqlCommand.ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken) -[assembly: CommandExecuteDbDataReaderWithBehaviorAsync(typeof(MySqlConnectorClientData))] +[assembly: CommandExecuteDbDataReaderWithBehaviorAndCancellationAsync(typeof(MySqlConnectorClientData))] /******************************************************************************** * [*]DataReader .ExecuteReader() diff --git a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/Npgsql/NpgsqlDefinitions.cs b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/Npgsql/NpgsqlDefinitions.cs index e322a74ddd..c73572e7e3 100644 --- a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/Npgsql/NpgsqlDefinitions.cs +++ b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/Npgsql/NpgsqlDefinitions.cs @@ -25,14 +25,14 @@ ********************************************************************************/ // Task Npgsql.NpgsqlCommand.ExecuteReaderAsync(CommandBehavior, CancellationToken) -[assembly: CommandExecuteReaderWithBehaviorAsync(typeof(NpgsqlClientData))] +[assembly: CommandExecuteReaderWithBehaviorAndCancellationAsync(typeof(NpgsqlClientData))] /******************************************************************************** * Task .ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken) ********************************************************************************/ // Task Npgsql.NpgsqlCommand.ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken) -[assembly: CommandExecuteDbDataReaderWithBehaviorAsync(typeof(NpgsqlClientData))] +[assembly: CommandExecuteDbDataReaderWithBehaviorAndCancellationAsync(typeof(NpgsqlClientData))] /******************************************************************************** * [*]DataReader .ExecuteReader() diff --git a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/SqlClient/SqlClientConstants.cs b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/SqlClient/SqlClientConstants.cs index fddab00691..a617762ef9 100644 --- a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/SqlClient/SqlClientConstants.cs +++ b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/SqlClient/SqlClientConstants.cs @@ -53,7 +53,7 @@ internal struct MicrosoftDataAdoNetClientData : IAdoNetClientData public string MinimumVersion => "1.0.0"; - public string MaximumVersion => "2.*.*"; + public string MaximumVersion => "3.*.*"; public string DataReaderType => "Microsoft.Data.SqlClient.SqlDataReader"; diff --git a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/SqlClient/SqlClientDefinitions.cs b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/SqlClient/SqlClientDefinitions.cs index 1ff32b28e7..478557e8ff 100644 --- a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/SqlClient/SqlClientDefinitions.cs +++ b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/SqlClient/SqlClientDefinitions.cs @@ -28,27 +28,48 @@ // int Microsoft.Data.SqlClient.SqlCommand.ExecuteNonQuery() [assembly: CommandExecuteNonQuery(typeof(MicrosoftDataAdoNetClientData))] +/******************************************************************************** + * Task<[*]DataReader> .ExecuteReaderAsync() + ********************************************************************************/ + +// Task Microsoft.Data.SqlClient.SqlCommand.ExecuteReaderAsync() +[assembly: CommandExecuteReaderAsync(typeof(MicrosoftDataAdoNetClientData))] + +/******************************************************************************** + * Task<[*]DataReader> .ExecuteReaderAsync(CancellationToken) + ********************************************************************************/ + +// Task Microsoft.Data.SqlClient.SqlCommand.ExecuteReaderAsync(CancellationToken) +[assembly: CommandExecuteReaderWithCancellationAsync(typeof(MicrosoftDataAdoNetClientData))] + +/******************************************************************************** + * Task<[*]DataReader> .ExecuteReaderAsync(CommandBehavior) + ********************************************************************************/ + +// Task Microsoft.Data.SqlClient.SqlCommand.ExecuteReaderAsync(CommandBehavior) +[assembly: CommandExecuteReaderWithBehaviorAsync(typeof(MicrosoftDataAdoNetClientData))] + /******************************************************************************** * Task<[*]DataReader> .ExecuteReaderAsync(CommandBehavior, CancellationToken) ********************************************************************************/ // Task System.Data.SqlClient.SqlCommand.ExecuteReaderAsync(CommandBehavior, CancellationToken) -[assembly: CommandExecuteReaderWithBehaviorAsync(typeof(SystemDataAdoNetClientData))] -[assembly: CommandExecuteReaderWithBehaviorAsync(typeof(SystemDataSqlClientAdoNetClientData))] +[assembly: CommandExecuteReaderWithBehaviorAndCancellationAsync(typeof(SystemDataAdoNetClientData))] +[assembly: CommandExecuteReaderWithBehaviorAndCancellationAsync(typeof(SystemDataSqlClientAdoNetClientData))] // Task Microsoft.Data.SqlClient.SqlCommand.ExecuteReaderAsync(CommandBehavior, CancellationToken) -[assembly: CommandExecuteReaderWithBehaviorAsync(typeof(MicrosoftDataAdoNetClientData))] +[assembly: CommandExecuteReaderWithBehaviorAndCancellationAsync(typeof(MicrosoftDataAdoNetClientData))] /******************************************************************************** * Task .ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken) ********************************************************************************/ // Task System.Data.SqlClient.SqlCommand.ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken) -[assembly: CommandExecuteDbDataReaderWithBehaviorAsync(typeof(SystemDataAdoNetClientData))] -[assembly: CommandExecuteDbDataReaderWithBehaviorAsync(typeof(SystemDataSqlClientAdoNetClientData))] +[assembly: CommandExecuteDbDataReaderWithBehaviorAndCancellationAsync(typeof(SystemDataAdoNetClientData))] +[assembly: CommandExecuteDbDataReaderWithBehaviorAndCancellationAsync(typeof(SystemDataSqlClientAdoNetClientData))] // Task Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken) -[assembly: CommandExecuteDbDataReaderWithBehaviorAsync(typeof(MicrosoftDataAdoNetClientData))] +[assembly: CommandExecuteDbDataReaderWithBehaviorAndCancellationAsync(typeof(MicrosoftDataAdoNetClientData))] /******************************************************************************** * [*]DataReader .ExecuteReader() diff --git a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/Sqlite/SqliteDefinitions.cs b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/Sqlite/SqliteDefinitions.cs index debca8ed81..685bed1cfc 100644 --- a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/Sqlite/SqliteDefinitions.cs +++ b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/AdoNet/Sqlite/SqliteDefinitions.cs @@ -25,14 +25,14 @@ ********************************************************************************/ // Task Microsoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync(CommandBehavior, CancellationToken) -[assembly: CommandExecuteReaderWithBehaviorAsync(typeof(MicrosoftDataSqliteClientData))] +[assembly: CommandExecuteReaderWithBehaviorAndCancellationAsync(typeof(MicrosoftDataSqliteClientData))] /******************************************************************************** * Task .ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken) ********************************************************************************/ // Task Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken) -[assembly: CommandExecuteDbDataReaderWithBehaviorAsync(typeof(MicrosoftDataSqliteClientData))] +[assembly: CommandExecuteDbDataReaderWithBehaviorAndCancellationAsync(typeof(MicrosoftDataSqliteClientData))] /******************************************************************************** * [*]DataReader .ExecuteReader() diff --git a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/Testing/XUnit/XUnitTestAssemblyFinishedCtorIntegration.cs b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/Testing/XUnit/XUnitTestAssemblyFinishedCtorIntegration.cs index 66e4e641cd..890c6f6fee 100644 --- a/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/Testing/XUnit/XUnitTestAssemblyFinishedCtorIntegration.cs +++ b/src/Datadog.Trace.ClrProfiler.Managed/AutoInstrumentation/Testing/XUnit/XUnitTestAssemblyFinishedCtorIntegration.cs @@ -9,7 +9,7 @@ namespace Datadog.Trace.ClrProfiler.AutoInstrumentation.Testing.XUnit { /// - /// Xunit.Sdk.TestAssemblyRunner`1.RunAsync calltarget instrumentation + /// Xunit.Sdk.TestAssemblyFinished..ctor calltarget instrumentation /// [InstrumentMethod( AssemblyNames = new[] { "xunit.execution.dotnet", "xunit.execution.desktop" }, diff --git a/src/Datadog.Trace.ClrProfiler.Native/CMakeLists.txt b/src/Datadog.Trace.ClrProfiler.Native/CMakeLists.txt index 60ee877482..3fead39876 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/CMakeLists.txt +++ b/src/Datadog.Trace.ClrProfiler.Native/CMakeLists.txt @@ -73,7 +73,7 @@ else() endif() if (NOT EXISTS ${CMAKE_SOURCE_DIR}/../bin/ProfilerResources/netcoreapp2.0) - message(FATAL_ERROR "Datadog.Trace.ClrProfiler.Loader must be build first.") + message(FATAL_ERROR "Datadog.Trace.ClrProfiler.Loader must be built first.") else() message(STATUS "Datadog.Trace.ClrProfiler.Loader was found") endif() @@ -176,13 +176,13 @@ if(ISLINUX) endif() # Sets compiler options -add_compile_options(-std=c++11 -fPIC -fms-extensions) +add_compile_options(-std=c++17 -fPIC -fms-extensions) add_compile_options(-DPAL_STDCPP_COMPAT -DPLATFORM_UNIX -DUNICODE) -add_compile_options(-Wno-invalid-noreturn -Wno-macro-redefined -Wno-c++17-extensions) +add_compile_options(-Wno-invalid-noreturn -Wno-macro-redefined) if (ISMACOS) add_compile_options(-stdlib=libc++ -DMACOS -Wno-pragma-pack) elseif(ISLINUX) - add_compile_options(-DLINUX -Wno-pragmas) + add_compile_options(-stdlib=libstdc++ -DLINUX -Wno-pragmas) endif() if (BIT64) add_compile_options(-DBIT64 -DHOST_64BIT) diff --git a/src/Datadog.Trace.ClrProfiler.Native/calltarget_tokens.cpp b/src/Datadog.Trace.ClrProfiler.Native/calltarget_tokens.cpp index d094d65abf..dbd55238c0 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/calltarget_tokens.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/calltarget_tokens.cpp @@ -5,7 +5,8 @@ #include "logging.h" #include "module_metadata.h" -namespace trace { +namespace trace +{ const int signatureBufferSize = 500; @@ -13,937 +14,1096 @@ const int signatureBufferSize = 500; * PRIVATE **/ -HRESULT CallTargetTokens::EnsureCorLibTokens() { - ModuleMetadata* module_metadata = GetMetadata(); - AssemblyProperty corAssemblyProperty = *module_metadata->corAssemblyProperty; - - // *** Ensure corlib assembly ref - if (corLibAssemblyRef == mdAssemblyRefNil) { - auto hr = module_metadata->assembly_emit->DefineAssemblyRef( - corAssemblyProperty.ppbPublicKey, corAssemblyProperty.pcbPublicKey, - corAssemblyProperty.szName.data(), &corAssemblyProperty.pMetaData, - &corAssemblyProperty.pulHashAlgId, - sizeof(corAssemblyProperty.pulHashAlgId), - corAssemblyProperty.assemblyFlags, &corLibAssemblyRef); - if (corLibAssemblyRef == mdAssemblyRefNil) { - Warn("Wrapper corLibAssemblyRef could not be defined."); - return hr; - } - } - - // *** Ensure System.Object type ref - if (objectTypeRef == mdTypeRefNil) { - auto hr = module_metadata->metadata_emit->DefineTypeRefByName( - corLibAssemblyRef, SystemObject, &objectTypeRef); - if (FAILED(hr)) { - Warn("Wrapper objectTypeRef could not be defined."); - return hr; - } - } - - // *** Ensure System.Exception type ref - if (exTypeRef == mdTypeRefNil) { - auto hr = module_metadata->metadata_emit->DefineTypeRefByName( - corLibAssemblyRef, SystemException, &exTypeRef); - if (FAILED(hr)) { - Warn("Wrapper exTypeRef could not be defined."); - return hr; - } - } - - // *** Ensure System.Type type ref - if (typeRef == mdTypeRefNil) { - auto hr = module_metadata->metadata_emit->DefineTypeRefByName( - corLibAssemblyRef, SystemTypeName, &typeRef); - if (FAILED(hr)) { - Warn("Wrapper typeRef could not be defined."); - return hr; - } - } - - // *** Ensure System.RuntimeTypeHandle type ref - if (runtimeTypeHandleRef == mdTypeRefNil) { - auto hr = module_metadata->metadata_emit->DefineTypeRefByName( - corLibAssemblyRef, RuntimeTypeHandleTypeName, - &runtimeTypeHandleRef); - if (FAILED(hr)) { - Warn("Wrapper runtimeTypeHandleRef could not be defined."); - return hr; - } - } - - // *** Ensure Type.GetTypeFromHandle token - if (getTypeFromHandleToken == mdTokenNil) { - unsigned runtimeTypeHandle_buffer; - auto runtimeTypeHandle_size = - CorSigCompressToken(runtimeTypeHandleRef, &runtimeTypeHandle_buffer); - - unsigned type_buffer; - auto type_size = CorSigCompressToken(typeRef, &type_buffer); +HRESULT CallTargetTokens::EnsureCorLibTokens() +{ + ModuleMetadata* module_metadata = GetMetadata(); + AssemblyProperty corAssemblyProperty = *module_metadata->corAssemblyProperty; + + // *** Ensure corlib assembly ref + if (corLibAssemblyRef == mdAssemblyRefNil) + { + auto hr = module_metadata->assembly_emit->DefineAssemblyRef( + corAssemblyProperty.ppbPublicKey, corAssemblyProperty.pcbPublicKey, corAssemblyProperty.szName.data(), + &corAssemblyProperty.pMetaData, &corAssemblyProperty.pulHashAlgId, sizeof(corAssemblyProperty.pulHashAlgId), + corAssemblyProperty.assemblyFlags, &corLibAssemblyRef); + if (corLibAssemblyRef == mdAssemblyRefNil) + { + Warn("Wrapper corLibAssemblyRef could not be defined."); + return hr; + } + } - COR_SIGNATURE signature[signatureBufferSize]; - unsigned offset = 0; + // *** Ensure System.Object type ref + if (objectTypeRef == mdTypeRefNil) + { + auto hr = module_metadata->metadata_emit->DefineTypeRefByName(corLibAssemblyRef, SystemObject, &objectTypeRef); + if (FAILED(hr)) + { + Warn("Wrapper objectTypeRef could not be defined."); + return hr; + } + } - signature[offset++] = IMAGE_CEE_CS_CALLCONV_DEFAULT; - signature[offset++] = 0x01; - signature[offset++] = ELEMENT_TYPE_CLASS; - memcpy(&signature[offset], &type_buffer, type_size); - offset += type_size; - signature[offset++] = ELEMENT_TYPE_VALUETYPE; - memcpy(&signature[offset], &runtimeTypeHandle_buffer, runtimeTypeHandle_size); - offset += runtimeTypeHandle_size; - - auto hr = module_metadata->metadata_emit->DefineMemberRef( - typeRef, GetTypeFromHandleMethodName, signature, offset, - &getTypeFromHandleToken); - if (FAILED(hr)) { - Warn("Wrapper getTypeFromHandleToken could not be defined."); - return hr; - } - } - - // *** Ensure System.RuntimeMethodHandle type ref - if (runtimeMethodHandleRef == mdTypeRefNil) { - auto hr = module_metadata->metadata_emit->DefineTypeRefByName( - corLibAssemblyRef, RuntimeMethodHandleTypeName, - &runtimeMethodHandleRef); - if (FAILED(hr)) { - Warn("Wrapper runtimeMethodHandleRef could not be defined."); - return hr; - } - } - - return S_OK; + // *** Ensure System.Exception type ref + if (exTypeRef == mdTypeRefNil) + { + auto hr = module_metadata->metadata_emit->DefineTypeRefByName(corLibAssemblyRef, SystemException, &exTypeRef); + if (FAILED(hr)) + { + Warn("Wrapper exTypeRef could not be defined."); + return hr; + } + } + + // *** Ensure System.Type type ref + if (typeRef == mdTypeRefNil) + { + auto hr = module_metadata->metadata_emit->DefineTypeRefByName(corLibAssemblyRef, SystemTypeName, &typeRef); + if (FAILED(hr)) + { + Warn("Wrapper typeRef could not be defined."); + return hr; + } + } + + // *** Ensure System.RuntimeTypeHandle type ref + if (runtimeTypeHandleRef == mdTypeRefNil) + { + auto hr = module_metadata->metadata_emit->DefineTypeRefByName(corLibAssemblyRef, RuntimeTypeHandleTypeName, + &runtimeTypeHandleRef); + if (FAILED(hr)) + { + Warn("Wrapper runtimeTypeHandleRef could not be defined."); + return hr; + } + } + + // *** Ensure Type.GetTypeFromHandle token + if (getTypeFromHandleToken == mdTokenNil) + { + unsigned runtimeTypeHandle_buffer; + auto runtimeTypeHandle_size = CorSigCompressToken(runtimeTypeHandleRef, &runtimeTypeHandle_buffer); + + unsigned type_buffer; + auto type_size = CorSigCompressToken(typeRef, &type_buffer); + + COR_SIGNATURE signature[signatureBufferSize]; + unsigned offset = 0; + + signature[offset++] = IMAGE_CEE_CS_CALLCONV_DEFAULT; + signature[offset++] = 0x01; + signature[offset++] = ELEMENT_TYPE_CLASS; + memcpy(&signature[offset], &type_buffer, type_size); + offset += type_size; + signature[offset++] = ELEMENT_TYPE_VALUETYPE; + memcpy(&signature[offset], &runtimeTypeHandle_buffer, runtimeTypeHandle_size); + offset += runtimeTypeHandle_size; + + auto hr = module_metadata->metadata_emit->DefineMemberRef(typeRef, GetTypeFromHandleMethodName, signature, + offset, &getTypeFromHandleToken); + if (FAILED(hr)) + { + Warn("Wrapper getTypeFromHandleToken could not be defined."); + return hr; + } + } + + // *** Ensure System.RuntimeMethodHandle type ref + if (runtimeMethodHandleRef == mdTypeRefNil) + { + auto hr = module_metadata->metadata_emit->DefineTypeRefByName(corLibAssemblyRef, RuntimeMethodHandleTypeName, + &runtimeMethodHandleRef); + if (FAILED(hr)) + { + Warn("Wrapper runtimeMethodHandleRef could not be defined."); + return hr; + } + } + + return S_OK; } -HRESULT CallTargetTokens::EnsureBaseCalltargetTokens() { - auto hr = EnsureCorLibTokens(); - if (FAILED(hr)) { - return hr; - } - - ModuleMetadata* module_metadata = GetMetadata(); - - // *** Ensure profiler assembly ref - if (profilerAssemblyRef == mdAssemblyRefNil) { - const AssemblyReference assemblyReference = - managed_profiler_full_assembly_version; - ASSEMBLYMETADATA assembly_metadata{}; - - assembly_metadata.usMajorVersion = assemblyReference.version.major; - assembly_metadata.usMinorVersion = assemblyReference.version.minor; - assembly_metadata.usBuildNumber = assemblyReference.version.build; - assembly_metadata.usRevisionNumber = assemblyReference.version.revision; - if (assemblyReference.locale == WStr("neutral")) { - assembly_metadata.szLocale = const_cast(WStr("\0")); - assembly_metadata.cbLocale = 0; - } else { - assembly_metadata.szLocale = - const_cast(assemblyReference.locale.c_str()); - assembly_metadata.cbLocale = (DWORD)(assemblyReference.locale.size()); - } - - DWORD public_key_size = 8; - if (assemblyReference.public_key == trace::PublicKey()) { - public_key_size = 0; - } - - hr = module_metadata->assembly_emit->DefineAssemblyRef( - &assemblyReference.public_key.data, public_key_size, - assemblyReference.name.data(), &assembly_metadata, NULL, 0, 0, - &profilerAssemblyRef); - - if (FAILED(hr)) { - Warn("Wrapper profilerAssemblyRef could not be defined."); - return hr; - } - } - - // *** Ensure calltarget type ref - if (callTargetTypeRef == mdTypeRefNil) { - hr = module_metadata->metadata_emit->DefineTypeRefByName( - profilerAssemblyRef, managed_profiler_calltarget_type.data(), - &callTargetTypeRef); - if (FAILED(hr)) { - Warn("Wrapper callTargetTypeRef could not be defined."); - return hr; - } - } - - // *** Ensure calltargetstate type ref - if (callTargetStateTypeRef == mdTypeRefNil) { - hr = module_metadata->metadata_emit->DefineTypeRefByName( - profilerAssemblyRef, managed_profiler_calltarget_statetype.data(), - &callTargetStateTypeRef); - if (FAILED(hr)) { - Warn("Wrapper callTargetStateTypeRef could not be defined."); - return hr; - } - } - - // *** Ensure CallTargetState.GetDefault() member ref - if (callTargetStateTypeGetDefault == mdMemberRefNil) { - unsigned callTargetStateTypeBuffer; - auto callTargetStateTypeSize = - CorSigCompressToken(callTargetStateTypeRef, &callTargetStateTypeBuffer); - - const ULONG signatureLength = 3 + callTargetStateTypeSize; - COR_SIGNATURE signature[signatureBufferSize]; - unsigned offset = 0; +HRESULT CallTargetTokens::EnsureBaseCalltargetTokens() +{ + auto hr = EnsureCorLibTokens(); + if (FAILED(hr)) + { + return hr; + } - signature[offset++] = IMAGE_CEE_CS_CALLCONV_DEFAULT; - signature[offset++] = 0x00; + ModuleMetadata* module_metadata = GetMetadata(); - signature[offset++] = ELEMENT_TYPE_VALUETYPE; - memcpy(&signature[offset], &callTargetStateTypeBuffer, - callTargetStateTypeSize); - offset += callTargetStateTypeSize; + // *** Ensure profiler assembly ref + if (profilerAssemblyRef == mdAssemblyRefNil) + { + const AssemblyReference assemblyReference = managed_profiler_full_assembly_version; + ASSEMBLYMETADATA assembly_metadata{}; + + assembly_metadata.usMajorVersion = assemblyReference.version.major; + assembly_metadata.usMinorVersion = assemblyReference.version.minor; + assembly_metadata.usBuildNumber = assemblyReference.version.build; + assembly_metadata.usRevisionNumber = assemblyReference.version.revision; + if (assemblyReference.locale == WStr("neutral")) + { + assembly_metadata.szLocale = const_cast(WStr("\0")); + assembly_metadata.cbLocale = 0; + } + else + { + assembly_metadata.szLocale = const_cast(assemblyReference.locale.c_str()); + assembly_metadata.cbLocale = (DWORD)(assemblyReference.locale.size()); + } + + DWORD public_key_size = 8; + if (assemblyReference.public_key == trace::PublicKey()) + { + public_key_size = 0; + } - auto hr = module_metadata->metadata_emit->DefineMemberRef( - callTargetStateTypeRef, - managed_profiler_calltarget_statetype_getdefault_name.data(), signature, - signatureLength, &callTargetStateTypeGetDefault); - if (FAILED(hr)) { - Warn("Wrapper callTargetStateTypeGetDefault could not be defined."); - return hr; + hr = module_metadata->assembly_emit->DefineAssemblyRef(&assemblyReference.public_key.data, public_key_size, + assemblyReference.name.data(), &assembly_metadata, NULL, + 0, 0, &profilerAssemblyRef); + + if (FAILED(hr)) + { + Warn("Wrapper profilerAssemblyRef could not be defined."); + return hr; + } + } + + // *** Ensure calltarget type ref + if (callTargetTypeRef == mdTypeRefNil) + { + hr = module_metadata->metadata_emit->DefineTypeRefByName( + profilerAssemblyRef, managed_profiler_calltarget_type.data(), &callTargetTypeRef); + if (FAILED(hr)) + { + Warn("Wrapper callTargetTypeRef could not be defined."); + return hr; + } } - } - return S_OK; + // *** Ensure calltargetstate type ref + if (callTargetStateTypeRef == mdTypeRefNil) + { + hr = module_metadata->metadata_emit->DefineTypeRefByName( + profilerAssemblyRef, managed_profiler_calltarget_statetype.data(), &callTargetStateTypeRef); + if (FAILED(hr)) + { + Warn("Wrapper callTargetStateTypeRef could not be defined."); + return hr; + } + } + + // *** Ensure CallTargetState.GetDefault() member ref + if (callTargetStateTypeGetDefault == mdMemberRefNil) + { + unsigned callTargetStateTypeBuffer; + auto callTargetStateTypeSize = CorSigCompressToken(callTargetStateTypeRef, &callTargetStateTypeBuffer); + + const ULONG signatureLength = 3 + callTargetStateTypeSize; + COR_SIGNATURE signature[signatureBufferSize]; + unsigned offset = 0; + + signature[offset++] = IMAGE_CEE_CS_CALLCONV_DEFAULT; + signature[offset++] = 0x00; + + signature[offset++] = ELEMENT_TYPE_VALUETYPE; + memcpy(&signature[offset], &callTargetStateTypeBuffer, callTargetStateTypeSize); + offset += callTargetStateTypeSize; + + auto hr = module_metadata->metadata_emit->DefineMemberRef( + callTargetStateTypeRef, managed_profiler_calltarget_statetype_getdefault_name.data(), signature, + signatureLength, &callTargetStateTypeGetDefault); + if (FAILED(hr)) + { + Warn("Wrapper callTargetStateTypeGetDefault could not be defined."); + return hr; + } + } + + return S_OK; } -mdTypeRef CallTargetTokens::GetTargetStateTypeRef() { - auto hr = EnsureBaseCalltargetTokens(); - if (FAILED(hr)) { - return mdTypeRefNil; - } - return callTargetStateTypeRef; +mdTypeRef CallTargetTokens::GetTargetStateTypeRef() +{ + auto hr = EnsureBaseCalltargetTokens(); + if (FAILED(hr)) + { + return mdTypeRefNil; + } + return callTargetStateTypeRef; } -mdTypeRef CallTargetTokens::GetTargetVoidReturnTypeRef() { - auto hr = EnsureBaseCalltargetTokens(); - if (FAILED(hr)) { - return mdTypeRefNil; - } +mdTypeRef CallTargetTokens::GetTargetVoidReturnTypeRef() +{ + auto hr = EnsureBaseCalltargetTokens(); + if (FAILED(hr)) + { + return mdTypeRefNil; + } - ModuleMetadata* module_metadata = GetMetadata(); + ModuleMetadata* module_metadata = GetMetadata(); - // *** Ensure calltargetreturn void type ref - if (callTargetReturnVoidTypeRef == mdTypeRefNil) { - hr = module_metadata->metadata_emit->DefineTypeRefByName( - profilerAssemblyRef, managed_profiler_calltarget_returntype.data(), - &callTargetReturnVoidTypeRef); - if (FAILED(hr)) { - Warn("Wrapper callTargetReturnVoidTypeRef could not be defined."); - return mdTypeRefNil; + // *** Ensure calltargetreturn void type ref + if (callTargetReturnVoidTypeRef == mdTypeRefNil) + { + hr = module_metadata->metadata_emit->DefineTypeRefByName( + profilerAssemblyRef, managed_profiler_calltarget_returntype.data(), &callTargetReturnVoidTypeRef); + if (FAILED(hr)) + { + Warn("Wrapper callTargetReturnVoidTypeRef could not be defined."); + return mdTypeRefNil; + } } - } - return callTargetReturnVoidTypeRef; + return callTargetReturnVoidTypeRef; } -mdTypeSpec CallTargetTokens::GetTargetReturnValueTypeRef( - FunctionMethodArgument* returnArgument) { - auto hr = EnsureBaseCalltargetTokens(); - if (FAILED(hr)) { - return mdTypeSpecNil; - } - - ModuleMetadata* module_metadata = GetMetadata(); - mdTypeSpec returnValueTypeSpec = mdTypeSpecNil; - - // *** Ensure calltargetreturn type ref - if (callTargetReturnTypeRef == mdTypeRefNil) { - hr = module_metadata->metadata_emit->DefineTypeRefByName( - profilerAssemblyRef, - managed_profiler_calltarget_returntype_generics.data(), - &callTargetReturnTypeRef); - if (FAILED(hr)) { - Warn("Wrapper callTargetReturnTypeRef could not be defined."); - return mdTypeSpecNil; - } - } - - PCCOR_SIGNATURE returnSignatureBuffer; - auto returnSignatureLength = - returnArgument->GetSignature(returnSignatureBuffer); - - // Get The base calltargetReturnTypeRef Buffer and Size - unsigned callTargetReturnTypeRefBuffer; - auto callTargetReturnTypeRefSize = CorSigCompressToken( - callTargetReturnTypeRef, &callTargetReturnTypeRefBuffer); - - auto signatureLength = 3 + callTargetReturnTypeRefSize + returnSignatureLength; - COR_SIGNATURE signature[signatureBufferSize]; - unsigned offset = 0; - - signature[offset++] = ELEMENT_TYPE_GENERICINST; - signature[offset++] = ELEMENT_TYPE_VALUETYPE; - memcpy(&signature[offset], &callTargetReturnTypeRefBuffer, - callTargetReturnTypeRefSize); - offset += callTargetReturnTypeRefSize; - signature[offset++] = 0x01; - memcpy(&signature[offset], returnSignatureBuffer, returnSignatureLength); - offset += returnSignatureLength; - - hr = module_metadata->metadata_emit->GetTokenFromTypeSpec(signature, signatureLength, &returnValueTypeSpec); - if (FAILED(hr)) { - Warn("Error creating return value type spec"); - return mdTypeSpecNil; - } - - return returnValueTypeSpec; +mdTypeSpec CallTargetTokens::GetTargetReturnValueTypeRef(FunctionMethodArgument* returnArgument) +{ + auto hr = EnsureBaseCalltargetTokens(); + if (FAILED(hr)) + { + return mdTypeSpecNil; + } + + ModuleMetadata* module_metadata = GetMetadata(); + mdTypeSpec returnValueTypeSpec = mdTypeSpecNil; + + // *** Ensure calltargetreturn type ref + if (callTargetReturnTypeRef == mdTypeRefNil) + { + hr = module_metadata->metadata_emit->DefineTypeRefByName( + profilerAssemblyRef, managed_profiler_calltarget_returntype_generics.data(), &callTargetReturnTypeRef); + if (FAILED(hr)) + { + Warn("Wrapper callTargetReturnTypeRef could not be defined."); + return mdTypeSpecNil; + } + } + + PCCOR_SIGNATURE returnSignatureBuffer; + auto returnSignatureLength = returnArgument->GetSignature(returnSignatureBuffer); + + // Get The base calltargetReturnTypeRef Buffer and Size + unsigned callTargetReturnTypeRefBuffer; + auto callTargetReturnTypeRefSize = CorSigCompressToken(callTargetReturnTypeRef, &callTargetReturnTypeRefBuffer); + + auto signatureLength = 3 + callTargetReturnTypeRefSize + returnSignatureLength; + COR_SIGNATURE signature[signatureBufferSize]; + unsigned offset = 0; + + signature[offset++] = ELEMENT_TYPE_GENERICINST; + signature[offset++] = ELEMENT_TYPE_VALUETYPE; + memcpy(&signature[offset], &callTargetReturnTypeRefBuffer, callTargetReturnTypeRefSize); + offset += callTargetReturnTypeRefSize; + signature[offset++] = 0x01; + memcpy(&signature[offset], returnSignatureBuffer, returnSignatureLength); + offset += returnSignatureLength; + + hr = module_metadata->metadata_emit->GetTokenFromTypeSpec(signature, signatureLength, &returnValueTypeSpec); + if (FAILED(hr)) + { + Warn("Error creating return value type spec"); + return mdTypeSpecNil; + } + + return returnValueTypeSpec; +} + +mdMemberRef CallTargetTokens::GetCallTargetStateDefaultMemberRef() +{ + auto hr = EnsureBaseCalltargetTokens(); + if (FAILED(hr)) + { + return mdMemberRefNil; + } + return callTargetStateTypeGetDefault; } -mdMemberRef CallTargetTokens::GetCallTargetStateDefaultMemberRef() { - auto hr = EnsureBaseCalltargetTokens(); - if (FAILED(hr)) { - return mdMemberRefNil; - } - return callTargetStateTypeGetDefault; +mdMemberRef CallTargetTokens::GetCallTargetReturnVoidDefaultMemberRef() +{ + auto hr = EnsureBaseCalltargetTokens(); + if (FAILED(hr)) + { + return mdMemberRefNil; + } + + // *** Ensure CallTargetReturn.GetDefault() member ref + if (callTargetReturnVoidTypeGetDefault == mdMemberRefNil) + { + ModuleMetadata* module_metadata = GetMetadata(); + + unsigned callTargetReturnVoidTypeBuffer; + auto callTargetReturnVoidTypeSize = + CorSigCompressToken(callTargetReturnVoidTypeRef, &callTargetReturnVoidTypeBuffer); + + auto signatureLength = 3 + callTargetReturnVoidTypeSize; + COR_SIGNATURE signature[signatureBufferSize]; + unsigned offset = 0; + + signature[offset++] = IMAGE_CEE_CS_CALLCONV_DEFAULT; + signature[offset++] = 0x00; + + signature[offset++] = ELEMENT_TYPE_VALUETYPE; + memcpy(&signature[offset], &callTargetReturnVoidTypeBuffer, callTargetReturnVoidTypeSize); + offset += callTargetReturnVoidTypeSize; + + hr = module_metadata->metadata_emit->DefineMemberRef( + callTargetReturnVoidTypeRef, managed_profiler_calltarget_returntype_getdefault_name.data(), signature, + signatureLength, &callTargetReturnVoidTypeGetDefault); + if (FAILED(hr)) + { + Warn("Wrapper callTargetReturnVoidTypeGetDefault could not be defined."); + return mdMemberRefNil; + } + } + + return callTargetReturnVoidTypeGetDefault; } -mdMemberRef CallTargetTokens::GetCallTargetReturnVoidDefaultMemberRef() { - auto hr = EnsureBaseCalltargetTokens(); - if (FAILED(hr)) { - return mdMemberRefNil; - } +mdMemberRef CallTargetTokens::GetCallTargetReturnValueDefaultMemberRef(mdTypeSpec callTargetReturnTypeSpec) +{ + auto hr = EnsureBaseCalltargetTokens(); + if (FAILED(hr)) + { + return mdMemberRefNil; + } + if (callTargetReturnTypeRef == mdTypeRefNil) + { + Warn("Wrapper callTargetReturnTypeGetDefault could not be defined because callTargetReturnTypeRef is null."); + return mdMemberRefNil; + } - // *** Ensure CallTargetReturn.GetDefault() member ref - if (callTargetReturnVoidTypeGetDefault == mdMemberRefNil) { + mdMemberRef callTargetReturnTypeGetDefault = mdMemberRefNil; + + // *** Ensure CallTargetReturn.GetDefault() member ref ModuleMetadata* module_metadata = GetMetadata(); - unsigned callTargetReturnVoidTypeBuffer; - auto callTargetReturnVoidTypeSize = CorSigCompressToken( - callTargetReturnVoidTypeRef, &callTargetReturnVoidTypeBuffer); + unsigned callTargetReturnTypeRefBuffer; + auto callTargetReturnTypeRefSize = CorSigCompressToken(callTargetReturnTypeRef, &callTargetReturnTypeRefBuffer); - auto signatureLength = 3 + callTargetReturnVoidTypeSize; + auto signatureLength = 7 + callTargetReturnTypeRefSize; COR_SIGNATURE signature[signatureBufferSize]; unsigned offset = 0; signature[offset++] = IMAGE_CEE_CS_CALLCONV_DEFAULT; signature[offset++] = 0x00; - + signature[offset++] = ELEMENT_TYPE_GENERICINST; signature[offset++] = ELEMENT_TYPE_VALUETYPE; - memcpy(&signature[offset], &callTargetReturnVoidTypeBuffer, - callTargetReturnVoidTypeSize); - offset += callTargetReturnVoidTypeSize; + memcpy(&signature[offset], &callTargetReturnTypeRefBuffer, callTargetReturnTypeRefSize); + offset += callTargetReturnTypeRefSize; + signature[offset++] = 0x01; + signature[offset++] = ELEMENT_TYPE_VAR; + signature[offset++] = 0x00; - hr = module_metadata->metadata_emit->DefineMemberRef( - callTargetReturnVoidTypeRef, - managed_profiler_calltarget_returntype_getdefault_name.data(), - signature, signatureLength, &callTargetReturnVoidTypeGetDefault); - if (FAILED(hr)) { - Warn("Wrapper callTargetReturnVoidTypeGetDefault could not be defined."); - return mdMemberRefNil; + hr = module_metadata->metadata_emit->DefineMemberRef(callTargetReturnTypeSpec, + managed_profiler_calltarget_returntype_getdefault_name.data(), + signature, signatureLength, &callTargetReturnTypeGetDefault); + if (FAILED(hr)) + { + Warn("Wrapper callTargetReturnTypeGetDefault could not be defined."); + return mdMemberRefNil; } - } - return callTargetReturnVoidTypeGetDefault; + return callTargetReturnTypeGetDefault; } -mdMemberRef CallTargetTokens::GetCallTargetReturnValueDefaultMemberRef( - mdTypeSpec callTargetReturnTypeSpec) { - auto hr = EnsureBaseCalltargetTokens(); - if (FAILED(hr)) { - return mdMemberRefNil; - } - if (callTargetReturnTypeRef == mdTypeRefNil) { - Warn("Wrapper callTargetReturnTypeGetDefault could not be defined because callTargetReturnTypeRef is null."); - return mdMemberRefNil; - } - - mdMemberRef callTargetReturnTypeGetDefault = mdMemberRefNil; - - // *** Ensure CallTargetReturn.GetDefault() member ref - ModuleMetadata* module_metadata = GetMetadata(); - - unsigned callTargetReturnTypeRefBuffer; - auto callTargetReturnTypeRefSize = CorSigCompressToken( - callTargetReturnTypeRef, &callTargetReturnTypeRefBuffer); - - auto signatureLength = 7 + callTargetReturnTypeRefSize; - COR_SIGNATURE signature[signatureBufferSize]; - unsigned offset = 0; - - signature[offset++] = IMAGE_CEE_CS_CALLCONV_DEFAULT; - signature[offset++] = 0x00; - signature[offset++] = ELEMENT_TYPE_GENERICINST; - signature[offset++] = ELEMENT_TYPE_VALUETYPE; - memcpy(&signature[offset], &callTargetReturnTypeRefBuffer, - callTargetReturnTypeRefSize); - offset += callTargetReturnTypeRefSize; - signature[offset++] = 0x01; - signature[offset++] = ELEMENT_TYPE_VAR; - signature[offset++] = 0x00; - - hr = module_metadata->metadata_emit->DefineMemberRef( - callTargetReturnTypeSpec, - managed_profiler_calltarget_returntype_getdefault_name.data(), signature, - signatureLength, &callTargetReturnTypeGetDefault); - if (FAILED(hr)) { - Warn("Wrapper callTargetReturnTypeGetDefault could not be defined."); - return mdMemberRefNil; - } - - return callTargetReturnTypeGetDefault; -} +mdMethodSpec CallTargetTokens::GetCallTargetDefaultValueMethodSpec(FunctionMethodArgument* methodArgument) +{ + auto hr = EnsureBaseCalltargetTokens(); + if (FAILED(hr)) + { + return mdMethodSpecNil; + } -mdMethodSpec CallTargetTokens::GetCallTargetDefaultValueMethodSpec( - FunctionMethodArgument* methodArgument) { - auto hr = EnsureBaseCalltargetTokens(); - if (FAILED(hr)) { - return mdMethodSpecNil; - } + mdMethodSpec getDefaultMethodSpec = mdMethodSpecNil; + ModuleMetadata* module_metadata = GetMetadata(); + + // *** Ensure we have the CallTargetInvoker.GetDefaultValue<> memberRef + if (getDefaultMemberRef == mdMemberRefNil) + { + auto signatureLength = 5; + COR_SIGNATURE signature[signatureBufferSize]; + unsigned offset = 0; + + signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERIC; + signature[offset++] = 0x01; + signature[offset++] = 0x00; + + signature[offset++] = ELEMENT_TYPE_MVAR; + signature[offset++] = 0x00; + + auto hr = module_metadata->metadata_emit->DefineMemberRef( + callTargetTypeRef, managed_profiler_calltarget_getdefaultvalue_name.data(), signature, signatureLength, + &getDefaultMemberRef); + if (FAILED(hr)) + { + Warn("Wrapper getDefaultMemberRef could not be defined."); + return hr; + } + } + + // *** Create de MethodSpec using the FunctionMethodArgument - mdMethodSpec getDefaultMethodSpec = mdMethodSpecNil; - ModuleMetadata* module_metadata = GetMetadata(); + // Gets the Return type signature + PCCOR_SIGNATURE methodArgumentSignature = nullptr; + ULONG methodArgumentSignatureSize; + methodArgumentSignatureSize = methodArgument->GetSignature(methodArgumentSignature); - // *** Ensure we have the CallTargetInvoker.GetDefaultValue<> memberRef - if (getDefaultMemberRef == mdMemberRefNil) { - auto signatureLength = 5; + auto signatureLength = 2 + methodArgumentSignatureSize; COR_SIGNATURE signature[signatureBufferSize]; unsigned offset = 0; - - signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERIC; + signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERICINST; signature[offset++] = 0x01; - signature[offset++] = 0x00; - signature[offset++] = ELEMENT_TYPE_MVAR; - signature[offset++] = 0x00; + memcpy(&signature[offset], methodArgumentSignature, methodArgumentSignatureSize); + offset += methodArgumentSignatureSize; + + hr = module_metadata->metadata_emit->DefineMethodSpec(getDefaultMemberRef, signature, signatureLength, + &getDefaultMethodSpec); + if (FAILED(hr)) + { + Warn("Error creating getDefaultMethodSpec."); + return mdMethodSpecNil; + } - auto hr = module_metadata->metadata_emit->DefineMemberRef( - callTargetTypeRef, - managed_profiler_calltarget_getdefaultvalue_name.data(), signature, - signatureLength, &getDefaultMemberRef); - if (FAILED(hr)) { - Warn("Wrapper getDefaultMemberRef could not be defined."); - return hr; - } - } - - // *** Create de MethodSpec using the FunctionMethodArgument - - // Gets the Return type signature - PCCOR_SIGNATURE methodArgumentSignature = nullptr; - ULONG methodArgumentSignatureSize; - methodArgumentSignatureSize = - methodArgument->GetSignature(methodArgumentSignature); - - auto signatureLength = 2 + methodArgumentSignatureSize; - COR_SIGNATURE signature[signatureBufferSize]; - unsigned offset = 0; - signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERICINST; - signature[offset++] = 0x01; - - memcpy(&signature[offset], methodArgumentSignature, - methodArgumentSignatureSize); - offset += methodArgumentSignatureSize; - - hr = module_metadata->metadata_emit->DefineMethodSpec( - getDefaultMemberRef, signature, signatureLength, &getDefaultMethodSpec); - if (FAILED(hr)) { - Warn("Error creating getDefaultMethodSpec."); - return mdMethodSpecNil; - } - - return getDefaultMethodSpec; + return getDefaultMethodSpec; } -mdToken CallTargetTokens::GetCurrentTypeRef(const TypeInfo* currentType, bool& isValueType) { - if (currentType->type_spec != mdTypeSpecNil) { - return currentType->type_spec; - } else { +mdToken CallTargetTokens::GetCurrentTypeRef(const TypeInfo* currentType, bool& isValueType) +{ + if (currentType->type_spec != mdTypeSpecNil) + { + return currentType->type_spec; + } + else + { - TypeInfo* cType = const_cast(currentType); - while (!cType->isGeneric) { + TypeInfo* cType = const_cast(currentType); + while (!cType->isGeneric) + { - if (cType->parent_type == nullptr) { - return cType->id; - } + if (cType->parent_type == nullptr) + { + return cType->id; + } - cType = const_cast(cType->parent_type); - } + cType = const_cast(cType->parent_type); + } - isValueType = false; - return objectTypeRef; - } + isValueType = false; + return objectTypeRef; + } } -HRESULT CallTargetTokens::ModifyLocalSig( - ILRewriter* reWriter, FunctionMethodArgument* methodReturnValue, - ULONG* callTargetStateIndex, ULONG* exceptionIndex, - ULONG* callTargetReturnIndex, ULONG* returnValueIndex, - mdToken* callTargetStateToken, mdToken* exceptionToken, - mdToken* callTargetReturnToken) { - auto hr = EnsureBaseCalltargetTokens(); - if (FAILED(hr)) { - return hr; - } - - ModuleMetadata* module_metadata = GetMetadata(); - - PCCOR_SIGNATURE originalSignature = nullptr; - ULONG originalSignatureSize = 0; - mdToken localVarSig = reWriter->GetTkLocalVarSig(); - - if (localVarSig != mdTokenNil) { - IfFailRet(module_metadata->metadata_import->GetSigFromToken( - localVarSig, &originalSignature, &originalSignatureSize)); - - // Check if the localvarsig has been already rewritten (the last local - // should be the callTargetState) - unsigned temp = 0; - const auto len = CorSigCompressToken(callTargetStateTypeRef, &temp); - if (originalSignatureSize - len > 0) { - if (originalSignature[originalSignatureSize - len - 1] == - ELEMENT_TYPE_VALUETYPE) { - if (memcmp(&originalSignature[originalSignatureSize - len], &temp, - len) == 0) { - Warn("The signature for this method has been already modified."); - return E_FAIL; +HRESULT CallTargetTokens::ModifyLocalSig(ILRewriter* reWriter, FunctionMethodArgument* methodReturnValue, + ULONG* callTargetStateIndex, ULONG* exceptionIndex, + ULONG* callTargetReturnIndex, ULONG* returnValueIndex, + mdToken* callTargetStateToken, mdToken* exceptionToken, + mdToken* callTargetReturnToken) +{ + auto hr = EnsureBaseCalltargetTokens(); + if (FAILED(hr)) + { + return hr; + } + + ModuleMetadata* module_metadata = GetMetadata(); + + PCCOR_SIGNATURE originalSignature = nullptr; + ULONG originalSignatureSize = 0; + mdToken localVarSig = reWriter->GetTkLocalVarSig(); + + if (localVarSig != mdTokenNil) + { + IfFailRet( + module_metadata->metadata_import->GetSigFromToken(localVarSig, &originalSignature, &originalSignatureSize)); + + // Check if the localvarsig has been already rewritten (the last local + // should be the callTargetState) + unsigned temp = 0; + const auto len = CorSigCompressToken(callTargetStateTypeRef, &temp); + if (originalSignatureSize - len > 0) + { + if (originalSignature[originalSignatureSize - len - 1] == ELEMENT_TYPE_VALUETYPE) + { + if (memcmp(&originalSignature[originalSignatureSize - len], &temp, len) == 0) + { + Warn("The signature for this method has been already modified."); + return E_FAIL; + } + } } - } - } - } - - ULONG newLocalsCount = 3; - - // Gets the calltarget state type buffer and size - unsigned callTargetStateTypeRefBuffer; - auto callTargetStateTypeRefSize = CorSigCompressToken( - callTargetStateTypeRef, &callTargetStateTypeRefBuffer); - - // Gets the exception type buffer and size - unsigned exTypeRefBuffer; - auto exTypeRefSize = CorSigCompressToken(exTypeRef, &exTypeRefBuffer); - - // Gets the Return type signature - PCCOR_SIGNATURE returnSignatureType = nullptr; - ULONG returnSignatureTypeSize = 0; - - // Gets the CallTargetReturn mdTypeSpec - mdToken callTargetReturn = mdTokenNil; - PCCOR_SIGNATURE callTargetReturnSignature = nullptr; - ULONG callTargetReturnSignatureSize; - unsigned callTargetReturnBuffer; - ULONG callTargetReturnSize; - ULONG callTargetReturnSizeForNewSignature = 0; - unsigned retTypeElementType; - auto retTypeFlags = methodReturnValue->GetTypeFlags(retTypeElementType); - - if (retTypeFlags != TypeFlagVoid) { - returnSignatureTypeSize = - methodReturnValue->GetSignature(returnSignatureType); - callTargetReturn = GetTargetReturnValueTypeRef(methodReturnValue); - - hr = module_metadata->metadata_import->GetTypeSpecFromToken( - callTargetReturn, &callTargetReturnSignature, - &callTargetReturnSignatureSize); - if (FAILED(hr)) { - return E_FAIL; - } - - callTargetReturnSizeForNewSignature = callTargetReturnSignatureSize; - - newLocalsCount++; - } else { - callTargetReturn = GetTargetVoidReturnTypeRef(); - callTargetReturnSize = - CorSigCompressToken(callTargetReturn, &callTargetReturnBuffer); - callTargetReturnSizeForNewSignature = 1 + callTargetReturnSize; - } - - // New signature size - ULONG newSignatureSize = - originalSignatureSize + returnSignatureTypeSize + (1 + exTypeRefSize) + - callTargetReturnSizeForNewSignature + (1 + callTargetStateTypeRefSize); - ULONG newSignatureOffset = 0; - - - ULONG oldLocalsBuffer; - ULONG oldLocalsLen = 0; - unsigned newLocalsBuffer; - ULONG newLocalsLen; - - // Calculate the new locals count - if (originalSignatureSize == 0) { - newSignatureSize += 2; - newLocalsLen = CorSigCompressData(newLocalsCount, &newLocalsBuffer); - } else { - oldLocalsLen = - CorSigUncompressData(originalSignature + 1, &oldLocalsBuffer); - newLocalsCount += oldLocalsBuffer; - newLocalsLen = CorSigCompressData(newLocalsCount, &newLocalsBuffer); - newSignatureSize += newLocalsLen - oldLocalsLen; - } - - // New signature declaration - COR_SIGNATURE newSignatureBuffer[signatureBufferSize]; - newSignatureBuffer[newSignatureOffset++] = IMAGE_CEE_CS_CALLCONV_LOCAL_SIG; - - // Set the locals count - memcpy(&newSignatureBuffer[newSignatureOffset], &newLocalsBuffer, - newLocalsLen); - newSignatureOffset += newLocalsLen; - - // Copy previous locals to the signature - if (originalSignatureSize > 0) { - const auto copyLength = originalSignatureSize - 1 - oldLocalsLen; - memcpy(&newSignatureBuffer[newSignatureOffset], - originalSignature + 1 + oldLocalsLen, copyLength); - newSignatureOffset += copyLength; - } - - // Add new locals - - // Return value local - if (returnSignatureType != nullptr) { - memcpy(&newSignatureBuffer[newSignatureOffset], returnSignatureType, - returnSignatureTypeSize); - newSignatureOffset += returnSignatureTypeSize; - } - - // Exception value - newSignatureBuffer[newSignatureOffset++] = ELEMENT_TYPE_CLASS; - memcpy(&newSignatureBuffer[newSignatureOffset], &exTypeRefBuffer, - exTypeRefSize); - newSignatureOffset += exTypeRefSize; - - // CallTarget Return value - if (callTargetReturnSignature != nullptr) { - memcpy(&newSignatureBuffer[newSignatureOffset], callTargetReturnSignature, - callTargetReturnSignatureSize); - newSignatureOffset += callTargetReturnSignatureSize; - } else { + } + + ULONG newLocalsCount = 3; + + // Gets the calltarget state type buffer and size + unsigned callTargetStateTypeRefBuffer; + auto callTargetStateTypeRefSize = CorSigCompressToken(callTargetStateTypeRef, &callTargetStateTypeRefBuffer); + + // Gets the exception type buffer and size + unsigned exTypeRefBuffer; + auto exTypeRefSize = CorSigCompressToken(exTypeRef, &exTypeRefBuffer); + + // Gets the Return type signature + PCCOR_SIGNATURE returnSignatureType = nullptr; + ULONG returnSignatureTypeSize = 0; + + // Gets the CallTargetReturn mdTypeSpec + mdToken callTargetReturn = mdTokenNil; + PCCOR_SIGNATURE callTargetReturnSignature = nullptr; + ULONG callTargetReturnSignatureSize; + unsigned callTargetReturnBuffer; + ULONG callTargetReturnSize; + ULONG callTargetReturnSizeForNewSignature = 0; + unsigned retTypeElementType; + auto retTypeFlags = methodReturnValue->GetTypeFlags(retTypeElementType); + + if (retTypeFlags != TypeFlagVoid) + { + returnSignatureTypeSize = methodReturnValue->GetSignature(returnSignatureType); + callTargetReturn = GetTargetReturnValueTypeRef(methodReturnValue); + + hr = module_metadata->metadata_import->GetTypeSpecFromToken(callTargetReturn, &callTargetReturnSignature, + &callTargetReturnSignatureSize); + if (FAILED(hr)) + { + return E_FAIL; + } + + callTargetReturnSizeForNewSignature = callTargetReturnSignatureSize; + + newLocalsCount++; + } + else + { + callTargetReturn = GetTargetVoidReturnTypeRef(); + callTargetReturnSize = CorSigCompressToken(callTargetReturn, &callTargetReturnBuffer); + callTargetReturnSizeForNewSignature = 1 + callTargetReturnSize; + } + + // New signature size + ULONG newSignatureSize = originalSignatureSize + returnSignatureTypeSize + (1 + exTypeRefSize) + + callTargetReturnSizeForNewSignature + (1 + callTargetStateTypeRefSize); + ULONG newSignatureOffset = 0; + + ULONG oldLocalsBuffer; + ULONG oldLocalsLen = 0; + unsigned newLocalsBuffer; + ULONG newLocalsLen; + + // Calculate the new locals count + if (originalSignatureSize == 0) + { + newSignatureSize += 2; + newLocalsLen = CorSigCompressData(newLocalsCount, &newLocalsBuffer); + } + else + { + oldLocalsLen = CorSigUncompressData(originalSignature + 1, &oldLocalsBuffer); + newLocalsCount += oldLocalsBuffer; + newLocalsLen = CorSigCompressData(newLocalsCount, &newLocalsBuffer); + newSignatureSize += newLocalsLen - oldLocalsLen; + } + + // New signature declaration + COR_SIGNATURE newSignatureBuffer[signatureBufferSize]; + newSignatureBuffer[newSignatureOffset++] = IMAGE_CEE_CS_CALLCONV_LOCAL_SIG; + + // Set the locals count + memcpy(&newSignatureBuffer[newSignatureOffset], &newLocalsBuffer, newLocalsLen); + newSignatureOffset += newLocalsLen; + + // Copy previous locals to the signature + if (originalSignatureSize > 0) + { + const auto copyLength = originalSignatureSize - 1 - oldLocalsLen; + memcpy(&newSignatureBuffer[newSignatureOffset], originalSignature + 1 + oldLocalsLen, copyLength); + newSignatureOffset += copyLength; + } + + // Add new locals + + // Return value local + if (returnSignatureType != nullptr) + { + memcpy(&newSignatureBuffer[newSignatureOffset], returnSignatureType, returnSignatureTypeSize); + newSignatureOffset += returnSignatureTypeSize; + } + + // Exception value + newSignatureBuffer[newSignatureOffset++] = ELEMENT_TYPE_CLASS; + memcpy(&newSignatureBuffer[newSignatureOffset], &exTypeRefBuffer, exTypeRefSize); + newSignatureOffset += exTypeRefSize; + + // CallTarget Return value + if (callTargetReturnSignature != nullptr) + { + memcpy(&newSignatureBuffer[newSignatureOffset], callTargetReturnSignature, callTargetReturnSignatureSize); + newSignatureOffset += callTargetReturnSignatureSize; + } + else + { + newSignatureBuffer[newSignatureOffset++] = ELEMENT_TYPE_VALUETYPE; + memcpy(&newSignatureBuffer[newSignatureOffset], &callTargetReturnBuffer, callTargetReturnSize); + newSignatureOffset += callTargetReturnSize; + } + + // CallTarget state value newSignatureBuffer[newSignatureOffset++] = ELEMENT_TYPE_VALUETYPE; - memcpy(&newSignatureBuffer[newSignatureOffset], &callTargetReturnBuffer, - callTargetReturnSize); - newSignatureOffset += callTargetReturnSize; - } - - // CallTarget state value - newSignatureBuffer[newSignatureOffset++] = ELEMENT_TYPE_VALUETYPE; - memcpy(&newSignatureBuffer[newSignatureOffset], &callTargetStateTypeRefBuffer, - callTargetStateTypeRefSize); - newSignatureOffset += callTargetStateTypeRefSize; - - // Get new locals token - mdToken newLocalVarSig; - hr = module_metadata->metadata_emit->GetTokenFromSig( - newSignatureBuffer, newSignatureSize, &newLocalVarSig); - if (FAILED(hr)) { - Warn("Error creating new locals var signature."); + memcpy(&newSignatureBuffer[newSignatureOffset], &callTargetStateTypeRefBuffer, callTargetStateTypeRefSize); + newSignatureOffset += callTargetStateTypeRefSize; + + // Get new locals token + mdToken newLocalVarSig; + hr = module_metadata->metadata_emit->GetTokenFromSig(newSignatureBuffer, newSignatureSize, &newLocalVarSig); + if (FAILED(hr)) + { + Warn("Error creating new locals var signature."); + return hr; + } + + reWriter->SetTkLocalVarSig(newLocalVarSig); + *callTargetStateToken = callTargetStateTypeRef; + *exceptionToken = exTypeRef; + *callTargetReturnToken = callTargetReturn; + if (returnSignatureType != nullptr) + { + *returnValueIndex = newLocalsCount - 4; + } + else + { + *returnValueIndex = static_cast(ULONG_MAX); + } + *exceptionIndex = newLocalsCount - 3; + *callTargetReturnIndex = newLocalsCount - 2; + *callTargetStateIndex = newLocalsCount - 1; return hr; - } - - reWriter->SetTkLocalVarSig(newLocalVarSig); - *callTargetStateToken = callTargetStateTypeRef; - *exceptionToken = exTypeRef; - *callTargetReturnToken = callTargetReturn; - if (returnSignatureType != nullptr) { - *returnValueIndex = newLocalsCount - 4; - } else { - *returnValueIndex = static_cast(ULONG_MAX); - } - *exceptionIndex = newLocalsCount - 3; - *callTargetReturnIndex = newLocalsCount - 2; - *callTargetStateIndex = newLocalsCount - 1; - return hr; } // slowpath BeginMethod -HRESULT CallTargetTokens::WriteBeginMethodWithArgumentsArray( - void* rewriterWrapperPtr, mdTypeRef integrationTypeRef, - const TypeInfo* currentType, ILInstr** instruction) { - auto hr = EnsureBaseCalltargetTokens(); - if (FAILED(hr)) { - return hr; - } - ILRewriterWrapper* rewriterWrapper = (ILRewriterWrapper*)rewriterWrapperPtr; - ModuleMetadata* module_metadata = GetMetadata(); +HRESULT CallTargetTokens::WriteBeginMethodWithArgumentsArray(void* rewriterWrapperPtr, mdTypeRef integrationTypeRef, + const TypeInfo* currentType, ILInstr** instruction) +{ + auto hr = EnsureBaseCalltargetTokens(); + if (FAILED(hr)) + { + return hr; + } + ILRewriterWrapper* rewriterWrapper = (ILRewriterWrapper*) rewriterWrapperPtr; + ModuleMetadata* module_metadata = GetMetadata(); - if (beginArrayMemberRef == mdMemberRefNil) { - unsigned callTargetStateBuffer; - auto callTargetStateSize = - CorSigCompressToken(callTargetStateTypeRef, &callTargetStateBuffer); + if (beginArrayMemberRef == mdMemberRefNil) + { + unsigned callTargetStateBuffer; + auto callTargetStateSize = CorSigCompressToken(callTargetStateTypeRef, &callTargetStateBuffer); - auto signatureLength = 8 + callTargetStateSize; - COR_SIGNATURE signature[signatureBufferSize]; - unsigned offset = 0; + auto signatureLength = 8 + callTargetStateSize; + COR_SIGNATURE signature[signatureBufferSize]; + unsigned offset = 0; - signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERIC; - signature[offset++] = 0x02; - signature[offset++] = 0x02; + signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERIC; + signature[offset++] = 0x02; + signature[offset++] = 0x02; - signature[offset++] = ELEMENT_TYPE_VALUETYPE; - memcpy(&signature[offset], &callTargetStateBuffer, callTargetStateSize); - offset += callTargetStateSize; + signature[offset++] = ELEMENT_TYPE_VALUETYPE; + memcpy(&signature[offset], &callTargetStateBuffer, callTargetStateSize); + offset += callTargetStateSize; - signature[offset++] = ELEMENT_TYPE_MVAR; - signature[offset++] = 0x01; + signature[offset++] = ELEMENT_TYPE_MVAR; + signature[offset++] = 0x01; - signature[offset++] = ELEMENT_TYPE_SZARRAY; - signature[offset++] = ELEMENT_TYPE_OBJECT; + signature[offset++] = ELEMENT_TYPE_SZARRAY; + signature[offset++] = ELEMENT_TYPE_OBJECT; - auto hr = module_metadata->metadata_emit->DefineMemberRef( - callTargetTypeRef, managed_profiler_calltarget_beginmethod_name.data(), - signature, signatureLength, &beginArrayMemberRef); - if (FAILED(hr)) { - Warn("Wrapper beginArrayMemberRef could not be defined."); - return hr; + auto hr = module_metadata->metadata_emit->DefineMemberRef(callTargetTypeRef, + managed_profiler_calltarget_beginmethod_name.data(), + signature, signatureLength, &beginArrayMemberRef); + if (FAILED(hr)) + { + Warn("Wrapper beginArrayMemberRef could not be defined."); + return hr; + } } - } - mdMethodSpec beginArrayMethodSpec = mdMethodSpecNil; + mdMethodSpec beginArrayMethodSpec = mdMethodSpecNil; - unsigned integrationTypeBuffer; - ULONG integrationTypeSize = - CorSigCompressToken(integrationTypeRef, &integrationTypeBuffer); + unsigned integrationTypeBuffer; + ULONG integrationTypeSize = CorSigCompressToken(integrationTypeRef, &integrationTypeBuffer); - bool isValueType = currentType->valueType; - mdToken currentTypeRef = GetCurrentTypeRef(currentType, isValueType); + bool isValueType = currentType->valueType; + mdToken currentTypeRef = GetCurrentTypeRef(currentType, isValueType); - unsigned currentTypeBuffer; - ULONG currentTypeSize = - CorSigCompressToken(currentTypeRef, ¤tTypeBuffer); + unsigned currentTypeBuffer; + ULONG currentTypeSize = CorSigCompressToken(currentTypeRef, ¤tTypeBuffer); - auto signatureLength = 4 + integrationTypeSize + currentTypeSize; - COR_SIGNATURE signature[signatureBufferSize]; - unsigned offset = 0; - signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERICINST; - signature[offset++] = 0x02; - - signature[offset++] = ELEMENT_TYPE_CLASS; - memcpy(&signature[offset], &integrationTypeBuffer, integrationTypeSize); - offset += integrationTypeSize; + auto signatureLength = 4 + integrationTypeSize + currentTypeSize; + COR_SIGNATURE signature[signatureBufferSize]; + unsigned offset = 0; + signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERICINST; + signature[offset++] = 0x02; - if (isValueType) { - signature[offset++] = ELEMENT_TYPE_VALUETYPE; - } else { signature[offset++] = ELEMENT_TYPE_CLASS; - } - memcpy(&signature[offset], ¤tTypeBuffer, currentTypeSize); - offset += currentTypeSize; - - hr = module_metadata->metadata_emit->DefineMethodSpec( - beginArrayMemberRef, signature, signatureLength, &beginArrayMethodSpec); - if (FAILED(hr)) { - Warn("Error creating begin method spec."); - return hr; - } + memcpy(&signature[offset], &integrationTypeBuffer, integrationTypeSize); + offset += integrationTypeSize; - *instruction = rewriterWrapper->CallMember(beginArrayMethodSpec, false); - return S_OK; + if (isValueType) + { + signature[offset++] = ELEMENT_TYPE_VALUETYPE; + } + else + { + signature[offset++] = ELEMENT_TYPE_CLASS; + } + memcpy(&signature[offset], ¤tTypeBuffer, currentTypeSize); + offset += currentTypeSize; + + hr = module_metadata->metadata_emit->DefineMethodSpec(beginArrayMemberRef, signature, signatureLength, + &beginArrayMethodSpec); + if (FAILED(hr)) + { + Warn("Error creating begin method spec."); + return hr; + } + + *instruction = rewriterWrapper->CallMember(beginArrayMethodSpec, false); + return S_OK; } /** * PUBLIC **/ -mdTypeRef CallTargetTokens::GetObjectTypeRef() { return objectTypeRef; } -mdTypeRef CallTargetTokens::GetExceptionTypeRef() { return exTypeRef; } -mdAssemblyRef CallTargetTokens::GetCorLibAssemblyRef() { return corLibAssemblyRef; } - -HRESULT CallTargetTokens::ModifyLocalSigAndInitialize( - void* rewriterWrapperPtr, FunctionInfo* functionInfo, - ULONG* callTargetStateIndex, ULONG* exceptionIndex, - ULONG* callTargetReturnIndex, ULONG* returnValueIndex, - mdToken* callTargetStateToken, mdToken* exceptionToken, - mdToken* callTargetReturnToken, ILInstr** firstInstruction) { - ILRewriterWrapper* rewriterWrapper = (ILRewriterWrapper*)rewriterWrapperPtr; - - // Modify the Local Var Signature of the method - auto returnFunctionMethod = functionInfo->method_signature.GetRet(); - - auto hr = ModifyLocalSig(rewriterWrapper->GetILRewriter(), - &returnFunctionMethod, callTargetStateIndex, - exceptionIndex, callTargetReturnIndex, - returnValueIndex, callTargetStateToken, - exceptionToken, callTargetReturnToken); - - if (FAILED(hr)) { - Warn("ModifyLocalSig() failed."); - return hr; - } - - // Init locals - if (*returnValueIndex != static_cast(ULONG_MAX)) { - *firstInstruction = rewriterWrapper->CallMember( - GetCallTargetDefaultValueMethodSpec(&returnFunctionMethod), false); - rewriterWrapper->StLocal(*returnValueIndex); - - rewriterWrapper->CallMember( - GetCallTargetReturnValueDefaultMemberRef(*callTargetReturnToken), - false); - rewriterWrapper->StLocal(*callTargetReturnIndex); - } else { - *firstInstruction = rewriterWrapper->CallMember( - GetCallTargetReturnVoidDefaultMemberRef(), false); - rewriterWrapper->StLocal(*callTargetReturnIndex); - } - rewriterWrapper->LoadNull(); - rewriterWrapper->StLocal(*exceptionIndex); - // We don't need to initialize calltarget state because is going to be initialized right after this method call. - // So we can save 2 instructions. - /*rewriterWrapper->CallMember(GetCallTargetStateDefaultMemberRef(), false); - rewriterWrapper->StLocal(*callTargetStateIndex);*/ - return S_OK; +mdTypeRef CallTargetTokens::GetObjectTypeRef() +{ + return objectTypeRef; +} +mdTypeRef CallTargetTokens::GetExceptionTypeRef() +{ + return exTypeRef; +} +mdAssemblyRef CallTargetTokens::GetCorLibAssemblyRef() +{ + return corLibAssemblyRef; } -HRESULT CallTargetTokens::WriteBeginMethod( - void* rewriterWrapperPtr, mdTypeRef integrationTypeRef, - const TypeInfo* currentType, - std::vector& methodArguments, - ILInstr** instruction) { - auto hr = EnsureBaseCalltargetTokens(); - if (FAILED(hr)) { - return hr; - } +HRESULT CallTargetTokens::ModifyLocalSigAndInitialize(void* rewriterWrapperPtr, FunctionInfo* functionInfo, + ULONG* callTargetStateIndex, ULONG* exceptionIndex, + ULONG* callTargetReturnIndex, ULONG* returnValueIndex, + mdToken* callTargetStateToken, mdToken* exceptionToken, + mdToken* callTargetReturnToken, ILInstr** firstInstruction) +{ + ILRewriterWrapper* rewriterWrapper = (ILRewriterWrapper*) rewriterWrapperPtr; + + // Modify the Local Var Signature of the method + auto returnFunctionMethod = functionInfo->method_signature.GetRet(); + + auto hr = ModifyLocalSig(rewriterWrapper->GetILRewriter(), &returnFunctionMethod, callTargetStateIndex, + exceptionIndex, callTargetReturnIndex, returnValueIndex, callTargetStateToken, + exceptionToken, callTargetReturnToken); + + if (FAILED(hr)) + { + Warn("ModifyLocalSig() failed."); + return hr; + } - ILRewriterWrapper* rewriterWrapper = (ILRewriterWrapper*)rewriterWrapperPtr; - ModuleMetadata* module_metadata = GetMetadata(); + // Init locals + if (*returnValueIndex != static_cast(ULONG_MAX)) + { + *firstInstruction = + rewriterWrapper->CallMember(GetCallTargetDefaultValueMethodSpec(&returnFunctionMethod), false); + rewriterWrapper->StLocal(*returnValueIndex); - auto numArguments = (int)methodArguments.size(); - if (numArguments >= FASTPATH_COUNT) { - return WriteBeginMethodWithArgumentsArray( - rewriterWrapperPtr, integrationTypeRef, currentType, instruction); - } + rewriterWrapper->CallMember(GetCallTargetReturnValueDefaultMemberRef(*callTargetReturnToken), false); + rewriterWrapper->StLocal(*callTargetReturnIndex); + } + else + { + *firstInstruction = rewriterWrapper->CallMember(GetCallTargetReturnVoidDefaultMemberRef(), false); + rewriterWrapper->StLocal(*callTargetReturnIndex); + } + rewriterWrapper->LoadNull(); + rewriterWrapper->StLocal(*exceptionIndex); + // We don't need to initialize calltarget state because is going to be initialized right after this method call. + // So we can save 2 instructions. + /*rewriterWrapper->CallMember(GetCallTargetStateDefaultMemberRef(), false); + rewriterWrapper->StLocal(*callTargetStateIndex);*/ + return S_OK; +} - // - // FastPath - // +HRESULT CallTargetTokens::WriteBeginMethod(void* rewriterWrapperPtr, mdTypeRef integrationTypeRef, + const TypeInfo* currentType, + std::vector& methodArguments, ILInstr** instruction) +{ + auto hr = EnsureBaseCalltargetTokens(); + if (FAILED(hr)) + { + return hr; + } - if (beginMethodFastPathRefs[numArguments] == mdMemberRefNil) { - unsigned callTargetStateBuffer; - auto callTargetStateSize = CorSigCompressToken(callTargetStateTypeRef, &callTargetStateBuffer); + ILRewriterWrapper* rewriterWrapper = (ILRewriterWrapper*) rewriterWrapperPtr; + ModuleMetadata* module_metadata = GetMetadata(); + + auto numArguments = (int) methodArguments.size(); + if (numArguments >= FASTPATH_COUNT) + { + return WriteBeginMethodWithArgumentsArray(rewriterWrapperPtr, integrationTypeRef, currentType, instruction); + } + + // + // FastPath + // + + if (beginMethodFastPathRefs[numArguments] == mdMemberRefNil) + { + unsigned callTargetStateBuffer; + auto callTargetStateSize = CorSigCompressToken(callTargetStateTypeRef, &callTargetStateBuffer); + + auto signatureLength = 6 + (numArguments * 2) + callTargetStateSize; + COR_SIGNATURE signature[signatureBufferSize]; + unsigned offset = 0; + + signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERIC; + signature[offset++] = 0x02 + numArguments; + signature[offset++] = 0x01 + numArguments; + + signature[offset++] = ELEMENT_TYPE_VALUETYPE; + memcpy(&signature[offset], &callTargetStateBuffer, callTargetStateSize); + offset += callTargetStateSize; + + signature[offset++] = ELEMENT_TYPE_MVAR; + signature[offset++] = 0x01; + + for (auto i = 0; i < numArguments; i++) + { + signature[offset++] = ELEMENT_TYPE_MVAR; + signature[offset++] = 0x01 + (i + 1); + } + + auto hr = module_metadata->metadata_emit->DefineMemberRef( + callTargetTypeRef, managed_profiler_calltarget_beginmethod_name.data(), signature, signatureLength, + &beginMethodFastPathRefs[numArguments]); + if (FAILED(hr)) + { + Warn("Wrapper beginMethod for ", numArguments, " arguments could not be defined."); + return hr; + } + } + + mdMethodSpec beginMethodSpec = mdMethodSpecNil; + + unsigned integrationTypeBuffer; + ULONG integrationTypeSize = CorSigCompressToken(integrationTypeRef, &integrationTypeBuffer); + + bool isValueType = currentType->valueType; + mdToken currentTypeRef = GetCurrentTypeRef(currentType, isValueType); + + unsigned currentTypeBuffer; + ULONG currentTypeSize = CorSigCompressToken(currentTypeRef, ¤tTypeBuffer); + + auto signatureLength = 4 + integrationTypeSize + currentTypeSize; + + PCCOR_SIGNATURE argumentsSignatureBuffer[FASTPATH_COUNT]; + ULONG argumentsSignatureSize[FASTPATH_COUNT]; + for (auto i = 0; i < numArguments; i++) + { + auto signatureSize = methodArguments[i].GetSignature(argumentsSignatureBuffer[i]); + argumentsSignatureSize[i] = signatureSize; + signatureLength += signatureSize; + } - auto signatureLength = 6 + (numArguments * 2) + callTargetStateSize; COR_SIGNATURE signature[signatureBufferSize]; unsigned offset = 0; - signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERIC; + signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERICINST; signature[offset++] = 0x02 + numArguments; - signature[offset++] = 0x01 + numArguments; - signature[offset++] = ELEMENT_TYPE_VALUETYPE; - memcpy(&signature[offset], &callTargetStateBuffer, callTargetStateSize); - offset += callTargetStateSize; + signature[offset++] = ELEMENT_TYPE_CLASS; + memcpy(&signature[offset], &integrationTypeBuffer, integrationTypeSize); + offset += integrationTypeSize; - signature[offset++] = ELEMENT_TYPE_MVAR; - signature[offset++] = 0x01; + if (isValueType) + { + signature[offset++] = ELEMENT_TYPE_VALUETYPE; + } + else + { + signature[offset++] = ELEMENT_TYPE_CLASS; + } + memcpy(&signature[offset], ¤tTypeBuffer, currentTypeSize); + offset += currentTypeSize; - for (auto i = 0; i < numArguments; i++) { - signature[offset++] = ELEMENT_TYPE_MVAR; - signature[offset++] = 0x01 + (i + 1); + for (auto i = 0; i < numArguments; i++) + { + memcpy(&signature[offset], argumentsSignatureBuffer[i], argumentsSignatureSize[i]); + offset += argumentsSignatureSize[i]; } - auto hr = module_metadata->metadata_emit->DefineMemberRef( - callTargetTypeRef, - managed_profiler_calltarget_beginmethod_name.data(), - signature, - signatureLength, - &beginMethodFastPathRefs[numArguments]); - if (FAILED(hr)) { - Warn("Wrapper beginMethod for ", numArguments," arguments could not be defined."); - return hr; + hr = module_metadata->metadata_emit->DefineMethodSpec(beginMethodFastPathRefs[numArguments], signature, + signatureLength, &beginMethodSpec); + if (FAILED(hr)) + { + Warn("Error creating begin method spec."); + return hr; } - } - mdMethodSpec beginMethodSpec = mdMethodSpecNil; + *instruction = rewriterWrapper->CallMember(beginMethodSpec, false); + return S_OK; +} - unsigned integrationTypeBuffer; - ULONG integrationTypeSize = CorSigCompressToken(integrationTypeRef, &integrationTypeBuffer); +// endmethod with void return +HRESULT CallTargetTokens::WriteEndVoidReturnMemberRef(void* rewriterWrapperPtr, mdTypeRef integrationTypeRef, + const TypeInfo* currentType, ILInstr** instruction) +{ + auto hr = EnsureBaseCalltargetTokens(); + if (FAILED(hr)) + { + return hr; + } + ILRewriterWrapper* rewriterWrapper = (ILRewriterWrapper*) rewriterWrapperPtr; + ModuleMetadata* module_metadata = GetMetadata(); - bool isValueType = currentType->valueType; - mdToken currentTypeRef = GetCurrentTypeRef(currentType, isValueType); + if (endVoidMemberRef == mdMemberRefNil) + { + unsigned callTargetReturnVoidBuffer; + auto callTargetReturnVoidSize = CorSigCompressToken(callTargetReturnVoidTypeRef, &callTargetReturnVoidBuffer); - unsigned currentTypeBuffer; - ULONG currentTypeSize = CorSigCompressToken(currentTypeRef, ¤tTypeBuffer); + unsigned exTypeRefBuffer; + auto exTypeRefSize = CorSigCompressToken(exTypeRef, &exTypeRefBuffer); - auto signatureLength = 4 + integrationTypeSize + currentTypeSize; + unsigned callTargetStateBuffer; + auto callTargetStateSize = CorSigCompressToken(callTargetStateTypeRef, &callTargetStateBuffer); - PCCOR_SIGNATURE argumentsSignatureBuffer[FASTPATH_COUNT]; - ULONG argumentsSignatureSize[FASTPATH_COUNT]; - for (auto i = 0; i < numArguments; i++) { - auto signatureSize = methodArguments[i].GetSignature(argumentsSignatureBuffer[i]); - argumentsSignatureSize[i] = signatureSize; - signatureLength += signatureSize; - } + auto signatureLength = 8 + callTargetReturnVoidSize + exTypeRefSize + callTargetStateSize; + COR_SIGNATURE signature[signatureBufferSize]; + unsigned offset = 0; - COR_SIGNATURE signature[signatureBufferSize]; - unsigned offset = 0; + signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERIC; + signature[offset++] = 0x02; + signature[offset++] = 0x03; - signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERICINST; - signature[offset++] = 0x02 + numArguments; + signature[offset++] = ELEMENT_TYPE_VALUETYPE; + memcpy(&signature[offset], &callTargetReturnVoidBuffer, callTargetReturnVoidSize); + offset += callTargetReturnVoidSize; - signature[offset++] = ELEMENT_TYPE_CLASS; - memcpy(&signature[offset], &integrationTypeBuffer, integrationTypeSize); - offset += integrationTypeSize; + signature[offset++] = ELEMENT_TYPE_MVAR; + signature[offset++] = 0x01; + + signature[offset++] = ELEMENT_TYPE_CLASS; + memcpy(&signature[offset], &exTypeRefBuffer, exTypeRefSize); + offset += exTypeRefSize; + + signature[offset++] = ELEMENT_TYPE_VALUETYPE; + memcpy(&signature[offset], &callTargetStateBuffer, callTargetStateSize); + offset += callTargetStateSize; + + auto hr = module_metadata->metadata_emit->DefineMemberRef(callTargetTypeRef, + managed_profiler_calltarget_endmethod_name.data(), + signature, signatureLength, &endVoidMemberRef); + if (FAILED(hr)) + { + Warn("Wrapper endVoidMemberRef could not be defined."); + return hr; + } + } + + mdMethodSpec endVoidMethodSpec = mdMethodSpecNil; + + unsigned integrationTypeBuffer; + ULONG integrationTypeSize = CorSigCompressToken(integrationTypeRef, &integrationTypeBuffer); + + bool isValueType = currentType->valueType; + mdToken currentTypeRef = GetCurrentTypeRef(currentType, isValueType); + + unsigned currentTypeBuffer; + ULONG currentTypeSize = CorSigCompressToken(currentTypeRef, ¤tTypeBuffer); + + auto signatureLength = 4 + integrationTypeSize + currentTypeSize; + COR_SIGNATURE signature[signatureBufferSize]; + unsigned offset = 0; + signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERICINST; + signature[offset++] = 0x02; - if (isValueType) { - signature[offset++] = ELEMENT_TYPE_VALUETYPE; - } else { signature[offset++] = ELEMENT_TYPE_CLASS; - } - memcpy(&signature[offset], ¤tTypeBuffer, currentTypeSize); - offset += currentTypeSize; - - for (auto i = 0; i < numArguments; i++) { - memcpy(&signature[offset], argumentsSignatureBuffer[i], argumentsSignatureSize[i]); - offset += argumentsSignatureSize[i]; - } - - hr = module_metadata->metadata_emit->DefineMethodSpec(beginMethodFastPathRefs[numArguments], signature, signatureLength, &beginMethodSpec); - if (FAILED(hr)) { - Warn("Error creating begin method spec."); - return hr; - } + memcpy(&signature[offset], &integrationTypeBuffer, integrationTypeSize); + offset += integrationTypeSize; - *instruction = rewriterWrapper->CallMember(beginMethodSpec, false); - return S_OK; + if (isValueType) + { + signature[offset++] = ELEMENT_TYPE_VALUETYPE; + } + else + { + signature[offset++] = ELEMENT_TYPE_CLASS; + } + memcpy(&signature[offset], ¤tTypeBuffer, currentTypeSize); + offset += currentTypeSize; + + hr = module_metadata->metadata_emit->DefineMethodSpec(endVoidMemberRef, signature, signatureLength, + &endVoidMethodSpec); + if (FAILED(hr)) + { + Warn("Error creating end void method method spec."); + return hr; + } + + *instruction = rewriterWrapper->CallMember(endVoidMethodSpec, false); + return S_OK; } -// endmethod with void return -HRESULT CallTargetTokens::WriteEndVoidReturnMemberRef( - void* rewriterWrapperPtr, mdTypeRef integrationTypeRef, - const TypeInfo* currentType, ILInstr** instruction) { - auto hr = EnsureBaseCalltargetTokens(); - if (FAILED(hr)) { - return hr; - } - ILRewriterWrapper* rewriterWrapper = (ILRewriterWrapper*)rewriterWrapperPtr; - ModuleMetadata* module_metadata = GetMetadata(); +// endmethod with return type +HRESULT CallTargetTokens::WriteEndReturnMemberRef(void* rewriterWrapperPtr, mdTypeRef integrationTypeRef, + const TypeInfo* currentType, FunctionMethodArgument* returnArgument, + ILInstr** instruction) +{ + auto hr = EnsureBaseCalltargetTokens(); + if (FAILED(hr)) + { + return hr; + } + ILRewriterWrapper* rewriterWrapper = (ILRewriterWrapper*) rewriterWrapperPtr; + ModuleMetadata* module_metadata = GetMetadata(); + GetTargetReturnValueTypeRef(returnArgument); + + // *** Define base MethodMemberRef for the type + + mdMemberRef endMethodMemberRef = mdMemberRefNil; - if (endVoidMemberRef == mdMemberRefNil) { - unsigned callTargetReturnVoidBuffer; - auto callTargetReturnVoidSize = CorSigCompressToken( - callTargetReturnVoidTypeRef, &callTargetReturnVoidBuffer); + unsigned callTargetReturnTypeRefBuffer; + auto callTargetReturnTypeRefSize = CorSigCompressToken(callTargetReturnTypeRef, &callTargetReturnTypeRefBuffer); unsigned exTypeRefBuffer; auto exTypeRefSize = CorSigCompressToken(exTypeRef, &exTypeRefBuffer); unsigned callTargetStateBuffer; - auto callTargetStateSize = - CorSigCompressToken(callTargetStateTypeRef, &callTargetStateBuffer); + auto callTargetStateSize = CorSigCompressToken(callTargetStateTypeRef, &callTargetStateBuffer); - auto signatureLength = - 8 + callTargetReturnVoidSize + exTypeRefSize + callTargetStateSize; + auto signatureLength = 14 + callTargetReturnTypeRefSize + exTypeRefSize + callTargetStateSize; COR_SIGNATURE signature[signatureBufferSize]; unsigned offset = 0; signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERIC; - signature[offset++] = 0x02; signature[offset++] = 0x03; + signature[offset++] = 0x04; + signature[offset++] = ELEMENT_TYPE_GENERICINST; signature[offset++] = ELEMENT_TYPE_VALUETYPE; - memcpy(&signature[offset], &callTargetReturnVoidBuffer, - callTargetReturnVoidSize); - offset += callTargetReturnVoidSize; + memcpy(&signature[offset], &callTargetReturnTypeRefBuffer, callTargetReturnTypeRefSize); + offset += callTargetReturnTypeRefSize; + signature[offset++] = 0x01; + signature[offset++] = ELEMENT_TYPE_MVAR; + signature[offset++] = 0x02; signature[offset++] = ELEMENT_TYPE_MVAR; signature[offset++] = 0x01; + signature[offset++] = ELEMENT_TYPE_MVAR; + signature[offset++] = 0x02; + signature[offset++] = ELEMENT_TYPE_CLASS; memcpy(&signature[offset], &exTypeRefBuffer, exTypeRefSize); offset += exTypeRefSize; @@ -952,290 +1112,185 @@ HRESULT CallTargetTokens::WriteEndVoidReturnMemberRef( memcpy(&signature[offset], &callTargetStateBuffer, callTargetStateSize); offset += callTargetStateSize; - auto hr = module_metadata->metadata_emit->DefineMemberRef( - callTargetTypeRef, managed_profiler_calltarget_endmethod_name.data(), - signature, signatureLength, &endVoidMemberRef); - if (FAILED(hr)) { - Warn("Wrapper endVoidMemberRef could not be defined."); - return hr; + hr = module_metadata->metadata_emit->DefineMemberRef(callTargetTypeRef, + managed_profiler_calltarget_endmethod_name.data(), signature, + signatureLength, &endMethodMemberRef); + if (FAILED(hr)) + { + Warn("Wrapper endMethodMemberRef could not be defined."); + return hr; } - } - mdMethodSpec endVoidMethodSpec = mdMethodSpecNil; + // *** Define Method Spec - unsigned integrationTypeBuffer; - ULONG integrationTypeSize = - CorSigCompressToken(integrationTypeRef, &integrationTypeBuffer); + mdMethodSpec endMethodSpec = mdMethodSpecNil; - bool isValueType = currentType->valueType; - mdToken currentTypeRef = GetCurrentTypeRef(currentType, isValueType); + unsigned integrationTypeBuffer; + ULONG integrationTypeSize = CorSigCompressToken(integrationTypeRef, &integrationTypeBuffer); - unsigned currentTypeBuffer; - ULONG currentTypeSize = - CorSigCompressToken(currentTypeRef, ¤tTypeBuffer); + bool isValueType = currentType->valueType; + mdToken currentTypeRef = GetCurrentTypeRef(currentType, isValueType); - auto signatureLength = 4 + integrationTypeSize + currentTypeSize; - COR_SIGNATURE signature[signatureBufferSize]; - unsigned offset = 0; - signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERICINST; - signature[offset++] = 0x02; + unsigned currentTypeBuffer; + ULONG currentTypeSize = CorSigCompressToken(currentTypeRef, ¤tTypeBuffer); - signature[offset++] = ELEMENT_TYPE_CLASS; - memcpy(&signature[offset], &integrationTypeBuffer, integrationTypeSize); - offset += integrationTypeSize; + PCCOR_SIGNATURE returnSignatureBuffer; + auto returnSignatureLength = returnArgument->GetSignature(returnSignatureBuffer); - if (isValueType) { - signature[offset++] = ELEMENT_TYPE_VALUETYPE; - } else { - signature[offset++] = ELEMENT_TYPE_CLASS; - } - memcpy(&signature[offset], ¤tTypeBuffer, currentTypeSize); - offset += currentTypeSize; - - hr = module_metadata->metadata_emit->DefineMethodSpec( - endVoidMemberRef, signature, signatureLength, &endVoidMethodSpec); - if (FAILED(hr)) { - Warn("Error creating end void method method spec."); - return hr; - } - - *instruction = rewriterWrapper->CallMember(endVoidMethodSpec, false); - return S_OK; -} - -// endmethod with return type -HRESULT CallTargetTokens::WriteEndReturnMemberRef( - void* rewriterWrapperPtr, mdTypeRef integrationTypeRef, - const TypeInfo* currentType, FunctionMethodArgument* returnArgument, - ILInstr** instruction) { - auto hr = EnsureBaseCalltargetTokens(); - if (FAILED(hr)) { - return hr; - } - ILRewriterWrapper* rewriterWrapper = (ILRewriterWrapper*)rewriterWrapperPtr; - ModuleMetadata* module_metadata = GetMetadata(); - GetTargetReturnValueTypeRef(returnArgument); - - // *** Define base MethodMemberRef for the type - - mdMemberRef endMethodMemberRef = mdMemberRefNil; - - unsigned callTargetReturnTypeRefBuffer; - auto callTargetReturnTypeRefSize = CorSigCompressToken( - callTargetReturnTypeRef, &callTargetReturnTypeRefBuffer); - - unsigned exTypeRefBuffer; - auto exTypeRefSize = CorSigCompressToken(exTypeRef, &exTypeRefBuffer); - - unsigned callTargetStateBuffer; - auto callTargetStateSize = - CorSigCompressToken(callTargetStateTypeRef, &callTargetStateBuffer); - - auto signatureLength = - 14 + callTargetReturnTypeRefSize + exTypeRefSize + callTargetStateSize; - COR_SIGNATURE signature[signatureBufferSize]; - unsigned offset = 0; - - signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERIC; - signature[offset++] = 0x03; - signature[offset++] = 0x04; - - signature[offset++] = ELEMENT_TYPE_GENERICINST; - signature[offset++] = ELEMENT_TYPE_VALUETYPE; - memcpy(&signature[offset], &callTargetReturnTypeRefBuffer, - callTargetReturnTypeRefSize); - offset += callTargetReturnTypeRefSize; - signature[offset++] = 0x01; - signature[offset++] = ELEMENT_TYPE_MVAR; - signature[offset++] = 0x02; - - signature[offset++] = ELEMENT_TYPE_MVAR; - signature[offset++] = 0x01; - - signature[offset++] = ELEMENT_TYPE_MVAR; - signature[offset++] = 0x02; - - signature[offset++] = ELEMENT_TYPE_CLASS; - memcpy(&signature[offset], &exTypeRefBuffer, exTypeRefSize); - offset += exTypeRefSize; - - signature[offset++] = ELEMENT_TYPE_VALUETYPE; - memcpy(&signature[offset], &callTargetStateBuffer, callTargetStateSize); - offset += callTargetStateSize; - - hr = module_metadata->metadata_emit->DefineMemberRef( - callTargetTypeRef, managed_profiler_calltarget_endmethod_name.data(), - signature, signatureLength, &endMethodMemberRef); - if (FAILED(hr)) { - Warn("Wrapper endMethodMemberRef could not be defined."); - return hr; - } - - // *** Define Method Spec + signatureLength = 4 + integrationTypeSize + currentTypeSize + returnSignatureLength; + offset = 0; - mdMethodSpec endMethodSpec = mdMethodSpecNil; - - unsigned integrationTypeBuffer; - ULONG integrationTypeSize = - CorSigCompressToken(integrationTypeRef, &integrationTypeBuffer); - - bool isValueType = currentType->valueType; - mdToken currentTypeRef = GetCurrentTypeRef(currentType, isValueType); - - unsigned currentTypeBuffer; - ULONG currentTypeSize = - CorSigCompressToken(currentTypeRef, ¤tTypeBuffer); - - PCCOR_SIGNATURE returnSignatureBuffer; - auto returnSignatureLength = - returnArgument->GetSignature(returnSignatureBuffer); + signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERICINST; + signature[offset++] = 0x03; - signatureLength = - 4 + integrationTypeSize + currentTypeSize + returnSignatureLength; - offset = 0; + signature[offset++] = ELEMENT_TYPE_CLASS; + memcpy(&signature[offset], &integrationTypeBuffer, integrationTypeSize); + offset += integrationTypeSize; - signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERICINST; - signature[offset++] = 0x03; + if (isValueType) + { + signature[offset++] = ELEMENT_TYPE_VALUETYPE; + } + else + { + signature[offset++] = ELEMENT_TYPE_CLASS; + } + memcpy(&signature[offset], ¤tTypeBuffer, currentTypeSize); + offset += currentTypeSize; + + memcpy(&signature[offset], returnSignatureBuffer, returnSignatureLength); + offset += returnSignatureLength; + + hr = module_metadata->metadata_emit->DefineMethodSpec(endMethodMemberRef, signature, signatureLength, + &endMethodSpec); + if (FAILED(hr)) + { + Warn("Error creating end method member spec."); + return hr; + } - signature[offset++] = ELEMENT_TYPE_CLASS; - memcpy(&signature[offset], &integrationTypeBuffer, integrationTypeSize); - offset += integrationTypeSize; + *instruction = rewriterWrapper->CallMember(endMethodSpec, false); + return S_OK; +} - if (isValueType) { - signature[offset++] = ELEMENT_TYPE_VALUETYPE; - } else { - signature[offset++] = ELEMENT_TYPE_CLASS; - } - memcpy(&signature[offset], ¤tTypeBuffer, currentTypeSize); - offset += currentTypeSize; +// write log exception +HRESULT CallTargetTokens::WriteLogException(void* rewriterWrapperPtr, mdTypeRef integrationTypeRef, + const TypeInfo* currentType, ILInstr** instruction) +{ + auto hr = EnsureBaseCalltargetTokens(); + if (FAILED(hr)) + { + return hr; + } + ILRewriterWrapper* rewriterWrapper = (ILRewriterWrapper*) rewriterWrapperPtr; + ModuleMetadata* module_metadata = GetMetadata(); - memcpy(&signature[offset], returnSignatureBuffer, returnSignatureLength); - offset += returnSignatureLength; + if (logExceptionRef == mdMemberRefNil) + { + unsigned exTypeRefBuffer; + auto exTypeRefSize = CorSigCompressToken(exTypeRef, &exTypeRefBuffer); + + auto signatureLength = 5 + exTypeRefSize; + COR_SIGNATURE signature[signatureBufferSize]; + unsigned offset = 0; + + signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERIC; + signature[offset++] = 0x02; + signature[offset++] = 0x01; + + signature[offset++] = ELEMENT_TYPE_VOID; + signature[offset++] = ELEMENT_TYPE_CLASS; + memcpy(&signature[offset], &exTypeRefBuffer, exTypeRefSize); + offset += exTypeRefSize; + + auto hr = module_metadata->metadata_emit->DefineMemberRef(callTargetTypeRef, + managed_profiler_calltarget_logexception_name.data(), + signature, signatureLength, &logExceptionRef); + if (FAILED(hr)) + { + Warn("Wrapper logExceptionRef could not be defined."); + return hr; + } + } - hr = module_metadata->metadata_emit->DefineMethodSpec( - endMethodMemberRef, signature, signatureLength, &endMethodSpec); - if (FAILED(hr)) { - Warn("Error creating end method member spec."); - return hr; - } + mdMethodSpec logExceptionMethodSpec = mdMethodSpecNil; - *instruction = rewriterWrapper->CallMember(endMethodSpec, false); - return S_OK; -} + unsigned integrationTypeBuffer; + ULONG integrationTypeSize = CorSigCompressToken(integrationTypeRef, &integrationTypeBuffer); -// write log exception -HRESULT CallTargetTokens::WriteLogException(void* rewriterWrapperPtr, - mdTypeRef integrationTypeRef, - const TypeInfo* currentType, - ILInstr** instruction) { - auto hr = EnsureBaseCalltargetTokens(); - if (FAILED(hr)) { - return hr; - } - ILRewriterWrapper* rewriterWrapper = (ILRewriterWrapper*)rewriterWrapperPtr; - ModuleMetadata* module_metadata = GetMetadata(); + bool isValueType = currentType->valueType; + mdToken currentTypeRef = GetCurrentTypeRef(currentType, isValueType); - if (logExceptionRef == mdMemberRefNil) { - unsigned exTypeRefBuffer; - auto exTypeRefSize = CorSigCompressToken(exTypeRef, &exTypeRefBuffer); + unsigned currentTypeBuffer; + ULONG currentTypeSize = CorSigCompressToken(currentTypeRef, ¤tTypeBuffer); - auto signatureLength = 5 + exTypeRefSize; + auto signatureLength = 4 + integrationTypeSize + currentTypeSize; COR_SIGNATURE signature[signatureBufferSize]; unsigned offset = 0; - - signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERIC; + signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERICINST; signature[offset++] = 0x02; - signature[offset++] = 0x01; - signature[offset++] = ELEMENT_TYPE_VOID; signature[offset++] = ELEMENT_TYPE_CLASS; - memcpy(&signature[offset], &exTypeRefBuffer, exTypeRefSize); - offset += exTypeRefSize; + memcpy(&signature[offset], &integrationTypeBuffer, integrationTypeSize); + offset += integrationTypeSize; - auto hr = module_metadata->metadata_emit->DefineMemberRef( - callTargetTypeRef, managed_profiler_calltarget_logexception_name.data(), - signature, signatureLength, &logExceptionRef); - if (FAILED(hr)) { - Warn("Wrapper logExceptionRef could not be defined."); - return hr; + if (isValueType) + { + signature[offset++] = ELEMENT_TYPE_VALUETYPE; + } + else + { + signature[offset++] = ELEMENT_TYPE_CLASS; + } + memcpy(&signature[offset], ¤tTypeBuffer, currentTypeSize); + offset += currentTypeSize; + + hr = module_metadata->metadata_emit->DefineMethodSpec(logExceptionRef, signature, signatureLength, + &logExceptionMethodSpec); + if (FAILED(hr)) + { + Warn("Error creating log exception method spec."); + return hr; } - } - - mdMethodSpec logExceptionMethodSpec = mdMethodSpecNil; - - unsigned integrationTypeBuffer; - ULONG integrationTypeSize = - CorSigCompressToken(integrationTypeRef, &integrationTypeBuffer); - - bool isValueType = currentType->valueType; - mdToken currentTypeRef = GetCurrentTypeRef(currentType, isValueType); - unsigned currentTypeBuffer; - ULONG currentTypeSize = - CorSigCompressToken(currentTypeRef, ¤tTypeBuffer); + *instruction = rewriterWrapper->CallMember(logExceptionMethodSpec, false); + return S_OK; +} - auto signatureLength = 4 + integrationTypeSize + currentTypeSize; - COR_SIGNATURE signature[signatureBufferSize]; - unsigned offset = 0; - signature[offset++] = IMAGE_CEE_CS_CALLCONV_GENERICINST; - signature[offset++] = 0x02; +HRESULT CallTargetTokens::WriteCallTargetReturnGetReturnValue(void* rewriterWrapperPtr, + mdTypeSpec callTargetReturnTypeSpec, + ILInstr** instruction) +{ + auto hr = EnsureBaseCalltargetTokens(); + if (FAILED(hr)) + { + return mdMemberRefNil; + } + ILRewriterWrapper* rewriterWrapper = (ILRewriterWrapper*) rewriterWrapperPtr; + ModuleMetadata* module_metadata = GetMetadata(); - signature[offset++] = ELEMENT_TYPE_CLASS; - memcpy(&signature[offset], &integrationTypeBuffer, integrationTypeSize); - offset += integrationTypeSize; + // Ensure T CallTargetReturn.GetReturnValue() member ref + mdMemberRef callTargetReturnGetValueMemberRef = mdMemberRefNil; - if (isValueType) { - signature[offset++] = ELEMENT_TYPE_VALUETYPE; - } else { - signature[offset++] = ELEMENT_TYPE_CLASS; - } - memcpy(&signature[offset], ¤tTypeBuffer, currentTypeSize); - offset += currentTypeSize; - - hr = module_metadata->metadata_emit->DefineMethodSpec( - logExceptionRef, signature, signatureLength, &logExceptionMethodSpec); - if (FAILED(hr)) { - Warn("Error creating log exception method spec."); - return hr; - } + auto signatureLength = 4; + COR_SIGNATURE signature[signatureBufferSize]; + unsigned offset = 0; - *instruction = rewriterWrapper->CallMember(logExceptionMethodSpec, false); - return S_OK; -} + signature[offset++] = IMAGE_CEE_CS_CALLCONV_DEFAULT | IMAGE_CEE_CS_CALLCONV_HASTHIS; + signature[offset++] = 0x00; + signature[offset++] = ELEMENT_TYPE_VAR; + signature[offset++] = 0x00; + hr = module_metadata->metadata_emit->DefineMemberRef( + callTargetReturnTypeSpec, managed_profiler_calltarget_returntype_getreturnvalue_name.data(), signature, + signatureLength, &callTargetReturnGetValueMemberRef); + if (FAILED(hr)) + { + Warn("Wrapper callTargetReturnGetValueMemberRef could not be defined."); + return mdMemberRefNil; + } -HRESULT CallTargetTokens::WriteCallTargetReturnGetReturnValue( - void* rewriterWrapperPtr, mdTypeSpec callTargetReturnTypeSpec, - ILInstr** instruction) { - auto hr = EnsureBaseCalltargetTokens(); - if (FAILED(hr)) { - return mdMemberRefNil; - } - ILRewriterWrapper* rewriterWrapper = (ILRewriterWrapper*)rewriterWrapperPtr; - ModuleMetadata* module_metadata = GetMetadata(); - - // Ensure T CallTargetReturn.GetReturnValue() member ref - mdMemberRef callTargetReturnGetValueMemberRef = mdMemberRefNil; - - auto signatureLength = 4; - COR_SIGNATURE signature[signatureBufferSize]; - unsigned offset = 0; - - signature[offset++] = - IMAGE_CEE_CS_CALLCONV_DEFAULT | IMAGE_CEE_CS_CALLCONV_HASTHIS; - signature[offset++] = 0x00; - signature[offset++] = ELEMENT_TYPE_VAR; - signature[offset++] = 0x00; - hr = module_metadata->metadata_emit->DefineMemberRef( - callTargetReturnTypeSpec, - managed_profiler_calltarget_returntype_getreturnvalue_name.data(), - signature, signatureLength, &callTargetReturnGetValueMemberRef); - if (FAILED(hr)) { - Warn("Wrapper callTargetReturnGetValueMemberRef could not be defined."); - return mdMemberRefNil; - } - - *instruction = rewriterWrapper->CallMember(callTargetReturnGetValueMemberRef, false); - return S_OK; + *instruction = rewriterWrapper->CallMember(callTargetReturnGetValueMemberRef, false); + return S_OK; } -} // namespace trace \ No newline at end of file +} // namespace trace \ No newline at end of file diff --git a/src/Datadog.Trace.ClrProfiler.Native/calltarget_tokens.h b/src/Datadog.Trace.ClrProfiler.Native/calltarget_tokens.h index 79022c9c5e..03313f4393 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/calltarget_tokens.h +++ b/src/Datadog.Trace.ClrProfiler.Native/calltarget_tokens.h @@ -11,135 +11,122 @@ #include "com_ptr.h" #include "il_rewriter.h" #include "integration.h" -#include "string.h" // NOLINT +#include "string.h" // NOLINT #define FASTPATH_COUNT 9 -namespace trace { +namespace trace +{ /// /// Class to control all the token references of the module where the calltarget will be called. /// Also provides useful helpers for the rewriting process /// -class CallTargetTokens { - private: - void* module_metadata_ptr = nullptr; - - // CallTarget constants - WSTRING managed_profiler_calltarget_type = WStr("Datadog.Trace.ClrProfiler.CallTarget.CallTargetInvoker"); - WSTRING managed_profiler_calltarget_beginmethod_name = WStr("BeginMethod"); - WSTRING managed_profiler_calltarget_endmethod_name = WStr("EndMethod"); - WSTRING managed_profiler_calltarget_logexception_name = WStr("LogException"); - WSTRING managed_profiler_calltarget_getdefaultvalue_name = WStr("GetDefaultValue"); - - WSTRING managed_profiler_calltarget_statetype = WStr("Datadog.Trace.ClrProfiler.CallTarget.CallTargetState"); - WSTRING managed_profiler_calltarget_statetype_getdefault_name =WStr("GetDefault"); - - WSTRING managed_profiler_calltarget_returntype = WStr("Datadog.Trace.ClrProfiler.CallTarget.CallTargetReturn"); - WSTRING managed_profiler_calltarget_returntype_getdefault_name = WStr("GetDefault"); - - WSTRING managed_profiler_calltarget_returntype_generics = WStr("Datadog.Trace.ClrProfiler.CallTarget.CallTargetReturn`1"); - WSTRING managed_profiler_calltarget_returntype_getreturnvalue_name = WStr("GetReturnValue"); - - // CorLib tokens - mdAssemblyRef corLibAssemblyRef = mdAssemblyRefNil; - mdTypeRef objectTypeRef = mdTypeRefNil; - mdTypeRef exTypeRef = mdTypeRefNil; - mdTypeRef typeRef = mdTypeRefNil; - mdTypeRef runtimeTypeHandleRef = mdTypeRefNil; - mdToken getTypeFromHandleToken = mdTokenNil; - mdTypeRef runtimeMethodHandleRef = mdTypeRefNil; - - // CallTarget tokens - mdAssemblyRef profilerAssemblyRef = mdAssemblyRefNil; - mdTypeRef callTargetTypeRef = mdTypeRefNil; - mdTypeRef callTargetStateTypeRef = mdTypeRefNil; - mdTypeRef callTargetReturnVoidTypeRef = mdTypeRefNil; - mdTypeRef callTargetReturnTypeRef = mdTypeRefNil; - - mdMemberRef beginArrayMemberRef = mdMemberRefNil; - mdMemberRef beginMethodFastPathRefs[FASTPATH_COUNT]; - mdMemberRef endVoidMemberRef = mdMemberRefNil; - - mdMemberRef logExceptionRef = mdMemberRefNil; - - mdMemberRef callTargetStateTypeGetDefault = mdMemberRefNil; - mdMemberRef callTargetReturnVoidTypeGetDefault = mdMemberRefNil; - mdMemberRef getDefaultMemberRef = mdMemberRefNil; - - inline ModuleMetadata* GetMetadata() { - return (ModuleMetadata*)module_metadata_ptr; - } - HRESULT EnsureCorLibTokens(); - HRESULT EnsureBaseCalltargetTokens(); - mdTypeRef GetTargetStateTypeRef(); - mdTypeRef GetTargetVoidReturnTypeRef(); - mdTypeSpec GetTargetReturnValueTypeRef( - FunctionMethodArgument* returnArgument); - mdMemberRef GetCallTargetStateDefaultMemberRef(); - mdMemberRef GetCallTargetReturnVoidDefaultMemberRef(); - mdMemberRef GetCallTargetReturnValueDefaultMemberRef( - mdTypeSpec callTargetReturnTypeSpec); - mdMethodSpec GetCallTargetDefaultValueMethodSpec( - FunctionMethodArgument* methodArgument); - mdToken GetCurrentTypeRef(const TypeInfo* currentType, bool& isValueType); - - HRESULT ModifyLocalSig(ILRewriter* reWriter, - FunctionMethodArgument* methodReturnValue, - ULONG* callTargetStateIndex, ULONG* exceptionIndex, - ULONG* callTargetReturnIndex, ULONG* returnValueIndex, - mdToken* callTargetStateToken, mdToken* exceptionToken, - mdToken* callTargetReturnToken); - - HRESULT WriteBeginMethodWithArgumentsArray(void* rewriterWrapperPtr, - mdTypeRef integrationTypeRef, - const TypeInfo* currentType, - ILInstr** instruction); - - public: - CallTargetTokens(void* module_metadata_ptr) { - this->module_metadata_ptr = module_metadata_ptr; - for (int i = 0; i < FASTPATH_COUNT; i++) { - beginMethodFastPathRefs[i] = mdMemberRefNil; +class CallTargetTokens +{ +private: + void* module_metadata_ptr = nullptr; + + // CallTarget constants + WSTRING managed_profiler_calltarget_type = WStr("Datadog.Trace.ClrProfiler.CallTarget.CallTargetInvoker"); + WSTRING managed_profiler_calltarget_beginmethod_name = WStr("BeginMethod"); + WSTRING managed_profiler_calltarget_endmethod_name = WStr("EndMethod"); + WSTRING managed_profiler_calltarget_logexception_name = WStr("LogException"); + WSTRING managed_profiler_calltarget_getdefaultvalue_name = WStr("GetDefaultValue"); + + WSTRING managed_profiler_calltarget_statetype = WStr("Datadog.Trace.ClrProfiler.CallTarget.CallTargetState"); + WSTRING managed_profiler_calltarget_statetype_getdefault_name = WStr("GetDefault"); + + WSTRING managed_profiler_calltarget_returntype = WStr("Datadog.Trace.ClrProfiler.CallTarget.CallTargetReturn"); + WSTRING managed_profiler_calltarget_returntype_getdefault_name = WStr("GetDefault"); + + WSTRING managed_profiler_calltarget_returntype_generics = + WStr("Datadog.Trace.ClrProfiler.CallTarget.CallTargetReturn`1"); + WSTRING managed_profiler_calltarget_returntype_getreturnvalue_name = WStr("GetReturnValue"); + + // CorLib tokens + mdAssemblyRef corLibAssemblyRef = mdAssemblyRefNil; + mdTypeRef objectTypeRef = mdTypeRefNil; + mdTypeRef exTypeRef = mdTypeRefNil; + mdTypeRef typeRef = mdTypeRefNil; + mdTypeRef runtimeTypeHandleRef = mdTypeRefNil; + mdToken getTypeFromHandleToken = mdTokenNil; + mdTypeRef runtimeMethodHandleRef = mdTypeRefNil; + + // CallTarget tokens + mdAssemblyRef profilerAssemblyRef = mdAssemblyRefNil; + mdTypeRef callTargetTypeRef = mdTypeRefNil; + mdTypeRef callTargetStateTypeRef = mdTypeRefNil; + mdTypeRef callTargetReturnVoidTypeRef = mdTypeRefNil; + mdTypeRef callTargetReturnTypeRef = mdTypeRefNil; + + mdMemberRef beginArrayMemberRef = mdMemberRefNil; + mdMemberRef beginMethodFastPathRefs[FASTPATH_COUNT]; + mdMemberRef endVoidMemberRef = mdMemberRefNil; + + mdMemberRef logExceptionRef = mdMemberRefNil; + + mdMemberRef callTargetStateTypeGetDefault = mdMemberRefNil; + mdMemberRef callTargetReturnVoidTypeGetDefault = mdMemberRefNil; + mdMemberRef getDefaultMemberRef = mdMemberRefNil; + + inline ModuleMetadata* GetMetadata() + { + return (ModuleMetadata*) module_metadata_ptr; } - } - mdTypeRef GetObjectTypeRef(); - mdTypeRef GetExceptionTypeRef(); - mdAssemblyRef GetCorLibAssemblyRef(); - - HRESULT ModifyLocalSigAndInitialize( - void* rewriterWrapperPtr, FunctionInfo* functionInfo, - ULONG* callTargetStateIndex, ULONG* exceptionIndex, - ULONG* callTargetReturnIndex, ULONG* returnValueIndex, - mdToken* callTargetStateToken, mdToken* exceptionToken, - mdToken* callTargetReturnToken, ILInstr** firstInstruction); - - HRESULT WriteBeginMethod(void* rewriterWrapperPtr, - mdTypeRef integrationTypeRef, - const TypeInfo* currentType, - std::vector &methodArguments, - ILInstr** instruction); - - HRESULT WriteEndVoidReturnMemberRef(void* rewriterWrapperPtr, - mdTypeRef integrationTypeRef, - const TypeInfo* currentType, - ILInstr** instruction); - - HRESULT WriteEndReturnMemberRef(void* rewriterWrapperPtr, - mdTypeRef integrationTypeRef, - const TypeInfo* currentType, - FunctionMethodArgument* returnArgument, - ILInstr** instruction); - - HRESULT WriteLogException(void* rewriterWrapperPtr, - mdTypeRef integrationTypeRef, - const TypeInfo* currentType, ILInstr** instruction); - - HRESULT WriteCallTargetReturnGetReturnValue( - void* rewriterWrapperPtr, mdTypeSpec callTargetReturnTypeSpec, - ILInstr** instruction); + HRESULT EnsureCorLibTokens(); + HRESULT EnsureBaseCalltargetTokens(); + mdTypeRef GetTargetStateTypeRef(); + mdTypeRef GetTargetVoidReturnTypeRef(); + mdTypeSpec GetTargetReturnValueTypeRef(FunctionMethodArgument* returnArgument); + mdMemberRef GetCallTargetStateDefaultMemberRef(); + mdMemberRef GetCallTargetReturnVoidDefaultMemberRef(); + mdMemberRef GetCallTargetReturnValueDefaultMemberRef(mdTypeSpec callTargetReturnTypeSpec); + mdMethodSpec GetCallTargetDefaultValueMethodSpec(FunctionMethodArgument* methodArgument); + mdToken GetCurrentTypeRef(const TypeInfo* currentType, bool& isValueType); + + HRESULT ModifyLocalSig(ILRewriter* reWriter, FunctionMethodArgument* methodReturnValue, ULONG* callTargetStateIndex, + ULONG* exceptionIndex, ULONG* callTargetReturnIndex, ULONG* returnValueIndex, + mdToken* callTargetStateToken, mdToken* exceptionToken, mdToken* callTargetReturnToken); + + HRESULT WriteBeginMethodWithArgumentsArray(void* rewriterWrapperPtr, mdTypeRef integrationTypeRef, + const TypeInfo* currentType, ILInstr** instruction); + +public: + CallTargetTokens(void* module_metadata_ptr) + { + this->module_metadata_ptr = module_metadata_ptr; + for (int i = 0; i < FASTPATH_COUNT; i++) + { + beginMethodFastPathRefs[i] = mdMemberRefNil; + } + } + mdTypeRef GetObjectTypeRef(); + mdTypeRef GetExceptionTypeRef(); + mdAssemblyRef GetCorLibAssemblyRef(); + + HRESULT ModifyLocalSigAndInitialize(void* rewriterWrapperPtr, FunctionInfo* functionInfo, + ULONG* callTargetStateIndex, ULONG* exceptionIndex, + ULONG* callTargetReturnIndex, ULONG* returnValueIndex, + mdToken* callTargetStateToken, mdToken* exceptionToken, + mdToken* callTargetReturnToken, ILInstr** firstInstruction); + + HRESULT WriteBeginMethod(void* rewriterWrapperPtr, mdTypeRef integrationTypeRef, const TypeInfo* currentType, + std::vector& methodArguments, ILInstr** instruction); + + HRESULT WriteEndVoidReturnMemberRef(void* rewriterWrapperPtr, mdTypeRef integrationTypeRef, + const TypeInfo* currentType, ILInstr** instruction); + + HRESULT WriteEndReturnMemberRef(void* rewriterWrapperPtr, mdTypeRef integrationTypeRef, const TypeInfo* currentType, + FunctionMethodArgument* returnArgument, ILInstr** instruction); + + HRESULT WriteLogException(void* rewriterWrapperPtr, mdTypeRef integrationTypeRef, const TypeInfo* currentType, + ILInstr** instruction); + + HRESULT WriteCallTargetReturnGetReturnValue(void* rewriterWrapperPtr, mdTypeSpec callTargetReturnTypeSpec, + ILInstr** instruction); }; -} // namespace trace +} // namespace trace -#endif // DD_CLR_PROFILER_CALLTARGET_TOKENS_H_ \ No newline at end of file +#endif // DD_CLR_PROFILER_CALLTARGET_TOKENS_H_ \ No newline at end of file diff --git a/src/Datadog.Trace.ClrProfiler.Native/class_factory.cpp b/src/Datadog.Trace.ClrProfiler.Native/class_factory.cpp index 3f6f4b1783..31a3ca3c0a 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/class_factory.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/class_factory.cpp @@ -7,69 +7,82 @@ #include "logging.h" #include "version.h" -ClassFactory::ClassFactory() : refCount(0) {} +ClassFactory::ClassFactory() : refCount(0) +{ +} -ClassFactory::~ClassFactory() {} +ClassFactory::~ClassFactory() +{ +} -HRESULT STDMETHODCALLTYPE ClassFactory::QueryInterface(REFIID riid, - void** ppvObject) { - if (riid == IID_IUnknown || riid == IID_IClassFactory) { - *ppvObject = this; - this->AddRef(); - return S_OK; - } +HRESULT STDMETHODCALLTYPE ClassFactory::QueryInterface(REFIID riid, void** ppvObject) +{ + if (riid == IID_IUnknown || riid == IID_IClassFactory) + { + *ppvObject = this; + this->AddRef(); + return S_OK; + } - *ppvObject = nullptr; - return E_NOINTERFACE; + *ppvObject = nullptr; + return E_NOINTERFACE; } -ULONG STDMETHODCALLTYPE ClassFactory::AddRef() { - return std::atomic_fetch_add(&this->refCount, 1) + 1; +ULONG STDMETHODCALLTYPE ClassFactory::AddRef() +{ + return std::atomic_fetch_add(&this->refCount, 1) + 1; } -ULONG STDMETHODCALLTYPE ClassFactory::Release() { - int count = std::atomic_fetch_sub(&this->refCount, 1) - 1; - if (count <= 0) { - delete this; - } +ULONG STDMETHODCALLTYPE ClassFactory::Release() +{ + int count = std::atomic_fetch_sub(&this->refCount, 1) - 1; + if (count <= 0) + { + delete this; + } - return count; + return count; } // profiler entry point -HRESULT STDMETHODCALLTYPE ClassFactory::CreateInstance(IUnknown* pUnkOuter, - REFIID riid, - void** ppvObject) { - if (pUnkOuter != nullptr) { - *ppvObject = nullptr; - return CLASS_E_NOAGGREGATION; - } +HRESULT STDMETHODCALLTYPE ClassFactory::CreateInstance(IUnknown* pUnkOuter, REFIID riid, void** ppvObject) +{ + if (pUnkOuter != nullptr) + { + *ppvObject = nullptr; + return CLASS_E_NOAGGREGATION; + } - trace::Info("Datadog CLR Profiler ", PROFILER_VERSION, - " on", + trace::Info("Datadog CLR Profiler ", PROFILER_VERSION, " on", #ifdef _WIN32 - " Windows" + " Windows" #elif MACOS - " macOS" + " macOS" #else - " Linux" + " Linux" #endif #ifdef AMD64 - , " (amd64)" + , + " (amd64)" #elif X86 - , " (x86)" + , + " (x86)" #elif ARM64 - , " (arm64)" + , + " (arm64)" #elif ARM - , " (arm)" + , " (arm)" #endif - ); - trace::Debug("ClassFactory::CreateInstance"); + ); + trace::Debug("ClassFactory::CreateInstance"); - auto profiler = new trace::CorProfiler(); - return profiler->QueryInterface(riid, ppvObject); + auto profiler = new trace::CorProfiler(); + return profiler->QueryInterface(riid, ppvObject); } -HRESULT STDMETHODCALLTYPE ClassFactory::LockServer(BOOL fLock) { return S_OK; } +HRESULT STDMETHODCALLTYPE ClassFactory::LockServer(BOOL fLock) +{ + return S_OK; +} diff --git a/src/Datadog.Trace.ClrProfiler.Native/class_factory.h b/src/Datadog.Trace.ClrProfiler.Native/class_factory.h index c7a36b8daa..afbd942459 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/class_factory.h +++ b/src/Datadog.Trace.ClrProfiler.Native/class_factory.h @@ -5,23 +5,22 @@ // Licensed under the MIT license. See LICENSE file in the project root for full // license information. -#include #include "unknwn.h" +#include -class ClassFactory : public IClassFactory { - private: - std::atomic refCount; +class ClassFactory : public IClassFactory +{ +private: + std::atomic refCount; - public: - ClassFactory(); - virtual ~ClassFactory(); - HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, - void** ppvObject) override; - ULONG STDMETHODCALLTYPE AddRef(void) override; - ULONG STDMETHODCALLTYPE Release(void) override; - HRESULT STDMETHODCALLTYPE CreateInstance(IUnknown* pUnkOuter, REFIID riid, - void** ppvObject) override; - HRESULT STDMETHODCALLTYPE LockServer(BOOL fLock) override; +public: + ClassFactory(); + virtual ~ClassFactory(); + HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject) override; + ULONG STDMETHODCALLTYPE AddRef(void) override; + ULONG STDMETHODCALLTYPE Release(void) override; + HRESULT STDMETHODCALLTYPE CreateInstance(IUnknown* pUnkOuter, REFIID riid, void** ppvObject) override; + HRESULT STDMETHODCALLTYPE LockServer(BOOL fLock) override; }; -#endif // DD_CLR_PROFILER_CLASS_FACTORY_H_ +#endif // DD_CLR_PROFILER_CLASS_FACTORY_H_ diff --git a/src/Datadog.Trace.ClrProfiler.Native/clr_helpers.cpp b/src/Datadog.Trace.ClrProfiler.Native/clr_helpers.cpp index 53b774b855..e11b68e5e9 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/clr_helpers.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/clr_helpers.cpp @@ -2,1380 +2,1493 @@ #include -#include -#include #include "dd_profiler_constants.h" #include "environment_variables.h" #include "logging.h" #include "macros.h" #include "pal.h" #include "sig_helpers.h" +#include +#include -namespace trace { - -RuntimeInformation GetRuntimeInformation(ICorProfilerInfo4* info) { - COR_PRF_RUNTIME_TYPE runtime_type; - USHORT major_version; - USHORT minor_version; - USHORT build_version; - USHORT qfe_version; - - auto hr = info->GetRuntimeInformation(nullptr, &runtime_type, &major_version, &minor_version, &build_version, &qfe_version, 0, nullptr, nullptr); - if (FAILED(hr)) { - return {}; - } +namespace trace +{ + +RuntimeInformation GetRuntimeInformation(ICorProfilerInfo4* info) +{ + COR_PRF_RUNTIME_TYPE runtime_type; + USHORT major_version; + USHORT minor_version; + USHORT build_version; + USHORT qfe_version; + + auto hr = info->GetRuntimeInformation(nullptr, &runtime_type, &major_version, &minor_version, &build_version, + &qfe_version, 0, nullptr, nullptr); + if (FAILED(hr)) + { + return {}; + } - return {runtime_type, major_version, minor_version, build_version, qfe_version}; + return {runtime_type, major_version, minor_version, build_version, qfe_version}; } -AssemblyInfo GetAssemblyInfo(ICorProfilerInfo4* info, - const AssemblyID& assembly_id) { - WCHAR assembly_name[kNameMaxSize]; - DWORD assembly_name_len = 0; - AppDomainID app_domain_id; - ModuleID manifest_module_id; +AssemblyInfo GetAssemblyInfo(ICorProfilerInfo4* info, const AssemblyID& assembly_id) +{ + WCHAR assembly_name[kNameMaxSize]; + DWORD assembly_name_len = 0; + AppDomainID app_domain_id; + ModuleID manifest_module_id; - auto hr = info->GetAssemblyInfo(assembly_id, kNameMaxSize, &assembly_name_len, - assembly_name, &app_domain_id, &manifest_module_id); + auto hr = info->GetAssemblyInfo(assembly_id, kNameMaxSize, &assembly_name_len, assembly_name, &app_domain_id, + &manifest_module_id); - if (FAILED(hr) || assembly_name_len == 0) { - return {}; - } + if (FAILED(hr) || assembly_name_len == 0) + { + return {}; + } - WCHAR app_domain_name[kNameMaxSize]; - DWORD app_domain_name_len = 0; + WCHAR app_domain_name[kNameMaxSize]; + DWORD app_domain_name_len = 0; - hr = info->GetAppDomainInfo(app_domain_id, kNameMaxSize, &app_domain_name_len, - app_domain_name, nullptr); + hr = info->GetAppDomainInfo(app_domain_id, kNameMaxSize, &app_domain_name_len, app_domain_name, nullptr); - if (FAILED(hr) || app_domain_name_len == 0) { - return {}; - } + if (FAILED(hr) || app_domain_name_len == 0) + { + return {}; + } - return {assembly_id, WSTRING(assembly_name), manifest_module_id, app_domain_id, - WSTRING(app_domain_name)}; + return {assembly_id, WSTRING(assembly_name), manifest_module_id, app_domain_id, WSTRING(app_domain_name)}; } -AssemblyMetadata GetAssemblyImportMetadata( - const ComPtr& assembly_import) { - mdAssembly current = mdAssemblyNil; - auto hr = assembly_import->GetAssemblyFromScope(¤t); - if (FAILED(hr)) { - return {}; - } - WCHAR name[kNameMaxSize]; - DWORD name_len = 0; - ASSEMBLYMETADATA assembly_metadata{}; - DWORD assembly_flags = 0; - const ModuleID placeholder_module_id = 0; - - hr = assembly_import->GetAssemblyProps(current, nullptr, nullptr, nullptr, - name, kNameMaxSize, &name_len, - &assembly_metadata, &assembly_flags); - if (FAILED(hr) || name_len == 0) { - return {}; - } - return AssemblyMetadata( - placeholder_module_id, name, current, assembly_metadata.usMajorVersion, - assembly_metadata.usMinorVersion, assembly_metadata.usBuildNumber, - assembly_metadata.usRevisionNumber); +AssemblyMetadata GetAssemblyImportMetadata(const ComPtr& assembly_import) +{ + mdAssembly current = mdAssemblyNil; + auto hr = assembly_import->GetAssemblyFromScope(¤t); + if (FAILED(hr)) + { + return {}; + } + WCHAR name[kNameMaxSize]; + DWORD name_len = 0; + ASSEMBLYMETADATA assembly_metadata{}; + DWORD assembly_flags = 0; + const ModuleID placeholder_module_id = 0; + + hr = assembly_import->GetAssemblyProps(current, nullptr, nullptr, nullptr, name, kNameMaxSize, &name_len, + &assembly_metadata, &assembly_flags); + if (FAILED(hr) || name_len == 0) + { + return {}; + } + return AssemblyMetadata(placeholder_module_id, name, current, assembly_metadata.usMajorVersion, + assembly_metadata.usMinorVersion, assembly_metadata.usBuildNumber, + assembly_metadata.usRevisionNumber); } -AssemblyMetadata GetReferencedAssemblyMetadata( - const ComPtr& assembly_import, - const mdAssemblyRef& assembly_ref) { - WCHAR name[kNameMaxSize]; - DWORD name_len = 0; - ASSEMBLYMETADATA assembly_metadata{}; - DWORD assembly_flags = 0; - const ModuleID module_id_placeholder = 0; - const auto hr = assembly_import->GetAssemblyRefProps( - assembly_ref, nullptr, nullptr, name, kNameMaxSize, &name_len, - &assembly_metadata, nullptr, nullptr, &assembly_flags); - if (FAILED(hr) || name_len == 0) { - return {}; - } - return AssemblyMetadata( - module_id_placeholder, name, assembly_ref, - assembly_metadata.usMajorVersion, assembly_metadata.usMinorVersion, - assembly_metadata.usBuildNumber, assembly_metadata.usRevisionNumber); +AssemblyMetadata GetReferencedAssemblyMetadata(const ComPtr& assembly_import, + const mdAssemblyRef& assembly_ref) +{ + WCHAR name[kNameMaxSize]; + DWORD name_len = 0; + ASSEMBLYMETADATA assembly_metadata{}; + DWORD assembly_flags = 0; + const ModuleID module_id_placeholder = 0; + const auto hr = assembly_import->GetAssemblyRefProps(assembly_ref, nullptr, nullptr, name, kNameMaxSize, &name_len, + &assembly_metadata, nullptr, nullptr, &assembly_flags); + if (FAILED(hr) || name_len == 0) + { + return {}; + } + return AssemblyMetadata(module_id_placeholder, name, assembly_ref, assembly_metadata.usMajorVersion, + assembly_metadata.usMinorVersion, assembly_metadata.usBuildNumber, + assembly_metadata.usRevisionNumber); } -std::vector GetSignatureByteRepresentation( - ULONG signature_length, PCCOR_SIGNATURE raw_signature) { - std::vector signature_data(signature_length); - for (ULONG i = 0; i < signature_length; i++) { - signature_data[i] = raw_signature[i]; - } +std::vector GetSignatureByteRepresentation(ULONG signature_length, PCCOR_SIGNATURE raw_signature) +{ + std::vector signature_data(signature_length); + for (ULONG i = 0; i < signature_length; i++) + { + signature_data[i] = raw_signature[i]; + } - return signature_data; + return signature_data; } -FunctionInfo GetFunctionInfo(const ComPtr& metadata_import, const mdToken& token) { - mdToken parent_token = mdTokenNil; - mdToken method_spec_token = mdTokenNil; - mdToken method_def_token = mdTokenNil; - WCHAR function_name[kNameMaxSize]{}; - DWORD function_name_len = 0; - - PCCOR_SIGNATURE raw_signature; - ULONG raw_signature_len; - BOOL is_generic = false; - std::vector final_signature_bytes; - std::vector method_spec_signature; - - HRESULT hr = E_FAIL; - const auto token_type = TypeFromToken(token); - switch (token_type) { - case mdtMemberRef: - hr = metadata_import->GetMemberRefProps( - token, &parent_token, function_name, kNameMaxSize, &function_name_len, - &raw_signature, &raw_signature_len); - break; - case mdtMethodDef: - hr = metadata_import->GetMemberProps( - token, &parent_token, function_name, kNameMaxSize, &function_name_len, - nullptr, &raw_signature, &raw_signature_len, nullptr, nullptr, - nullptr, nullptr, nullptr); - break; - case mdtMethodSpec: { - hr = metadata_import->GetMethodSpecProps( - token, &parent_token, &raw_signature, &raw_signature_len); - is_generic = true; - if (FAILED(hr)) { +FunctionInfo GetFunctionInfo(const ComPtr& metadata_import, const mdToken& token) +{ + mdToken parent_token = mdTokenNil; + mdToken method_spec_token = mdTokenNil; + mdToken method_def_token = mdTokenNil; + WCHAR function_name[kNameMaxSize]{}; + DWORD function_name_len = 0; + + PCCOR_SIGNATURE raw_signature; + ULONG raw_signature_len; + BOOL is_generic = false; + std::vector final_signature_bytes; + std::vector method_spec_signature; + + HRESULT hr = E_FAIL; + const auto token_type = TypeFromToken(token); + switch (token_type) + { + case mdtMemberRef: + hr = metadata_import->GetMemberRefProps(token, &parent_token, function_name, kNameMaxSize, + &function_name_len, &raw_signature, &raw_signature_len); + break; + case mdtMethodDef: + hr = metadata_import->GetMemberProps(token, &parent_token, function_name, kNameMaxSize, &function_name_len, + nullptr, &raw_signature, &raw_signature_len, nullptr, nullptr, nullptr, + nullptr, nullptr); + break; + case mdtMethodSpec: + { + hr = metadata_import->GetMethodSpecProps(token, &parent_token, &raw_signature, &raw_signature_len); + is_generic = true; + if (FAILED(hr)) + { + return {}; + } + const auto generic_info = GetFunctionInfo(metadata_import, parent_token); + final_signature_bytes = generic_info.signature.data; + method_spec_signature = GetSignatureByteRepresentation(raw_signature_len, raw_signature); + std::memcpy(function_name, generic_info.name.c_str(), sizeof(WCHAR) * (generic_info.name.length() + 1)); + function_name_len = DWORD(generic_info.name.length() + 1); + method_spec_token = token; + method_def_token = generic_info.id; + } + break; + default: + Warn("[trace::GetFunctionInfo] unknown token type: {}", token_type); + return {}; + } + if (FAILED(hr) || function_name_len == 0) + { return {}; - } - const auto generic_info = GetFunctionInfo(metadata_import, parent_token); - final_signature_bytes = generic_info.signature.data; - method_spec_signature = - GetSignatureByteRepresentation(raw_signature_len, raw_signature); - std::memcpy(function_name, generic_info.name.c_str(), - sizeof(WCHAR) * (generic_info.name.length() + 1)); - function_name_len = DWORD(generic_info.name.length() + 1); - method_spec_token = token; - method_def_token = generic_info.id; - } break; - default: - Warn("[trace::GetFunctionInfo] unknown token type: {}", token_type); - return {}; - } - if (FAILED(hr) || function_name_len == 0) { - return {}; - } - - // parent_token could be: TypeDef, TypeRef, TypeSpec, ModuleRef, MethodDef - const auto type_info = GetTypeInfo(metadata_import, parent_token); - - if (is_generic) { - // use the generic constructor and feed both method signatures - return {method_spec_token, - WSTRING(function_name), - type_info, - MethodSignature(final_signature_bytes), - MethodSignature(method_spec_signature), - method_def_token, FunctionMethodSignature(raw_signature, raw_signature_len)}; - } - - final_signature_bytes = - GetSignatureByteRepresentation(raw_signature_len, raw_signature); - - return {token, WSTRING(function_name), type_info, - MethodSignature(final_signature_bytes), - FunctionMethodSignature(raw_signature, raw_signature_len)}; -} + } -ModuleInfo GetModuleInfo(ICorProfilerInfo4* info, const ModuleID& module_id) { - const DWORD module_path_size = 260; - WCHAR module_path[module_path_size]{}; - DWORD module_path_len = 0; - LPCBYTE base_load_address; - AssemblyID assembly_id = 0; - DWORD module_flags = 0; - const HRESULT hr = info->GetModuleInfo2( - module_id, &base_load_address, module_path_size, &module_path_len, - module_path, &assembly_id, &module_flags); - if (FAILED(hr) || module_path_len == 0) { - return {}; - } - return {module_id, WSTRING(module_path), GetAssemblyInfo(info, assembly_id), - module_flags}; -} + // parent_token could be: TypeDef, TypeRef, TypeSpec, ModuleRef, MethodDef + const auto type_info = GetTypeInfo(metadata_import, parent_token); + + if (is_generic) + { + // use the generic constructor and feed both method signatures + return {method_spec_token, + WSTRING(function_name), + type_info, + MethodSignature(final_signature_bytes), + MethodSignature(method_spec_signature), + method_def_token, + FunctionMethodSignature(raw_signature, raw_signature_len)}; + } -TypeInfo GetTypeInfo(const ComPtr& metadata_import, - const mdToken& token) { - mdToken parent_token = mdTokenNil; - TypeInfo* parentTypeInfo = nullptr; - mdToken parent_type_token = mdTokenNil; - WCHAR type_name[kNameMaxSize]{}; - DWORD type_name_len = 0; - DWORD type_flags; - TypeInfo* extendsInfo = nullptr; - mdToken type_extends = mdTokenNil; - bool type_valueType = false; - bool type_isGeneric = false; - - HRESULT hr = E_FAIL; - const auto token_type = TypeFromToken(token); - - switch (token_type) { - case mdtTypeDef: - hr = metadata_import->GetTypeDefProps(token, type_name, kNameMaxSize, - &type_name_len, &type_flags, - &type_extends); - - metadata_import->GetNestedClassProps(token, &parent_type_token); - if (parent_type_token != mdTokenNil) { - parentTypeInfo = new TypeInfo(GetTypeInfo(metadata_import, parent_type_token)); - } - - if (type_extends != mdTokenNil) { - extendsInfo = new TypeInfo(GetTypeInfo(metadata_import, type_extends)); - type_valueType = extendsInfo->name == WStr("System.ValueType") || - extendsInfo->name == WStr("System.Enum"); - } - break; - case mdtTypeRef: - hr = metadata_import->GetTypeRefProps(token, &parent_token, type_name, - kNameMaxSize, &type_name_len); - break; - case mdtTypeSpec: { - PCCOR_SIGNATURE signature{}; - ULONG signature_length{}; - - hr = metadata_import->GetTypeSpecFromToken(token, &signature, - &signature_length); - - if (FAILED(hr) || signature_length < 3) { - return {}; - } - - if (signature[0] & ELEMENT_TYPE_GENERICINST) { - mdToken type_token; - CorSigUncompressToken(&signature[2], &type_token); - const auto baseType = GetTypeInfo(metadata_import, type_token); - return {baseType.id, baseType.name, token, token_type, - baseType.extend_from, - baseType.valueType, - baseType.isGeneric, - baseType.parent_type}; - } - } break; - case mdtModuleRef: - metadata_import->GetModuleRefProps(token, type_name, kNameMaxSize, &type_name_len); - break; - case mdtMemberRef: - return GetFunctionInfo(metadata_import, token).type; - break; - case mdtMethodDef: - return GetFunctionInfo(metadata_import, token).type; - break; - } - if (FAILED(hr) || type_name_len == 0) { - return {}; - } - - const auto type_name_string = WSTRING(type_name); - const auto generic_token_index = type_name_string.rfind(WStr("`")); - if (generic_token_index != std::string::npos) { - const auto idxFromRight = type_name_string.length() - generic_token_index - 1; - type_isGeneric = idxFromRight == 1 || idxFromRight == 2; - } - - return { token, type_name_string, mdTypeSpecNil, token_type, extendsInfo, type_valueType, type_isGeneric, parentTypeInfo }; + final_signature_bytes = GetSignatureByteRepresentation(raw_signature_len, raw_signature); + + return {token, WSTRING(function_name), type_info, MethodSignature(final_signature_bytes), + FunctionMethodSignature(raw_signature, raw_signature_len)}; } -mdAssemblyRef FindAssemblyRef( - const ComPtr& assembly_import, - const WSTRING& assembly_name) { - for (mdAssemblyRef assembly_ref : EnumAssemblyRefs(assembly_import)) { - if (GetReferencedAssemblyMetadata(assembly_import, assembly_ref).name == - assembly_name) { - return assembly_ref; +ModuleInfo GetModuleInfo(ICorProfilerInfo4* info, const ModuleID& module_id) +{ + const DWORD module_path_size = 260; + WCHAR module_path[module_path_size]{}; + DWORD module_path_len = 0; + LPCBYTE base_load_address; + AssemblyID assembly_id = 0; + DWORD module_flags = 0; + const HRESULT hr = info->GetModuleInfo2(module_id, &base_load_address, module_path_size, &module_path_len, + module_path, &assembly_id, &module_flags); + if (FAILED(hr) || module_path_len == 0) + { + return {}; } - } - return mdAssemblyRefNil; + return {module_id, WSTRING(module_path), GetAssemblyInfo(info, assembly_id), module_flags}; } -std::vector FilterIntegrationsByName( - const std::vector& integrations, - const std::vector& disabled_integration_names) { - std::vector enabled; - - for (auto& i : integrations) { - bool disabled = false; - for (auto& disabled_integration : disabled_integration_names) { - if (i.integration_name == disabled_integration) { - // this integration is disabled, skip it - disabled = true; +TypeInfo GetTypeInfo(const ComPtr& metadata_import, const mdToken& token) +{ + mdToken parent_token = mdTokenNil; + TypeInfo* parentTypeInfo = nullptr; + mdToken parent_type_token = mdTokenNil; + WCHAR type_name[kNameMaxSize]{}; + DWORD type_name_len = 0; + DWORD type_flags; + TypeInfo* extendsInfo = nullptr; + mdToken type_extends = mdTokenNil; + bool type_valueType = false; + bool type_isGeneric = false; + + HRESULT hr = E_FAIL; + const auto token_type = TypeFromToken(token); + + switch (token_type) + { + case mdtTypeDef: + hr = metadata_import->GetTypeDefProps(token, type_name, kNameMaxSize, &type_name_len, &type_flags, + &type_extends); + + metadata_import->GetNestedClassProps(token, &parent_type_token); + if (parent_type_token != mdTokenNil) + { + parentTypeInfo = new TypeInfo(GetTypeInfo(metadata_import, parent_type_token)); + } + + if (type_extends != mdTokenNil) + { + extendsInfo = new TypeInfo(GetTypeInfo(metadata_import, type_extends)); + type_valueType = + extendsInfo->name == WStr("System.ValueType") || extendsInfo->name == WStr("System.Enum"); + } + break; + case mdtTypeRef: + hr = metadata_import->GetTypeRefProps(token, &parent_token, type_name, kNameMaxSize, &type_name_len); + break; + case mdtTypeSpec: + { + PCCOR_SIGNATURE signature{}; + ULONG signature_length{}; + + hr = metadata_import->GetTypeSpecFromToken(token, &signature, &signature_length); + + if (FAILED(hr) || signature_length < 3) + { + return {}; + } + + if (signature[0] & ELEMENT_TYPE_GENERICINST) + { + mdToken type_token; + CorSigUncompressToken(&signature[2], &type_token); + const auto baseType = GetTypeInfo(metadata_import, type_token); + return {baseType.id, baseType.name, token, + token_type, baseType.extend_from, baseType.valueType, + baseType.isGeneric, baseType.parent_type}; + } + } break; - } + case mdtModuleRef: + metadata_import->GetModuleRefProps(token, type_name, kNameMaxSize, &type_name_len); + break; + case mdtMemberRef: + return GetFunctionInfo(metadata_import, token).type; + break; + case mdtMethodDef: + return GetFunctionInfo(metadata_import, token).type; + break; + } + if (FAILED(hr) || type_name_len == 0) + { + return {}; } - if (!disabled) { - enabled.push_back(i); + const auto type_name_string = WSTRING(type_name); + const auto generic_token_index = type_name_string.rfind(WStr("`")); + if (generic_token_index != std::string::npos) + { + const auto idxFromRight = type_name_string.length() - generic_token_index - 1; + type_isGeneric = idxFromRight == 1 || idxFromRight == 2; } - } - return enabled; + return {token, type_name_string, mdTypeSpecNil, token_type, + extendsInfo, type_valueType, type_isGeneric, parentTypeInfo}; } -std::vector FlattenIntegrations( - const std::vector& integrations, - bool is_calltarget_enabled) { - std::vector flattened; - - for (auto& i : integrations) { - for (auto& mr : i.method_replacements) { - const auto isCallTargetIntegration = - mr.wrapper_method.action == calltarget_modification_action; - - if (is_calltarget_enabled && isCallTargetIntegration) { - flattened.emplace_back(i.integration_name, mr); - } else if (!is_calltarget_enabled && !isCallTargetIntegration) { - flattened.emplace_back(i.integration_name, mr); - } +mdAssemblyRef FindAssemblyRef(const ComPtr& assembly_import, const WSTRING& assembly_name) +{ + for (mdAssemblyRef assembly_ref : EnumAssemblyRefs(assembly_import)) + { + if (GetReferencedAssemblyMetadata(assembly_import, assembly_ref).name == assembly_name) + { + return assembly_ref; + } } - } - - return flattened; + return mdAssemblyRefNil; } -std::vector FilterIntegrationsByCaller( - const std::vector& integration_methods, - const AssemblyInfo assembly) { - std::vector enabled; +std::vector FilterIntegrationsByName(const std::vector& integrations, + const std::vector& disabled_integration_names) +{ + std::vector enabled; + + for (auto& i : integrations) + { + bool disabled = false; + for (auto& disabled_integration : disabled_integration_names) + { + if (i.integration_name == disabled_integration) + { + // this integration is disabled, skip it + disabled = true; + break; + } + } - for (auto& i : integration_methods) { - if (i.replacement.caller_method.assembly.name.empty() || - i.replacement.caller_method.assembly.name == assembly.name) { - enabled.push_back(i); + if (!disabled) + { + enabled.push_back(i); + } } - } - return enabled; + return enabled; } -bool AssemblyMeetsIntegrationRequirements( - const AssemblyMetadata metadata, - const MethodReplacement method_replacement) { - const auto target = method_replacement.target_method; - - if (target.assembly.name != metadata.name) { - // not the expected assembly - return false; - } +std::vector FlattenIntegrations(const std::vector& integrations, + bool is_calltarget_enabled) +{ + std::vector flattened; - if (target.min_version > metadata.version) { - return false; - } + for (auto& i : integrations) + { + for (auto& mr : i.method_replacements) + { + const auto isCallTargetIntegration = mr.wrapper_method.action == calltarget_modification_action; - if (target.max_version < metadata.version) { - return false; - } + if (is_calltarget_enabled && isCallTargetIntegration) + { + flattened.emplace_back(i.integration_name, mr); + } + else if (!is_calltarget_enabled && !isCallTargetIntegration) + { + flattened.emplace_back(i.integration_name, mr); + } + } + } - return true; + return flattened; } -std::vector FilterIntegrationsByTarget( - const std::vector& integration_methods, - const ComPtr& assembly_import) { - std::vector enabled; - - const auto assembly_metadata = GetAssemblyImportMetadata(assembly_import); - - for (auto& i : integration_methods) { - bool found = false; - if (AssemblyMeetsIntegrationRequirements(assembly_metadata, i.replacement)) { - found = true; - } else { - for (auto& assembly_ref : EnumAssemblyRefs(assembly_import)) { - const auto metadata_ref = GetReferencedAssemblyMetadata(assembly_import, assembly_ref); - if (AssemblyMeetsIntegrationRequirements(metadata_ref, i.replacement)) { - found = true; - break; +std::vector FilterIntegrationsByCaller(const std::vector& integration_methods, + const AssemblyInfo assembly) +{ + std::vector enabled; + + for (auto& i : integration_methods) + { + if (i.replacement.caller_method.assembly.name.empty() || + i.replacement.caller_method.assembly.name == assembly.name) + { + enabled.push_back(i); } - } } - if (found) { - enabled.push_back(i); - } - } - - return enabled; + return enabled; } -std::vector FilterIntegrationsByTargetAssemblyName( - const std::vector& integration_methods, - const std::vector& excluded_assembly_names) { - std::vector methods; - - for (auto& i : integration_methods) { - bool assembly_excluded = false; +bool AssemblyMeetsIntegrationRequirements(const AssemblyMetadata metadata, const MethodReplacement method_replacement) +{ + const auto target = method_replacement.target_method; - for (auto& excluded_assembly_name : excluded_assembly_names) { - if (i.replacement.target_method.assembly.name == excluded_assembly_name) { - assembly_excluded = true; - break; - } + if (target.assembly.name != metadata.name) + { + // not the expected assembly + return false; } - if (!assembly_excluded) { - methods.emplace_back(i); + if (target.min_version > metadata.version) + { + return false; } - } - - return methods; -} - -mdMethodSpec DefineMethodSpec(const ComPtr& metadata_emit, - const mdToken& token, - const MethodSignature& signature) { - mdMethodSpec spec = mdMethodSpecNil; - auto hr = metadata_emit->DefineMethodSpec( - token, signature.data.data(), ULONG(signature.data.size()), &spec); - if (FAILED(hr)) { - Warn("[DefineMethodSpec] failed to define method spec"); - } - return spec; -} - -TypeInfo RetrieveTypeForSignature( - const ComPtr& metadata_import, - const FunctionInfo& function_info, const size_t current_index, - ULONG& token_length) { - mdToken type_token; - const auto type_token_start = - PCCOR_SIGNATURE(&function_info.signature.data[current_index]); - token_length = CorSigUncompressToken(type_token_start, &type_token); - auto type_data = GetTypeInfo(metadata_import, type_token); - return type_data; -} -bool TryParseSignatureTypes(const ComPtr& metadata_import, - const FunctionInfo& function_info, - std::vector& signature_result) { - try { - const auto signature_size = function_info.signature.data.size(); - const auto generic_count = function_info.signature.NumberOfTypeArguments(); - const auto param_count = function_info.signature.NumberOfArguments(); - size_t current_index = 2; // Where the parameters actually start - - if (generic_count > 0) { - current_index++; // offset by one because the method is generic + if (target.max_version < metadata.version) + { + return false; } - const auto expected_number_of_types = param_count + 1; - size_t current_type_index = 0; - std::vector type_names(expected_number_of_types); - - std::stack generic_arg_stack; - WSTRING append_to_type = WStr(""); - WSTRING current_type_name = WStr(""); - - for (; current_index < signature_size; current_index++) { - mdToken type_token; - ULONG token_length; - auto param_piece = function_info.signature.data[current_index]; - const auto cor_element_type = CorElementType(param_piece); - - switch (cor_element_type) { - case ELEMENT_TYPE_VOID: { - current_type_name.append(WStr("System.Void")); - break; - } - - case ELEMENT_TYPE_BOOLEAN: { - current_type_name.append(WStr("System.Boolean")); - break; - } - - case ELEMENT_TYPE_CHAR: { - current_type_name.append(WStr("System.Char16")); - break; - } + return true; +} - case ELEMENT_TYPE_I1: { - current_type_name.append(WStr("System.SByte")); - break; - } +std::vector FilterIntegrationsByTarget(const std::vector& integration_methods, + const ComPtr& assembly_import) +{ + std::vector enabled; - case ELEMENT_TYPE_U1: { - current_type_name.append(WStr("System.Byte")); - break; - } + const auto assembly_metadata = GetAssemblyImportMetadata(assembly_import); - case ELEMENT_TYPE_I2: { - current_type_name.append(WStr("System.Int16")); - break; + for (auto& i : integration_methods) + { + bool found = false; + if (AssemblyMeetsIntegrationRequirements(assembly_metadata, i.replacement)) + { + found = true; } - - case ELEMENT_TYPE_U2: { - current_type_name.append(WStr("System.UInt16")); - break; + else + { + for (auto& assembly_ref : EnumAssemblyRefs(assembly_import)) + { + const auto metadata_ref = GetReferencedAssemblyMetadata(assembly_import, assembly_ref); + if (AssemblyMeetsIntegrationRequirements(metadata_ref, i.replacement)) + { + found = true; + break; + } + } } - case ELEMENT_TYPE_I4: { - current_type_name.append(WStr("System.Int32")); - break; + if (found) + { + enabled.push_back(i); } + } - case ELEMENT_TYPE_U4: { - current_type_name.append(WStr("System.UInt32")); - break; - } + return enabled; +} - case ELEMENT_TYPE_I8: { - current_type_name.append(WStr("System.Int64")); - break; +std::vector +FilterIntegrationsByTargetAssemblyName(const std::vector& integration_methods, + const std::vector& excluded_assembly_names) +{ + std::vector methods; + + for (auto& i : integration_methods) + { + bool assembly_excluded = false; + + for (auto& excluded_assembly_name : excluded_assembly_names) + { + if (i.replacement.target_method.assembly.name == excluded_assembly_name) + { + assembly_excluded = true; + break; + } } - case ELEMENT_TYPE_U8: { - current_type_name.append(WStr("System.UInt64")); - break; + if (!assembly_excluded) + { + methods.emplace_back(i); } + } - case ELEMENT_TYPE_R4: { - current_type_name.append(WStr("System.Single")); - break; - } + return methods; +} - case ELEMENT_TYPE_R8: { - current_type_name.append(WStr("System.Double")); - break; - } +mdMethodSpec DefineMethodSpec(const ComPtr& metadata_emit, const mdToken& token, + const MethodSignature& signature) +{ + mdMethodSpec spec = mdMethodSpecNil; + auto hr = metadata_emit->DefineMethodSpec(token, signature.data.data(), ULONG(signature.data.size()), &spec); + if (FAILED(hr)) + { + Warn("[DefineMethodSpec] failed to define method spec"); + } + return spec; +} - case ELEMENT_TYPE_STRING: { - current_type_name.append(WStr("System.String")); - break; - } +TypeInfo RetrieveTypeForSignature(const ComPtr& metadata_import, const FunctionInfo& function_info, + const size_t current_index, ULONG& token_length) +{ + mdToken type_token; + const auto type_token_start = PCCOR_SIGNATURE(&function_info.signature.data[current_index]); + token_length = CorSigUncompressToken(type_token_start, &type_token); + auto type_data = GetTypeInfo(metadata_import, type_token); + return type_data; +} - case ELEMENT_TYPE_OBJECT: { - current_type_name.append(WStr("System.Object")); - break; +bool TryParseSignatureTypes(const ComPtr& metadata_import, const FunctionInfo& function_info, + std::vector& signature_result) +{ + try + { + const auto signature_size = function_info.signature.data.size(); + const auto generic_count = function_info.signature.NumberOfTypeArguments(); + const auto param_count = function_info.signature.NumberOfArguments(); + size_t current_index = 2; // Where the parameters actually start + + if (generic_count > 0) + { + current_index++; // offset by one because the method is generic } - case ELEMENT_TYPE_VALUETYPE: - case ELEMENT_TYPE_CLASS: { - current_index++; - auto type_data = RetrieveTypeForSignature( - metadata_import, function_info, current_index, token_length); - - mdToken examined_type_token = type_data.id; - auto examined_type_name = type_data.name; - auto ongoing_type_name = examined_type_name; - - // check for whether this may be a nested class - while (examined_type_name.find_first_of(WStr(".")) == std::string::npos) { - // This may possibly be a nested class, check for the parent - mdToken potentialParentToken; - metadata_import->GetNestedClassProps(examined_type_token, - &potentialParentToken); - - if (potentialParentToken == mdTokenNil) { - break; + const auto expected_number_of_types = param_count + 1; + size_t current_type_index = 0; + std::vector type_names(expected_number_of_types); + + std::stack generic_arg_stack; + WSTRING append_to_type = WStr(""); + WSTRING current_type_name = WStr(""); + + for (; current_index < signature_size; current_index++) + { + mdToken type_token; + ULONG token_length; + auto param_piece = function_info.signature.data[current_index]; + const auto cor_element_type = CorElementType(param_piece); + + switch (cor_element_type) + { + case ELEMENT_TYPE_VOID: + { + current_type_name.append(WStr("System.Void")); + break; + } + + case ELEMENT_TYPE_BOOLEAN: + { + current_type_name.append(WStr("System.Boolean")); + break; + } + + case ELEMENT_TYPE_CHAR: + { + current_type_name.append(WStr("System.Char16")); + break; + } + + case ELEMENT_TYPE_I1: + { + current_type_name.append(WStr("System.SByte")); + break; + } + + case ELEMENT_TYPE_U1: + { + current_type_name.append(WStr("System.Byte")); + break; + } + + case ELEMENT_TYPE_I2: + { + current_type_name.append(WStr("System.Int16")); + break; + } + + case ELEMENT_TYPE_U2: + { + current_type_name.append(WStr("System.UInt16")); + break; + } + + case ELEMENT_TYPE_I4: + { + current_type_name.append(WStr("System.Int32")); + break; + } + + case ELEMENT_TYPE_U4: + { + current_type_name.append(WStr("System.UInt32")); + break; + } + + case ELEMENT_TYPE_I8: + { + current_type_name.append(WStr("System.Int64")); + break; + } + + case ELEMENT_TYPE_U8: + { + current_type_name.append(WStr("System.UInt64")); + break; + } + + case ELEMENT_TYPE_R4: + { + current_type_name.append(WStr("System.Single")); + break; + } + + case ELEMENT_TYPE_R8: + { + current_type_name.append(WStr("System.Double")); + break; + } + + case ELEMENT_TYPE_STRING: + { + current_type_name.append(WStr("System.String")); + break; + } + + case ELEMENT_TYPE_OBJECT: + { + current_type_name.append(WStr("System.Object")); + break; + } + + case ELEMENT_TYPE_VALUETYPE: + case ELEMENT_TYPE_CLASS: + { + current_index++; + auto type_data = + RetrieveTypeForSignature(metadata_import, function_info, current_index, token_length); + + mdToken examined_type_token = type_data.id; + auto examined_type_name = type_data.name; + auto ongoing_type_name = examined_type_name; + + // check for whether this may be a nested class + while (examined_type_name.find_first_of(WStr(".")) == std::string::npos) + { + // This may possibly be a nested class, check for the parent + mdToken potentialParentToken; + metadata_import->GetNestedClassProps(examined_type_token, &potentialParentToken); + + if (potentialParentToken == mdTokenNil) + { + break; + } + + auto nesting_type = GetTypeInfo(metadata_import, potentialParentToken); + + examined_type_token = nesting_type.id; + examined_type_name = nesting_type.name; + + ongoing_type_name = examined_type_name + WStr("+") + ongoing_type_name; + } + + // index will be moved up one on every loop + // handle tokens which have more than one byte + current_index += token_length - 1; + current_type_name.append(ongoing_type_name); + break; + } + + case ELEMENT_TYPE_SZARRAY: + { + append_to_type.append(WStr("[]")); + while (function_info.signature.data[(current_index + 1)] == ELEMENT_TYPE_SZARRAY) + { + append_to_type.append(WStr("[]")); + current_index++; + } + // Next will be the type of the array(s) + continue; + } + + case ELEMENT_TYPE_MVAR: + { + // We are likely parsing a standalone generic param + token_length = CorSigUncompressToken(PCCOR_SIGNATURE(&function_info.signature.data[current_index]), + &type_token); + current_type_name.append(WStr("T")); + current_index += token_length; + // TODO: implement conventions for generics (eg., TC1, TC2, TM1, TM2) + // current_type_name.append(std::to_wstring(type_token)); + break; + } + + case ELEMENT_TYPE_VAR: + { + // We are likely within a generic variant + token_length = CorSigUncompressToken(PCCOR_SIGNATURE(&function_info.signature.data[current_index]), + &type_token); + current_type_name.append(WStr("T")); + current_index += token_length; + // TODO: implement conventions for generics (eg., TC1, TC2, TM1, TM2) + // current_type_name.append(std::to_wstring(type_token)); + break; + } + + case ELEMENT_TYPE_GENERICINST: + { + // skip past generic type indicator token + current_index++; + // skip past actual generic type token (probably a class) + current_index++; + const auto generic_type_data = + RetrieveTypeForSignature(metadata_import, function_info, current_index, token_length); + auto type_name = generic_type_data.name; + current_type_name.append(type_name); + current_type_name.append(WStr("<")); // Begin generic args + + // Because we are starting a new generic, decrement any existing level + if (!generic_arg_stack.empty()) + { + generic_arg_stack.top()--; + } + + // figure out how many generic args this type has + const auto index_of_tick = type_name.find_last_of('`'); + auto num_args_text = ToString(type_name.substr(index_of_tick + 1)); + auto actual_arg_count = std::stoi(num_args_text, nullptr); + generic_arg_stack.push(actual_arg_count); + current_index += token_length; + // Next will be the variants + continue; + } + + case ELEMENT_TYPE_BYREF: + { + // TODO: This hasn't been encountered yet + current_type_name.append(WStr("ref")); + break; + } + + case ELEMENT_TYPE_END: + { + // we already handle the generic by counting args + continue; + } + + default: + { + // This is unexpected and we should report that, and not instrument + current_type_name.append(ToWSTRING(ToString(cor_element_type))); + break; + } } - auto nesting_type = - GetTypeInfo(metadata_import, potentialParentToken); - - examined_type_token = nesting_type.id; - examined_type_name = nesting_type.name; + if (!append_to_type.empty()) + { + current_type_name.append(append_to_type); + append_to_type = WStr(""); + } - ongoing_type_name = examined_type_name + WStr("+") + ongoing_type_name; - } + if (!generic_arg_stack.empty()) + { + // decrement this level's args + generic_arg_stack.top()--; - // index will be moved up one on every loop - // handle tokens which have more than one byte - current_index += token_length - 1; - current_type_name.append(ongoing_type_name); - break; - } + if (generic_arg_stack.top() > 0) + { + // we're in the middle of generic type args + current_type_name.append(WStr(", ")); + } + } - case ELEMENT_TYPE_SZARRAY: { - append_to_type.append(WStr("[]")); - while (function_info.signature.data[(current_index + 1)] == - ELEMENT_TYPE_SZARRAY) { - append_to_type.append(WStr("[]")); - current_index++; - } - // Next will be the type of the array(s) - continue; - } + while (!generic_arg_stack.empty() && generic_arg_stack.top() == 0) + { + // unwind the generics with no args left + generic_arg_stack.pop(); + current_type_name.append(WStr(">")); + + if (!generic_arg_stack.empty() && generic_arg_stack.top() > 0) + { + // We are in a nested generic and we need a comma to separate args + current_type_name.append(WStr(", ")); + } + } - case ELEMENT_TYPE_MVAR: { - // We are likely parsing a standalone generic param - token_length = CorSigUncompressToken( - PCCOR_SIGNATURE(&function_info.signature.data[current_index]), - &type_token); - current_type_name.append(WStr("T")); - current_index += token_length; - // TODO: implement conventions for generics (eg., TC1, TC2, TM1, TM2) - // current_type_name.append(std::to_wstring(type_token)); - break; - } + if (!generic_arg_stack.empty()) + { + continue; + } - case ELEMENT_TYPE_VAR: { - // We are likely within a generic variant - token_length = CorSigUncompressToken( - PCCOR_SIGNATURE(&function_info.signature.data[current_index]), - &type_token); - current_type_name.append(WStr("T")); - current_index += token_length; - // TODO: implement conventions for generics (eg., TC1, TC2, TM1, TM2) - // current_type_name.append(std::to_wstring(type_token)); - break; - } + if (current_type_index >= expected_number_of_types) + { + // We missed something, drop out for safety + return false; + } - case ELEMENT_TYPE_GENERICINST: { - // skip past generic type indicator token - current_index++; - // skip past actual generic type token (probably a class) - current_index++; - const auto generic_type_data = RetrieveTypeForSignature( - metadata_import, function_info, current_index, token_length); - auto type_name = generic_type_data.name; - current_type_name.append(type_name); - current_type_name.append(WStr("<")); // Begin generic args - - // Because we are starting a new generic, decrement any existing level - if (!generic_arg_stack.empty()) { - generic_arg_stack.top()--; - } - - // figure out how many generic args this type has - const auto index_of_tick = type_name.find_last_of('`'); - auto num_args_text = ToString(type_name.substr(index_of_tick + 1)); - auto actual_arg_count = std::stoi(num_args_text, nullptr); - generic_arg_stack.push(actual_arg_count); - current_index += token_length; - // Next will be the variants - continue; + type_names[current_type_index] = current_type_name; + current_type_name = WStr(""); + current_type_index++; } - case ELEMENT_TYPE_BYREF: { - // TODO: This hasn't been encountered yet - current_type_name.append(WStr("ref")); - break; - } + signature_result = type_names; + } + catch (...) + { + // TODO: Add precise exceptions and log + // We were unable to parse for some reason + // Return that we've failed + return false; + } - case ELEMENT_TYPE_END: { - // we already handle the generic by counting args - continue; - } + return true; +} - default: { - // This is unexpected and we should report that, and not instrument - current_type_name.append(ToWSTRING(ToString(cor_element_type))); - break; - } - } +HRESULT GetCorLibAssemblyRef(const ComPtr& assembly_emit, AssemblyProperty& corAssemblyProperty, + mdAssemblyRef* corlib_ref) +{ + if (corAssemblyProperty.ppbPublicKey != nullptr) + { + // the corlib module is already loaded, use that information to create the assembly ref + Debug("Using existing corlib reference: ", corAssemblyProperty.szName); + return assembly_emit->DefineAssemblyRef(corAssemblyProperty.ppbPublicKey, corAssemblyProperty.pcbPublicKey, + corAssemblyProperty.szName.c_str(), &corAssemblyProperty.pMetaData, + NULL, 0, 0, corlib_ref); + } + else + { + // Define an AssemblyRef to mscorlib, needed to create TypeRefs later + ASSEMBLYMETADATA metadata{}; + metadata.usMajorVersion = 4; + metadata.usMinorVersion = 0; + metadata.usBuildNumber = 0; + metadata.usRevisionNumber = 0; + BYTE public_key[] = {0xB7, 0x7A, 0x5C, 0x56, 0x19, 0x34, 0xE0, 0x89}; + return assembly_emit->DefineAssemblyRef(public_key, sizeof(public_key), WStr("mscorlib"), &metadata, NULL, 0, 0, + corlib_ref); + } +} - if (!append_to_type.empty()) { - current_type_name.append(append_to_type); - append_to_type = WStr(""); - } +bool ReturnTypeTokenforValueTypeElementType(PCCOR_SIGNATURE p_sig, const ComPtr& metadata_emit, + const ComPtr& assembly_emit, + AssemblyProperty& corAssemblyProperty, mdToken* ret_type_token) +{ + const auto cor_element_type = CorElementType(*p_sig); + WSTRING managed_type_name = WStr(""); - if (!generic_arg_stack.empty()) { - // decrement this level's args - generic_arg_stack.top()--; + switch (cor_element_type) + { + case ELEMENT_TYPE_VALUETYPE: + { + ULONG result; + result = CorSigUncompressToken(p_sig + 1, ret_type_token); + if (result == -1) + { + Warn("[trace::ReturnTypeTokenforElementType] ELEMENT_TYPE_VALUETYPE failed to find uncompress TypeRef " + "or " + "TypeDef"); + return false; + } - if (generic_arg_stack.top() > 0) { - // we're in the middle of generic type args - current_type_name.append(WStr(", ")); + return true; } - } - - while (!generic_arg_stack.empty() && generic_arg_stack.top() == 0) { - // unwind the generics with no args left - generic_arg_stack.pop(); - current_type_name.append(WStr(">")); - if (!generic_arg_stack.empty() && generic_arg_stack.top() > 0) { - // We are in a nested generic and we need a comma to separate args - current_type_name.append(WStr(", ")); - } - } + case ELEMENT_TYPE_VOID: // 0x01 // System.Void (struct) + managed_type_name = WStr("System.Void"); + break; + case ELEMENT_TYPE_BOOLEAN: // 0x02 // System.Boolean (struct) + managed_type_name = WStr("System.Boolean"); + break; + case ELEMENT_TYPE_CHAR: // 0x03 // System.Char (struct) + managed_type_name = WStr("System.Char"); + break; + case ELEMENT_TYPE_I1: // 0x04 // System.SByte (struct) + managed_type_name = WStr("System.SByte"); + break; + case ELEMENT_TYPE_U1: // 0x05 // System.Byte (struct) + managed_type_name = WStr("System.Byte"); + break; + case ELEMENT_TYPE_I2: // 0x06 // System.Int16 (struct) + managed_type_name = WStr("System.Int16"); + break; + case ELEMENT_TYPE_U2: // 0x07 // System.UInt16 (struct) + managed_type_name = WStr("System.UInt16"); + break; + case ELEMENT_TYPE_I4: // 0x08 // System.Int32 (struct) + managed_type_name = WStr("System.Int32"); + break; + case ELEMENT_TYPE_U4: // 0x09 // System.UInt32 (struct) + managed_type_name = WStr("System.UInt32"); + break; + case ELEMENT_TYPE_I8: // 0x0a // System.Int64 (struct) + managed_type_name = WStr("System.Int64"); + break; + case ELEMENT_TYPE_U8: // 0x0b // System.UInt64 (struct) + managed_type_name = WStr("System.UInt64"); + break; + case ELEMENT_TYPE_R4: // 0x0c // System.Single (struct) + managed_type_name = WStr("System.Single"); + break; + case ELEMENT_TYPE_R8: // 0x0d // System.Double (struct) + managed_type_name = WStr("System.Double"); + break; + case ELEMENT_TYPE_TYPEDBYREF: // 0X16 // System.TypedReference (struct) + managed_type_name = WStr("System.TypedReference"); + break; + case ELEMENT_TYPE_I: // 0x18 // System.IntPtr (struct) + managed_type_name = WStr("System.IntPtr"); + break; + case ELEMENT_TYPE_U: // 0x19 // System.UIntPtr (struct) + managed_type_name = WStr("System.UIntPtr"); + break; + default: + return false; + } - if (!generic_arg_stack.empty()) { - continue; - } + // Create reference to Mscorlib + mdModuleRef mscorlib_ref; + HRESULT hr; + hr = GetCorLibAssemblyRef(assembly_emit, corAssemblyProperty, &mscorlib_ref); - if (current_type_index >= expected_number_of_types) { - // We missed something, drop out for safety + if (FAILED(hr)) + { + Warn("[trace::ReturnTypeTokenforElementType] failed to define AssemblyRef to mscorlib"); return false; - } - - type_names[current_type_index] = current_type_name; - current_type_name = WStr(""); - current_type_index++; } - signature_result = type_names; - - } catch (...) { - // TODO: Add precise exceptions and log - // We were unable to parse for some reason - // Return that we've failed - return false; - } - - return true; -} - -HRESULT GetCorLibAssemblyRef(const ComPtr& assembly_emit, - AssemblyProperty& corAssemblyProperty, - mdAssemblyRef* corlib_ref) { - if (corAssemblyProperty.ppbPublicKey != nullptr) { - // the corlib module is already loaded, use that information to create the assembly ref - Debug("Using existing corlib reference: ", corAssemblyProperty.szName); - return assembly_emit->DefineAssemblyRef( - corAssemblyProperty.ppbPublicKey, - corAssemblyProperty.pcbPublicKey, - corAssemblyProperty.szName.c_str(), - &corAssemblyProperty.pMetaData, - NULL, 0, 0, corlib_ref); - } else { - // Define an AssemblyRef to mscorlib, needed to create TypeRefs later - ASSEMBLYMETADATA metadata{}; - metadata.usMajorVersion = 4; - metadata.usMinorVersion = 0; - metadata.usBuildNumber = 0; - metadata.usRevisionNumber = 0; - BYTE public_key[] = {0xB7, 0x7A, 0x5C, 0x56, 0x19, 0x34, 0xE0, 0x89}; - return assembly_emit->DefineAssemblyRef( - public_key, - sizeof(public_key), - WStr("mscorlib"), - &metadata, - NULL, 0, 0, corlib_ref); - } -} - -bool ReturnTypeTokenforValueTypeElementType(PCCOR_SIGNATURE p_sig, - const ComPtr& metadata_emit, - const ComPtr& assembly_emit, - AssemblyProperty& corAssemblyProperty, - mdToken* ret_type_token) { - const auto cor_element_type = CorElementType(*p_sig); - WSTRING managed_type_name = WStr(""); - - switch (cor_element_type) { - case ELEMENT_TYPE_VALUETYPE: { - ULONG result; - result = CorSigUncompressToken(p_sig + 1, ret_type_token); - if (result == -1) { - Warn("[trace::ReturnTypeTokenforElementType] ELEMENT_TYPE_VALUETYPE failed to find uncompress TypeRef or TypeDef"); + // Create/Get TypeRef to the listed type + if (managed_type_name == WStr("")) + { + Warn("[trace::ReturnTypeTokenforElementType] no managed type name given"); return false; - } - - return true; } - case ELEMENT_TYPE_VOID: // 0x01 // System.Void (struct) - managed_type_name = WStr("System.Void"); - break; - case ELEMENT_TYPE_BOOLEAN: // 0x02 // System.Boolean (struct) - managed_type_name = WStr("System.Boolean"); - break; - case ELEMENT_TYPE_CHAR: // 0x03 // System.Char (struct) - managed_type_name = WStr("System.Char"); - break; - case ELEMENT_TYPE_I1: // 0x04 // System.SByte (struct) - managed_type_name = WStr("System.SByte"); - break; - case ELEMENT_TYPE_U1: // 0x05 // System.Byte (struct) - managed_type_name = WStr("System.Byte"); - break; - case ELEMENT_TYPE_I2: // 0x06 // System.Int16 (struct) - managed_type_name = WStr("System.Int16"); - break; - case ELEMENT_TYPE_U2: // 0x07 // System.UInt16 (struct) - managed_type_name = WStr("System.UInt16"); - break; - case ELEMENT_TYPE_I4: // 0x08 // System.Int32 (struct) - managed_type_name = WStr("System.Int32"); - break; - case ELEMENT_TYPE_U4: // 0x09 // System.UInt32 (struct) - managed_type_name = WStr("System.UInt32"); - break; - case ELEMENT_TYPE_I8: // 0x0a // System.Int64 (struct) - managed_type_name = WStr("System.Int64"); - break; - case ELEMENT_TYPE_U8: // 0x0b // System.UInt64 (struct) - managed_type_name = WStr("System.UInt64"); - break; - case ELEMENT_TYPE_R4: // 0x0c // System.Single (struct) - managed_type_name = WStr("System.Single"); - break; - case ELEMENT_TYPE_R8: // 0x0d // System.Double (struct) - managed_type_name = WStr("System.Double"); - break; - case ELEMENT_TYPE_TYPEDBYREF: // 0X16 // System.TypedReference (struct) - managed_type_name = WStr("System.TypedReference"); - break; - case ELEMENT_TYPE_I: // 0x18 // System.IntPtr (struct) - managed_type_name = WStr("System.IntPtr"); - break; - case ELEMENT_TYPE_U: // 0x19 // System.UIntPtr (struct) - managed_type_name = WStr("System.UIntPtr"); - break; - default: - return false; - } - - // Create reference to Mscorlib - mdModuleRef mscorlib_ref; - HRESULT hr; - hr = GetCorLibAssemblyRef(assembly_emit, corAssemblyProperty, &mscorlib_ref); - - if (FAILED(hr)) { - Warn("[trace::ReturnTypeTokenforElementType] failed to define AssemblyRef to mscorlib"); - return false; - } + hr = metadata_emit->DefineTypeRefByName(mscorlib_ref, managed_type_name.c_str(), ret_type_token); - // Create/Get TypeRef to the listed type - if (managed_type_name == WStr("")) { - Warn("[trace::ReturnTypeTokenforElementType] no managed type name given"); - return false; - } + if (FAILED(hr)) + { + Warn("[trace::ReturnTypeTokenforElementType] unable to create type ref for managed_type_name=", + managed_type_name); + return false; + } - hr = metadata_emit->DefineTypeRefByName( - mscorlib_ref, managed_type_name.c_str(), ret_type_token); + return true; +} - if (FAILED(hr)) { - Warn("[trace::ReturnTypeTokenforElementType] unable to create type ref for managed_type_name=", managed_type_name); - return false; - } +bool ReturnTypeIsValueTypeOrGeneric(const ComPtr& metadata_import, + const ComPtr& metadata_emit, + const ComPtr& assembly_emit, + AssemblyProperty& corAssemblyProperty, const mdToken targetFunctionToken, + const MethodSignature targetFunctionSignature, mdToken* ret_type_token) +{ + + // MethodDefSig Format: [[HASTHIS] [EXPLICITTHIS]] (DEFAULT|VARARG|GENERIC GenParamCount) ParamCount RetType Param* + // [SENTINEL Param+] + const auto generic_count = targetFunctionSignature.NumberOfTypeArguments(); + size_t method_def_sig_index = generic_count == 0 ? 2 : 3; // Initialize the index to point to RetType + auto ret_type_byte = targetFunctionSignature.data[method_def_sig_index]; + const auto ret_type = CorElementType(ret_type_byte); + + switch (ret_type) + { + case ELEMENT_TYPE_VOID: + // No object is returned, so return false. + return false; - return true; -} + case ELEMENT_TYPE_GENERICINST: + { + // Format: GENERICINST (CLASS | VALUETYPE) TypeDefOrRefEncoded GenArgCount Type * + // Example: Task. Return true if the type is a VALUETYPE + if (targetFunctionSignature.data[method_def_sig_index + 1] != ELEMENT_TYPE_VALUETYPE) + { + return false; + } -bool ReturnTypeIsValueTypeOrGeneric( - const ComPtr& metadata_import, - const ComPtr& metadata_emit, - const ComPtr& assembly_emit, - AssemblyProperty& corAssemblyProperty, - const mdToken targetFunctionToken, - const MethodSignature targetFunctionSignature, - mdToken* ret_type_token) { - - // MethodDefSig Format: [[HASTHIS] [EXPLICITTHIS]] (DEFAULT|VARARG|GENERIC GenParamCount) ParamCount RetType Param* [SENTINEL Param+] - const auto generic_count = targetFunctionSignature.NumberOfTypeArguments(); - size_t method_def_sig_index = generic_count == 0 ? 2 : 3; // Initialize the index to point to RetType - auto ret_type_byte = targetFunctionSignature.data[method_def_sig_index]; - const auto ret_type = CorElementType(ret_type_byte); - - switch (ret_type) { - case ELEMENT_TYPE_VOID: - // No object is returned, so return false. - return false; - - case ELEMENT_TYPE_GENERICINST: { - // Format: GENERICINST (CLASS | VALUETYPE) TypeDefOrRefEncoded GenArgCount Type * - // Example: Task. Return true if the type is a VALUETYPE - if (targetFunctionSignature.data[method_def_sig_index + 1] != ELEMENT_TYPE_VALUETYPE) { - return false; - } + PCCOR_SIGNATURE p_start_byte = PCCOR_SIGNATURE(&targetFunctionSignature.data[method_def_sig_index]); + PCCOR_SIGNATURE p_end_byte = p_start_byte; + if (!ParseType(&p_end_byte)) + { + return false; + } - PCCOR_SIGNATURE p_start_byte = PCCOR_SIGNATURE(&targetFunctionSignature.data[method_def_sig_index]); - PCCOR_SIGNATURE p_end_byte = p_start_byte; - if (!ParseType(&p_end_byte)) { - return false; - } + size_t length = p_end_byte - p_start_byte; + HRESULT hr = metadata_emit->GetTokenFromTypeSpec(p_start_byte, (ULONG) length, ret_type_token); + return SUCCEEDED(hr); + } - size_t length = p_end_byte - p_start_byte; - HRESULT hr = metadata_emit->GetTokenFromTypeSpec(p_start_byte, (ULONG) length, ret_type_token); - return SUCCEEDED(hr); - } + case ELEMENT_TYPE_VAR: + case ELEMENT_TYPE_MVAR: + { + // Format: VAR number + // Format: MVAR number + + // Extract the number, which is an index into the generic type arguments of the method or the type + method_def_sig_index++; // Advance the current_index to point to "number" + ULONG generic_type_index; + if (CorSigUncompressData(PCCOR_SIGNATURE(&targetFunctionSignature.data[method_def_sig_index]), + &generic_type_index) == -1) + { + Warn("[trace::ReturnTypeIsValueTypeOrGeneric] element_type=", ret_type, + ": unable to read VAR|MVAR index"); + return false; + } - case ELEMENT_TYPE_VAR: - case ELEMENT_TYPE_MVAR: { - // Format: VAR number - // Format: MVAR number - - // Extract the number, which is an index into the generic type arguments of the method or the type - method_def_sig_index++; // Advance the current_index to point to "number" - ULONG generic_type_index; - if (CorSigUncompressData(PCCOR_SIGNATURE(&targetFunctionSignature.data[method_def_sig_index]), - &generic_type_index) == -1) { - Warn("[trace::ReturnTypeIsValueTypeOrGeneric] element_type=", ret_type, ": unable to read VAR|MVAR index"); - return false; - } + // Get the signature of the MethodSpec or the method's parent TypeSpec + // Each spec will clearly list the types used for the generic type variables + const auto token_type = TypeFromToken(targetFunctionToken); + mdToken parent_token = mdTokenNil; + HRESULT hr; + PCCOR_SIGNATURE spec_signature{}; + ULONG spec_signature_length{}; + + switch (token_type) + { + case mdtMemberRef: + // The compiler will never make method calls to generic methods without + // the generic context, so we never expect to hit this at + // run-time. If we are evaluating the MethodDef/MethodRef of a generic + // method return false because it is invalid. + if (generic_count > 0) + { + return false; + } + + hr = metadata_import->GetMemberRefProps(targetFunctionToken, &parent_token, nullptr, 0, nullptr, + nullptr, nullptr); + if (SUCCEEDED(hr)) + { + hr = metadata_import->GetTypeSpecFromToken(parent_token, &spec_signature, + &spec_signature_length); + } + break; + case mdtMethodDef: + // The compiler will never make method calls to generic methods without + // the generic context, so we never expect to hit this at + // run-time. If we are evaluating the MethodDef/MethodRef of a generic + // method return false because it is invalid. + if (generic_count > 0) + { + return false; + } + + hr = metadata_import->GetMemberProps(targetFunctionToken, &parent_token, nullptr, 0, nullptr, + nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, + nullptr); + if (SUCCEEDED(hr)) + { + hr = metadata_import->GetTypeSpecFromToken(parent_token, &spec_signature, + &spec_signature_length); + } + break; + case mdtMethodSpec: + hr = metadata_import->GetMethodSpecProps(targetFunctionToken, &parent_token, &spec_signature, + &spec_signature_length); + break; + default: + Warn("[trace::ReturnTypeIsValueTypeOrGeneric] element_type=", ret_type, + ": function token was not a MemberRef, MethodDef, or MethodSpec"); + return false; + } - // Get the signature of the MethodSpec or the method's parent TypeSpec - // Each spec will clearly list the types used for the generic type variables - const auto token_type = TypeFromToken(targetFunctionToken); - mdToken parent_token = mdTokenNil; - HRESULT hr; - PCCOR_SIGNATURE spec_signature{}; - ULONG spec_signature_length{}; + if (FAILED(hr)) + { + Warn("[trace::ReturnTypeIsValueTypeOrGeneric] element_type=", ret_type, + ": failed to get parent token or signature"); + return false; + } - switch (token_type) { - case mdtMemberRef: - // The compiler will never make method calls to generic methods without - // the generic context, so we never expect to hit this at - // run-time. If we are evaluating the MethodDef/MethodRef of a generic - // method return false because it is invalid. - if (generic_count > 0) { - return false; - } - - hr = metadata_import->GetMemberRefProps(targetFunctionToken, - &parent_token, nullptr, 0, - nullptr, nullptr, nullptr); - if (SUCCEEDED(hr)) { - hr = metadata_import->GetTypeSpecFromToken(parent_token, &spec_signature, - &spec_signature_length); - } - break; - case mdtMethodDef: - // The compiler will never make method calls to generic methods without - // the generic context, so we never expect to hit this at - // run-time. If we are evaluating the MethodDef/MethodRef of a generic - // method return false because it is invalid. - if (generic_count > 0) { - return false; - } - - hr = metadata_import->GetMemberProps( - targetFunctionToken, &parent_token, nullptr, 0, nullptr, - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr); - if (SUCCEEDED(hr)) { - hr = metadata_import->GetTypeSpecFromToken(parent_token, &spec_signature, - &spec_signature_length); - } - break; - case mdtMethodSpec: - hr = metadata_import->GetMethodSpecProps(targetFunctionToken, - &parent_token, &spec_signature, &spec_signature_length); - break; - default: - Warn("[trace::ReturnTypeIsValueTypeOrGeneric] element_type=", ret_type, ": function token was not a MemberRef, MethodDef, or MethodSpec"); - return false; - } + // Determine the index of GenArgCount in the signature + size_t parent_token_index; + if (token_type == mdtMemberRef || token_type == mdtMethodDef) + { + // TypeSpec Format: GENERICINST (CLASS | VALUETYPE) TypeDefOrRefEncoded GenArgCount Type Type* + // Skip over TypeDefOrRefEncoded by parsing the signature at index 2 + parent_token_index = 2; + mdToken dummy_token; + ULONG token_length = CorSigUncompressToken(&spec_signature[parent_token_index], &dummy_token); + parent_token_index += token_length; + } + else if (token_type == mdtMethodSpec) + { + // MethodSpec Format: GENRICINST GenArgCount Type Type* + parent_token_index = 1; + } + else + { + Warn("[trace::ReturnTypeIsValueTypeOrGeneric] element_type=", ret_type, ": token_type (", token_type, + ") not recognized"); + return false; + } - if (FAILED(hr)) { - Warn("[trace::ReturnTypeIsValueTypeOrGeneric] element_type=", ret_type, ": failed to get parent token or signature"); - return false; - } - - // Determine the index of GenArgCount in the signature - size_t parent_token_index; - if (token_type == mdtMemberRef || token_type == mdtMethodDef) { - // TypeSpec Format: GENERICINST (CLASS | VALUETYPE) TypeDefOrRefEncoded GenArgCount Type Type* - // Skip over TypeDefOrRefEncoded by parsing the signature at index 2 - parent_token_index = 2; - mdToken dummy_token; - ULONG token_length = CorSigUncompressToken( - &spec_signature[parent_token_index], &dummy_token); - parent_token_index += token_length; - } else if (token_type == mdtMethodSpec) { - // MethodSpec Format: GENRICINST GenArgCount Type Type* - parent_token_index = 1; - } else { - Warn("[trace::ReturnTypeIsValueTypeOrGeneric] element_type=", ret_type, ": token_type (", token_type , ") not recognized"); - return false; - } - - // Read the value of GenArgCount in the signature - ULONG num_generic_arguments; - parent_token_index += CorSigUncompressData( - &spec_signature[parent_token_index], &num_generic_arguments); - - // Get a pointer to first type after GenArgCount that we can increment to read the signature - PCCOR_SIGNATURE p_current_byte = spec_signature + parent_token_index; - - // Iterate to specified generic type argument index and return the appropriate class token or TypeSpec - for (size_t i = 0; i < num_generic_arguments; i++) { - if (i != generic_type_index) { - if (!ParseType(&p_current_byte)) { - Warn( - "[trace::ReturnTypeIsValueTypeOrGeneric] element_type=", ret_type, ": Unable to parse " - "generic type argument ", i, - "from signature of parent_token:", parent_token); - return false; - } - } else if (*p_current_byte == ELEMENT_TYPE_MVAR || - *p_current_byte == ELEMENT_TYPE_VAR) { - // The method was defined with a method-level generic type argument from the caller. Return the TypeSpec token for the `M#` MVAR description, or - // The method was defined with a type-level generic type argument from the caller. Return the TypeSpec token for the `T#` VAR description - hr = metadata_emit->GetTokenFromTypeSpec(p_current_byte, 2, - ret_type_token); - return SUCCEEDED(hr); - } else if (*p_current_byte == ELEMENT_TYPE_GENERICINST) { - // Format: GENERICINST (CLASS | VALUETYPE) TypeDefOrRefEncoded GenArgCount Type * - // Example: Task. Return true if the type is a VALUETYPE - if (*(p_current_byte + 1) != ELEMENT_TYPE_VALUETYPE) { - return false; - } + // Read the value of GenArgCount in the signature + ULONG num_generic_arguments; + parent_token_index += CorSigUncompressData(&spec_signature[parent_token_index], &num_generic_arguments); + + // Get a pointer to first type after GenArgCount that we can increment to read the signature + PCCOR_SIGNATURE p_current_byte = spec_signature + parent_token_index; + + // Iterate to specified generic type argument index and return the appropriate class token or TypeSpec + for (size_t i = 0; i < num_generic_arguments; i++) + { + if (i != generic_type_index) + { + if (!ParseType(&p_current_byte)) + { + Warn("[trace::ReturnTypeIsValueTypeOrGeneric] element_type=", ret_type, + ": Unable to parse " + "generic type argument ", + i, "from signature of parent_token:", parent_token); + return false; + } + } + else if (*p_current_byte == ELEMENT_TYPE_MVAR || *p_current_byte == ELEMENT_TYPE_VAR) + { + // The method was defined with a method-level generic type argument from the caller. Return the + // TypeSpec token for the `M#` MVAR description, or The method was defined with a type-level generic + // type argument from the caller. Return the TypeSpec token for the `T#` VAR description + hr = metadata_emit->GetTokenFromTypeSpec(p_current_byte, 2, ret_type_token); + return SUCCEEDED(hr); + } + else if (*p_current_byte == ELEMENT_TYPE_GENERICINST) + { + // Format: GENERICINST (CLASS | VALUETYPE) TypeDefOrRefEncoded GenArgCount Type * + // Example: Task. Return true if the type is a VALUETYPE + if (*(p_current_byte + 1) != ELEMENT_TYPE_VALUETYPE) + { + return false; + } + + PCCOR_SIGNATURE p_start_byte = p_current_byte; + PCCOR_SIGNATURE p_end_byte = p_start_byte; + if (!ParseType(&p_end_byte)) + { + return false; + } + + size_t length = p_end_byte - p_start_byte; + HRESULT hr = metadata_emit->GetTokenFromTypeSpec(p_start_byte, (ULONG) length, ret_type_token); + return SUCCEEDED(hr); + } + else + { + return ReturnTypeTokenforValueTypeElementType(p_current_byte, metadata_emit, assembly_emit, + corAssemblyProperty, ret_type_token); + } + } - PCCOR_SIGNATURE p_start_byte = p_current_byte; - PCCOR_SIGNATURE p_end_byte = p_start_byte; - if (!ParseType(&p_end_byte)) { return false; - } - - size_t length = p_end_byte - p_start_byte; - HRESULT hr = metadata_emit->GetTokenFromTypeSpec(p_start_byte, (ULONG) length, - ret_type_token); - return SUCCEEDED(hr); - } else { - return ReturnTypeTokenforValueTypeElementType( - p_current_byte, - metadata_emit, - assembly_emit, - corAssemblyProperty, - ret_type_token); } - } - return false; + default: + return ReturnTypeTokenforValueTypeElementType( + PCCOR_SIGNATURE(&targetFunctionSignature.data[method_def_sig_index]), metadata_emit, assembly_emit, + corAssemblyProperty, ret_type_token); } - - default: - return ReturnTypeTokenforValueTypeElementType( - PCCOR_SIGNATURE(&targetFunctionSignature.data[method_def_sig_index]), - metadata_emit, - assembly_emit, - corAssemblyProperty, - ret_type_token); - } } - // FunctionMethodArgument -int FunctionMethodArgument::GetTypeFlags(unsigned& elementType) const { - int flag = 0; - PCCOR_SIGNATURE pbCur = &pbBase[offset]; +int FunctionMethodArgument::GetTypeFlags(unsigned& elementType) const +{ + int flag = 0; + PCCOR_SIGNATURE pbCur = &pbBase[offset]; + + if (*pbCur == ELEMENT_TYPE_VOID) + { + elementType = ELEMENT_TYPE_VOID; + flag |= TypeFlagVoid; + return flag; + } + + if (*pbCur == ELEMENT_TYPE_BYREF) + { + pbCur++; + flag |= TypeFlagByRef; + } - if (*pbCur == ELEMENT_TYPE_VOID) { - elementType = ELEMENT_TYPE_VOID; - flag |= TypeFlagVoid; + elementType = *pbCur; + + switch (*pbCur) + { + case ELEMENT_TYPE_BOOLEAN: + case ELEMENT_TYPE_CHAR: + case ELEMENT_TYPE_I1: + case ELEMENT_TYPE_U1: + case ELEMENT_TYPE_U2: + case ELEMENT_TYPE_I2: + case ELEMENT_TYPE_I4: + case ELEMENT_TYPE_U4: + case ELEMENT_TYPE_I8: + case ELEMENT_TYPE_U8: + case ELEMENT_TYPE_R4: + case ELEMENT_TYPE_R8: + case ELEMENT_TYPE_I: + case ELEMENT_TYPE_U: + case ELEMENT_TYPE_VALUETYPE: + case ELEMENT_TYPE_MVAR: + case ELEMENT_TYPE_VAR: + flag |= TypeFlagBoxedType; + break; + case ELEMENT_TYPE_GENERICINST: + pbCur++; + if (*pbCur == ELEMENT_TYPE_VALUETYPE) + { + flag |= TypeFlagBoxedType; + } + break; + default: + break; + } return flag; - } - - if (*pbCur == ELEMENT_TYPE_BYREF) { - pbCur++; - flag |= TypeFlagByRef; - } - - elementType = *pbCur; - - switch (*pbCur) { - case ELEMENT_TYPE_BOOLEAN: - case ELEMENT_TYPE_CHAR: - case ELEMENT_TYPE_I1: - case ELEMENT_TYPE_U1: - case ELEMENT_TYPE_U2: - case ELEMENT_TYPE_I2: - case ELEMENT_TYPE_I4: - case ELEMENT_TYPE_U4: - case ELEMENT_TYPE_I8: - case ELEMENT_TYPE_U8: - case ELEMENT_TYPE_R4: - case ELEMENT_TYPE_R8: - case ELEMENT_TYPE_I: - case ELEMENT_TYPE_U: - case ELEMENT_TYPE_VALUETYPE: - case ELEMENT_TYPE_MVAR: - case ELEMENT_TYPE_VAR: - flag |= TypeFlagBoxedType; - break; - case ELEMENT_TYPE_GENERICINST: - pbCur++; - if (*pbCur == ELEMENT_TYPE_VALUETYPE) { - flag |= TypeFlagBoxedType; - } - break; - default: - break; - } - return flag; } -mdToken FunctionMethodArgument::GetTypeTok(ComPtr& pEmit, mdAssemblyRef corLibRef) const { - mdToken token = mdTokenNil; - PCCOR_SIGNATURE pbCur = &pbBase[offset]; - const PCCOR_SIGNATURE pStart = pbCur; - - if (*pbCur == ELEMENT_TYPE_BYREF) { - pbCur++; - } - - switch (*pbCur) { - case ELEMENT_TYPE_BOOLEAN: - pEmit->DefineTypeRefByName(corLibRef, SystemBoolean, &token); - break; - case ELEMENT_TYPE_CHAR: - pEmit->DefineTypeRefByName(corLibRef, SystemChar, &token); - break; - case ELEMENT_TYPE_I1: - pEmit->DefineTypeRefByName(corLibRef, SystemSByte, &token); - break; - case ELEMENT_TYPE_U1: - pEmit->DefineTypeRefByName(corLibRef, SystemByte, &token); - break; - case ELEMENT_TYPE_U2: - pEmit->DefineTypeRefByName(corLibRef, SystemUInt16, &token); - break; - case ELEMENT_TYPE_I2: - pEmit->DefineTypeRefByName(corLibRef, SystemInt16, &token); - break; - case ELEMENT_TYPE_I4: - pEmit->DefineTypeRefByName(corLibRef, SystemInt32, &token); - break; - case ELEMENT_TYPE_U4: - pEmit->DefineTypeRefByName(corLibRef, SystemUInt32, &token); - break; - case ELEMENT_TYPE_I8: - pEmit->DefineTypeRefByName(corLibRef, SystemInt64, &token); - break; - case ELEMENT_TYPE_U8: - pEmit->DefineTypeRefByName(corLibRef, SystemUInt64, &token); - break; - case ELEMENT_TYPE_R4: - pEmit->DefineTypeRefByName(corLibRef, SystemSingle, &token); - break; - case ELEMENT_TYPE_R8: - pEmit->DefineTypeRefByName(corLibRef, SystemDouble, &token); - break; - case ELEMENT_TYPE_I: - pEmit->DefineTypeRefByName(corLibRef, SystemIntPtr, &token); - break; - case ELEMENT_TYPE_U: - pEmit->DefineTypeRefByName(corLibRef, SystemUIntPtr, &token); - break; - case ELEMENT_TYPE_STRING: - pEmit->DefineTypeRefByName(corLibRef, SystemString, &token); - break; - case ELEMENT_TYPE_OBJECT: - pEmit->DefineTypeRefByName(corLibRef, SystemObject, &token); - break; - case ELEMENT_TYPE_CLASS: - pbCur++; - token = CorSigUncompressToken(pbCur); - break; - case ELEMENT_TYPE_VALUETYPE: - pbCur++; - token = CorSigUncompressToken(pbCur); - break; - case ELEMENT_TYPE_GENERICINST: - case ELEMENT_TYPE_SZARRAY: - case ELEMENT_TYPE_MVAR: - case ELEMENT_TYPE_VAR: - pEmit->GetTokenFromTypeSpec( - pbCur, length - static_cast(pbCur - pStart), &token); - break; - default: - break; - } - return token; -} +mdToken FunctionMethodArgument::GetTypeTok(ComPtr& pEmit, mdAssemblyRef corLibRef) const +{ + mdToken token = mdTokenNil; + PCCOR_SIGNATURE pbCur = &pbBase[offset]; + const PCCOR_SIGNATURE pStart = pbCur; -WSTRING GetSigTypeTokName(PCCOR_SIGNATURE& pbCur, const ComPtr& pImport) { - WSTRING tokenName = WStr(""); - bool ref_flag = false; - if (*pbCur == ELEMENT_TYPE_BYREF) { - pbCur++; - ref_flag = true; - } - - switch (*pbCur) { - case ELEMENT_TYPE_BOOLEAN: - tokenName = SystemBoolean; - pbCur++; - break; - case ELEMENT_TYPE_CHAR: - tokenName = SystemChar; - pbCur++; - break; - case ELEMENT_TYPE_I1: - tokenName = SystemSByte; - pbCur++; - break; - case ELEMENT_TYPE_U1: - tokenName = SystemByte; - pbCur++; - break; - case ELEMENT_TYPE_U2: - tokenName = SystemUInt16; - pbCur++; - break; - case ELEMENT_TYPE_I2: - tokenName = SystemInt16; - pbCur++; - break; - case ELEMENT_TYPE_I4: - tokenName = SystemInt32; - pbCur++; - break; - case ELEMENT_TYPE_U4: - tokenName = SystemUInt32; - pbCur++; - break; - case ELEMENT_TYPE_I8: - tokenName = SystemInt64; - pbCur++; - break; - case ELEMENT_TYPE_U8: - tokenName = SystemUInt64; - pbCur++; - break; - case ELEMENT_TYPE_R4: - tokenName = SystemSingle; - pbCur++; - break; - case ELEMENT_TYPE_R8: - tokenName = SystemDouble; - pbCur++; - break; - case ELEMENT_TYPE_I: - tokenName = SystemIntPtr; - pbCur++; - break; - case ELEMENT_TYPE_U: - tokenName = SystemUIntPtr; - pbCur++; - break; - case ELEMENT_TYPE_STRING: - tokenName = SystemString; - pbCur++; - break; - case ELEMENT_TYPE_OBJECT: - tokenName = SystemObject; - pbCur++; - break; - case ELEMENT_TYPE_CLASS: - case ELEMENT_TYPE_VALUETYPE: { - pbCur++; - mdToken token; - pbCur += CorSigUncompressToken(pbCur, &token); - tokenName = GetTypeInfo(pImport, token).name; - break; + if (*pbCur == ELEMENT_TYPE_BYREF) + { + pbCur++; + } + + switch (*pbCur) + { + case ELEMENT_TYPE_BOOLEAN: + pEmit->DefineTypeRefByName(corLibRef, SystemBoolean, &token); + break; + case ELEMENT_TYPE_CHAR: + pEmit->DefineTypeRefByName(corLibRef, SystemChar, &token); + break; + case ELEMENT_TYPE_I1: + pEmit->DefineTypeRefByName(corLibRef, SystemSByte, &token); + break; + case ELEMENT_TYPE_U1: + pEmit->DefineTypeRefByName(corLibRef, SystemByte, &token); + break; + case ELEMENT_TYPE_U2: + pEmit->DefineTypeRefByName(corLibRef, SystemUInt16, &token); + break; + case ELEMENT_TYPE_I2: + pEmit->DefineTypeRefByName(corLibRef, SystemInt16, &token); + break; + case ELEMENT_TYPE_I4: + pEmit->DefineTypeRefByName(corLibRef, SystemInt32, &token); + break; + case ELEMENT_TYPE_U4: + pEmit->DefineTypeRefByName(corLibRef, SystemUInt32, &token); + break; + case ELEMENT_TYPE_I8: + pEmit->DefineTypeRefByName(corLibRef, SystemInt64, &token); + break; + case ELEMENT_TYPE_U8: + pEmit->DefineTypeRefByName(corLibRef, SystemUInt64, &token); + break; + case ELEMENT_TYPE_R4: + pEmit->DefineTypeRefByName(corLibRef, SystemSingle, &token); + break; + case ELEMENT_TYPE_R8: + pEmit->DefineTypeRefByName(corLibRef, SystemDouble, &token); + break; + case ELEMENT_TYPE_I: + pEmit->DefineTypeRefByName(corLibRef, SystemIntPtr, &token); + break; + case ELEMENT_TYPE_U: + pEmit->DefineTypeRefByName(corLibRef, SystemUIntPtr, &token); + break; + case ELEMENT_TYPE_STRING: + pEmit->DefineTypeRefByName(corLibRef, SystemString, &token); + break; + case ELEMENT_TYPE_OBJECT: + pEmit->DefineTypeRefByName(corLibRef, SystemObject, &token); + break; + case ELEMENT_TYPE_CLASS: + pbCur++; + token = CorSigUncompressToken(pbCur); + break; + case ELEMENT_TYPE_VALUETYPE: + pbCur++; + token = CorSigUncompressToken(pbCur); + break; + case ELEMENT_TYPE_GENERICINST: + case ELEMENT_TYPE_SZARRAY: + case ELEMENT_TYPE_MVAR: + case ELEMENT_TYPE_VAR: + pEmit->GetTokenFromTypeSpec(pbCur, length - static_cast(pbCur - pStart), &token); + break; + default: + break; } - case ELEMENT_TYPE_SZARRAY: { - pbCur++; - tokenName = GetSigTypeTokName(pbCur, pImport) + WStr("[]"); - break; + return token; +} + +WSTRING GetSigTypeTokName(PCCOR_SIGNATURE& pbCur, const ComPtr& pImport) +{ + WSTRING tokenName = WStr(""); + bool ref_flag = false; + if (*pbCur == ELEMENT_TYPE_BYREF) + { + pbCur++; + ref_flag = true; } - case ELEMENT_TYPE_GENERICINST: { - pbCur++; - tokenName = GetSigTypeTokName(pbCur, pImport); - tokenName += WStr("["); - ULONG num = 0; - pbCur += CorSigUncompressData(pbCur, &num); - for (ULONG i = 0; i < num; i++) { - tokenName += GetSigTypeTokName(pbCur, pImport); - if (i != num - 1) { - tokenName += WStr(","); + + switch (*pbCur) + { + case ELEMENT_TYPE_BOOLEAN: + tokenName = SystemBoolean; + pbCur++; + break; + case ELEMENT_TYPE_CHAR: + tokenName = SystemChar; + pbCur++; + break; + case ELEMENT_TYPE_I1: + tokenName = SystemSByte; + pbCur++; + break; + case ELEMENT_TYPE_U1: + tokenName = SystemByte; + pbCur++; + break; + case ELEMENT_TYPE_U2: + tokenName = SystemUInt16; + pbCur++; + break; + case ELEMENT_TYPE_I2: + tokenName = SystemInt16; + pbCur++; + break; + case ELEMENT_TYPE_I4: + tokenName = SystemInt32; + pbCur++; + break; + case ELEMENT_TYPE_U4: + tokenName = SystemUInt32; + pbCur++; + break; + case ELEMENT_TYPE_I8: + tokenName = SystemInt64; + pbCur++; + break; + case ELEMENT_TYPE_U8: + tokenName = SystemUInt64; + pbCur++; + break; + case ELEMENT_TYPE_R4: + tokenName = SystemSingle; + pbCur++; + break; + case ELEMENT_TYPE_R8: + tokenName = SystemDouble; + pbCur++; + break; + case ELEMENT_TYPE_I: + tokenName = SystemIntPtr; + pbCur++; + break; + case ELEMENT_TYPE_U: + tokenName = SystemUIntPtr; + pbCur++; + break; + case ELEMENT_TYPE_STRING: + tokenName = SystemString; + pbCur++; + break; + case ELEMENT_TYPE_OBJECT: + tokenName = SystemObject; + pbCur++; + break; + case ELEMENT_TYPE_CLASS: + case ELEMENT_TYPE_VALUETYPE: + { + pbCur++; + mdToken token; + pbCur += CorSigUncompressToken(pbCur, &token); + tokenName = GetTypeInfo(pImport, token).name; + break; } - } - tokenName += WStr("]"); - break; - } - case ELEMENT_TYPE_MVAR: { - pbCur++; - ULONG num = 0; - pbCur += CorSigUncompressData(pbCur, &num); - tokenName = WStr("!!") + ToWSTRING(std::to_string(num)); - break; + case ELEMENT_TYPE_SZARRAY: + { + pbCur++; + tokenName = GetSigTypeTokName(pbCur, pImport) + WStr("[]"); + break; + } + case ELEMENT_TYPE_GENERICINST: + { + pbCur++; + tokenName = GetSigTypeTokName(pbCur, pImport); + tokenName += WStr("["); + ULONG num = 0; + pbCur += CorSigUncompressData(pbCur, &num); + for (ULONG i = 0; i < num; i++) + { + tokenName += GetSigTypeTokName(pbCur, pImport); + if (i != num - 1) + { + tokenName += WStr(","); + } + } + tokenName += WStr("]"); + break; + } + case ELEMENT_TYPE_MVAR: + { + pbCur++; + ULONG num = 0; + pbCur += CorSigUncompressData(pbCur, &num); + tokenName = WStr("!!") + ToWSTRING(std::to_string(num)); + break; + } + case ELEMENT_TYPE_VAR: + { + pbCur++; + ULONG num = 0; + pbCur += CorSigUncompressData(pbCur, &num); + tokenName = WStr("!") + ToWSTRING(std::to_string(num)); + break; + } + default: + break; } - case ELEMENT_TYPE_VAR: { - pbCur++; - ULONG num = 0; - pbCur += CorSigUncompressData(pbCur, &num); - tokenName = WStr("!") + ToWSTRING(std::to_string(num)); - break; + + if (ref_flag) + { + tokenName += WStr("&"); } - default: - break; - } - - if (ref_flag) { - tokenName += WStr("&"); - } - return tokenName; + return tokenName; } -WSTRING FunctionMethodArgument::GetTypeTokName(ComPtr& pImport) const { - PCCOR_SIGNATURE pbCur = &pbBase[offset]; - return GetSigTypeTokName(pbCur, pImport); +WSTRING FunctionMethodArgument::GetTypeTokName(ComPtr& pImport) const +{ + PCCOR_SIGNATURE pbCur = &pbBase[offset]; + return GetSigTypeTokName(pbCur, pImport); } -ULONG FunctionMethodArgument::GetSignature(PCCOR_SIGNATURE& data) const { - data = &pbBase[offset]; - return length; +ULONG FunctionMethodArgument::GetSignature(PCCOR_SIGNATURE& data) const +{ + data = &pbBase[offset]; + return length; } // FunctionMethodSignature -bool ParseByte(PCCOR_SIGNATURE& pbCur, PCCOR_SIGNATURE pbEnd, unsigned char* pbOut) { - if (pbCur < pbEnd) { - *pbOut = *pbCur; - pbCur++; - return true; - } +bool ParseByte(PCCOR_SIGNATURE& pbCur, PCCOR_SIGNATURE pbEnd, unsigned char* pbOut) +{ + if (pbCur < pbEnd) + { + *pbOut = *pbCur; + pbCur++; + return true; + } - return false; + return false; } -bool ParseNumber(PCCOR_SIGNATURE& pbCur, PCCOR_SIGNATURE pbEnd, unsigned* pOut) { - // parse the variable length number format (0-4 bytes) +bool ParseNumber(PCCOR_SIGNATURE& pbCur, PCCOR_SIGNATURE pbEnd, unsigned* pOut) +{ + // parse the variable length number format (0-4 bytes) - unsigned char b1 = 0, b2 = 0, b3 = 0, b4 = 0; + unsigned char b1 = 0, b2 = 0, b3 = 0, b4 = 0; - // at least one byte in the encoding, read that + // at least one byte in the encoding, read that - if (!ParseByte(pbCur, pbEnd, &b1)) return false; + if (!ParseByte(pbCur, pbEnd, &b1)) return false; - if (b1 == 0xff) { - // special encoding of 'NULL' - // not sure what this means as a number, don't expect to see it except for - // string lengths which we don't encounter anyway so calling it an error - return false; - } + if (b1 == 0xff) + { + // special encoding of 'NULL' + // not sure what this means as a number, don't expect to see it except for + // string lengths which we don't encounter anyway so calling it an error + return false; + } - // early out on 1 byte encoding - if ((b1 & 0x80) == 0) { - *pOut = (int)b1; - return true; - } + // early out on 1 byte encoding + if ((b1 & 0x80) == 0) + { + *pOut = (int) b1; + return true; + } - // now at least 2 bytes in the encoding, read 2nd byte - if (!ParseByte(pbCur, pbEnd, &b2)) return false; + // now at least 2 bytes in the encoding, read 2nd byte + if (!ParseByte(pbCur, pbEnd, &b2)) return false; - // early out on 2 byte encoding - if ((b1 & 0x40) == 0) { - *pOut = (((b1 & 0x3f) << 8) | b2); - return true; - } + // early out on 2 byte encoding + if ((b1 & 0x40) == 0) + { + *pOut = (((b1 & 0x3f) << 8) | b2); + return true; + } - // must be a 4 byte encoding - if ((b1 & 0x20) != 0) { - // 4 byte encoding has this bit clear -- error if not - return false; - } + // must be a 4 byte encoding + if ((b1 & 0x20) != 0) + { + // 4 byte encoding has this bit clear -- error if not + return false; + } - if (!ParseByte(pbCur, pbEnd, &b3)) return false; + if (!ParseByte(pbCur, pbEnd, &b3)) return false; - if (!ParseByte(pbCur, pbEnd, &b4)) return false; + if (!ParseByte(pbCur, pbEnd, &b4)) return false; - *pOut = ((b1 & 0x1f) << 24) | (b2 << 16) | (b3 << 8) | b4; - return true; + *pOut = ((b1 & 0x1f) << 24) | (b2 << 16) | (b3 << 8) | b4; + return true; } -bool ParseTypeDefOrRefEncoded(PCCOR_SIGNATURE& pbCur, PCCOR_SIGNATURE pbEnd, - unsigned char* pIndexTypeOut, - unsigned* pIndexOut) { - // parse an encoded typedef or typeref - unsigned encoded = 0; +bool ParseTypeDefOrRefEncoded(PCCOR_SIGNATURE& pbCur, PCCOR_SIGNATURE pbEnd, unsigned char* pIndexTypeOut, + unsigned* pIndexOut) +{ + // parse an encoded typedef or typeref + unsigned encoded = 0; - if (!ParseNumber(pbCur, pbEnd, &encoded)) return false; + if (!ParseNumber(pbCur, pbEnd, &encoded)) return false; - *pIndexTypeOut = (unsigned char)(encoded & 0x3); - *pIndexOut = (encoded >> 2); - return true; + *pIndexTypeOut = (unsigned char) (encoded & 0x3); + *pIndexOut = (encoded >> 2); + return true; } /* we don't support @@ -1386,252 +1499,251 @@ bool ParseTypeDefOrRefEncoded(PCCOR_SIGNATURE& pbCur, PCCOR_SIGNATURE pbEnd, ARRAY Type ArrayShape SZARRAY CustomMod+ Type (but we do support SZARRAY Type) */ -bool ParseType(PCCOR_SIGNATURE& pbCur, PCCOR_SIGNATURE pbEnd) { - /* - Type ::= ( BOOLEAN | CHAR | I1 | U1 | U2 | U2 | I4 | U4 | I8 | U8 | R4 | R8 | - I | U | | VALUETYPE TypeDefOrRefEncoded | CLASS TypeDefOrRefEncoded | STRING - | OBJECT - | PTR CustomMod* VOID - | PTR CustomMod* Type - | FNPTR MethodDefSig - | FNPTR MethodRefSig - | ARRAY Type ArrayShape - | SZARRAY CustomMod* Type - | GENERICINST (CLASS | VALUETYPE) TypeDefOrRefEncoded GenArgCount Type * - | VAR Number - | MVAR Number - */ - - unsigned char elem_type; - unsigned index; - unsigned number; - unsigned char indexType; - - if (!ParseByte(pbCur, pbEnd, &elem_type)) return false; - - switch (elem_type) { - case ELEMENT_TYPE_BOOLEAN: - case ELEMENT_TYPE_CHAR: - case ELEMENT_TYPE_I1: - case ELEMENT_TYPE_U1: - case ELEMENT_TYPE_U2: - case ELEMENT_TYPE_I2: - case ELEMENT_TYPE_I4: - case ELEMENT_TYPE_U4: - case ELEMENT_TYPE_I8: - case ELEMENT_TYPE_U8: - case ELEMENT_TYPE_R4: - case ELEMENT_TYPE_R8: - case ELEMENT_TYPE_I: - case ELEMENT_TYPE_U: - case ELEMENT_TYPE_STRING: - case ELEMENT_TYPE_OBJECT: - // simple types - break; - - case ELEMENT_TYPE_PTR: - return false; - - case ELEMENT_TYPE_CLASS: - // CLASS TypeDefOrRefEncoded - if (!ParseTypeDefOrRefEncoded(pbCur, pbEnd, &indexType, &index)) - return false; - break; +bool ParseType(PCCOR_SIGNATURE& pbCur, PCCOR_SIGNATURE pbEnd) +{ + /* + Type ::= ( BOOLEAN | CHAR | I1 | U1 | U2 | U2 | I4 | U4 | I8 | U8 | R4 | R8 | + I | U | | VALUETYPE TypeDefOrRefEncoded | CLASS TypeDefOrRefEncoded | STRING + | OBJECT + | PTR CustomMod* VOID + | PTR CustomMod* Type + | FNPTR MethodDefSig + | FNPTR MethodRefSig + | ARRAY Type ArrayShape + | SZARRAY CustomMod* Type + | GENERICINST (CLASS | VALUETYPE) TypeDefOrRefEncoded GenArgCount Type * + | VAR Number + | MVAR Number + */ + + unsigned char elem_type; + unsigned index; + unsigned number; + unsigned char indexType; + + if (!ParseByte(pbCur, pbEnd, &elem_type)) return false; + + switch (elem_type) + { + case ELEMENT_TYPE_BOOLEAN: + case ELEMENT_TYPE_CHAR: + case ELEMENT_TYPE_I1: + case ELEMENT_TYPE_U1: + case ELEMENT_TYPE_U2: + case ELEMENT_TYPE_I2: + case ELEMENT_TYPE_I4: + case ELEMENT_TYPE_U4: + case ELEMENT_TYPE_I8: + case ELEMENT_TYPE_U8: + case ELEMENT_TYPE_R4: + case ELEMENT_TYPE_R8: + case ELEMENT_TYPE_I: + case ELEMENT_TYPE_U: + case ELEMENT_TYPE_STRING: + case ELEMENT_TYPE_OBJECT: + // simple types + break; + + case ELEMENT_TYPE_PTR: + return false; - case ELEMENT_TYPE_VALUETYPE: - // VALUETYPE TypeDefOrRefEncoded - if (!ParseTypeDefOrRefEncoded(pbCur, pbEnd, &indexType, &index)) - return false; + case ELEMENT_TYPE_CLASS: + // CLASS TypeDefOrRefEncoded + if (!ParseTypeDefOrRefEncoded(pbCur, pbEnd, &indexType, &index)) return false; + break; - break; + case ELEMENT_TYPE_VALUETYPE: + // VALUETYPE TypeDefOrRefEncoded + if (!ParseTypeDefOrRefEncoded(pbCur, pbEnd, &indexType, &index)) return false; - case ELEMENT_TYPE_FNPTR: - // FNPTR MethodDefSig - // FNPTR MethodRefSig + break; - return false; + case ELEMENT_TYPE_FNPTR: + // FNPTR MethodDefSig + // FNPTR MethodRefSig - case ELEMENT_TYPE_ARRAY: - // ARRAY Type ArrayShape - return false; + return false; - case ELEMENT_TYPE_SZARRAY: - // SZARRAY Type + case ELEMENT_TYPE_ARRAY: + // ARRAY Type ArrayShape + return false; - if (*pbCur == ELEMENT_TYPE_CMOD_OPT || *pbCur == ELEMENT_TYPE_CMOD_REQD) - return false; + case ELEMENT_TYPE_SZARRAY: + // SZARRAY Type - if (!ParseType(pbCur, pbEnd)) return false; + if (*pbCur == ELEMENT_TYPE_CMOD_OPT || *pbCur == ELEMENT_TYPE_CMOD_REQD) return false; - break; + if (!ParseType(pbCur, pbEnd)) return false; - case ELEMENT_TYPE_GENERICINST: - // GENERICINST (CLASS | VALUETYPE) TypeDefOrRefEncoded GenArgCount Type * - if (!ParseByte(pbCur, pbEnd, &elem_type)) return false; + break; - if (elem_type != ELEMENT_TYPE_CLASS && - elem_type != ELEMENT_TYPE_VALUETYPE) - return false; + case ELEMENT_TYPE_GENERICINST: + // GENERICINST (CLASS | VALUETYPE) TypeDefOrRefEncoded GenArgCount Type * + if (!ParseByte(pbCur, pbEnd, &elem_type)) return false; - if (!ParseTypeDefOrRefEncoded(pbCur, pbEnd, &indexType, &index)) - return false; + if (elem_type != ELEMENT_TYPE_CLASS && elem_type != ELEMENT_TYPE_VALUETYPE) return false; - if (!ParseNumber(pbCur, pbEnd, &number)) return false; + if (!ParseTypeDefOrRefEncoded(pbCur, pbEnd, &indexType, &index)) return false; - for (unsigned i = 0; i < number; i++) { - if (!ParseType(pbCur, pbEnd)) return false; - } - break; + if (!ParseNumber(pbCur, pbEnd, &number)) return false; - case ELEMENT_TYPE_VAR: - // VAR Number - if (!ParseNumber(pbCur, pbEnd, &number)) return false; + for (unsigned i = 0; i < number; i++) + { + if (!ParseType(pbCur, pbEnd)) return false; + } + break; - break; + case ELEMENT_TYPE_VAR: + // VAR Number + if (!ParseNumber(pbCur, pbEnd, &number)) return false; - case ELEMENT_TYPE_MVAR: - // MVAR Number - if (!ParseNumber(pbCur, pbEnd, &number)) return false; + break; - break; - } + case ELEMENT_TYPE_MVAR: + // MVAR Number + if (!ParseNumber(pbCur, pbEnd, &number)) return false; - return true; + break; + } + + return true; } // Param ::= CustomMod* ( TYPEDBYREF | [BYREF] Type ) // CustomMod* TYPEDBYREF we don't support -bool ParseParam(PCCOR_SIGNATURE& pbCur, PCCOR_SIGNATURE pbEnd) { - if (*pbCur == ELEMENT_TYPE_CMOD_OPT || *pbCur == ELEMENT_TYPE_CMOD_REQD) { - return false; - } +bool ParseParam(PCCOR_SIGNATURE& pbCur, PCCOR_SIGNATURE pbEnd) +{ + if (*pbCur == ELEMENT_TYPE_CMOD_OPT || *pbCur == ELEMENT_TYPE_CMOD_REQD) + { + return false; + } - if (pbCur >= pbEnd) return false; + if (pbCur >= pbEnd) return false; - if (*pbCur == ELEMENT_TYPE_TYPEDBYREF) return false; + if (*pbCur == ELEMENT_TYPE_TYPEDBYREF) return false; - if (*pbCur == ELEMENT_TYPE_BYREF) pbCur++; + if (*pbCur == ELEMENT_TYPE_BYREF) pbCur++; - return ParseType(pbCur, pbEnd); + return ParseType(pbCur, pbEnd); } // RetType ::= CustomMod* ( VOID | TYPEDBYREF | [BYREF] Type ) // CustomMod* TYPEDBYREF we don't support -bool ParseRetType(PCCOR_SIGNATURE& pbCur, PCCOR_SIGNATURE pbEnd) { +bool ParseRetType(PCCOR_SIGNATURE& pbCur, PCCOR_SIGNATURE pbEnd) +{ - if (*pbCur == ELEMENT_TYPE_CMOD_OPT || *pbCur == ELEMENT_TYPE_CMOD_REQD) - return false; + if (*pbCur == ELEMENT_TYPE_CMOD_OPT || *pbCur == ELEMENT_TYPE_CMOD_REQD) return false; - if (pbCur >= pbEnd) - return false; + if (pbCur >= pbEnd) return false; - if (*pbCur == ELEMENT_TYPE_TYPEDBYREF) - return false; + if (*pbCur == ELEMENT_TYPE_TYPEDBYREF) return false; - if (*pbCur == ELEMENT_TYPE_VOID) { - pbCur++; - return true; - } + if (*pbCur == ELEMENT_TYPE_VOID) + { + pbCur++; + return true; + } - if (*pbCur == ELEMENT_TYPE_BYREF) - pbCur++; + if (*pbCur == ELEMENT_TYPE_BYREF) pbCur++; - return ParseType(pbCur, pbEnd); + return ParseType(pbCur, pbEnd); } +HRESULT FunctionMethodSignature::TryParse() +{ + PCCOR_SIGNATURE pbCur = pbBase; + PCCOR_SIGNATURE pbEnd = pbBase + len; + unsigned char elem_type; -HRESULT FunctionMethodSignature::TryParse() { - PCCOR_SIGNATURE pbCur = pbBase; - PCCOR_SIGNATURE pbEnd = pbBase + len; - unsigned char elem_type; - - IfFalseRetFAIL(ParseByte(pbCur, pbEnd, &elem_type)); + IfFalseRetFAIL(ParseByte(pbCur, pbEnd, &elem_type)); - if (elem_type & IMAGE_CEE_CS_CALLCONV_GENERIC) { - unsigned gen_param_count; - IfFalseRetFAIL(ParseNumber(pbCur, pbEnd, &gen_param_count)); - numberOfTypeArguments = gen_param_count; - } + if (elem_type & IMAGE_CEE_CS_CALLCONV_GENERIC) + { + unsigned gen_param_count; + IfFalseRetFAIL(ParseNumber(pbCur, pbEnd, &gen_param_count)); + numberOfTypeArguments = gen_param_count; + } - unsigned param_count; - IfFalseRetFAIL(ParseNumber(pbCur, pbEnd, ¶m_count)); - numberOfArguments = param_count; + unsigned param_count; + IfFalseRetFAIL(ParseNumber(pbCur, pbEnd, ¶m_count)); + numberOfArguments = param_count; - const PCCOR_SIGNATURE pbRet = pbCur; + const PCCOR_SIGNATURE pbRet = pbCur; - IfFalseRetFAIL(ParseRetType(pbCur, pbEnd)); - ret.pbBase = pbBase; - ret.length = (ULONG)(pbCur - pbRet); - ret.offset = (ULONG)(pbCur - pbBase - ret.length); + IfFalseRetFAIL(ParseRetType(pbCur, pbEnd)); + ret.pbBase = pbBase; + ret.length = (ULONG)(pbCur - pbRet); + ret.offset = (ULONG)(pbCur - pbBase - ret.length); - auto fEncounteredSentinal = false; - for (unsigned i = 0; i < param_count; i++) { - if (pbCur >= pbEnd) return E_FAIL; + auto fEncounteredSentinal = false; + for (unsigned i = 0; i < param_count; i++) + { + if (pbCur >= pbEnd) return E_FAIL; - if (*pbCur == ELEMENT_TYPE_SENTINEL) { - if (fEncounteredSentinal) return E_FAIL; + if (*pbCur == ELEMENT_TYPE_SENTINEL) + { + if (fEncounteredSentinal) return E_FAIL; - fEncounteredSentinal = true; - pbCur++; - } + fEncounteredSentinal = true; + pbCur++; + } - const PCCOR_SIGNATURE pbParam = pbCur; + const PCCOR_SIGNATURE pbParam = pbCur; - IfFalseRetFAIL(ParseParam(pbCur, pbEnd)); + IfFalseRetFAIL(ParseParam(pbCur, pbEnd)); - FunctionMethodArgument argument{}; - argument.pbBase = pbBase; - argument.length = (ULONG)(pbCur - pbParam); - argument.offset = (ULONG)(pbCur - pbBase - argument.length); + FunctionMethodArgument argument{}; + argument.pbBase = pbBase; + argument.length = (ULONG)(pbCur - pbParam); + argument.offset = (ULONG)(pbCur - pbBase - argument.length); - params.push_back(argument); - } + params.push_back(argument); + } - return S_OK; + return S_OK; } -bool FindTypeDefByName( - const trace::WSTRING instrumentationTargetMethodTypeName, - const trace::WSTRING assemblyName, - const ComPtr& metadata_import, mdTypeDef& typeDef) { - mdTypeDef parentTypeDef = mdTypeDefNil; - auto nameParts = Split(instrumentationTargetMethodTypeName, '+'); - auto instrumentedMethodTypeName = instrumentationTargetMethodTypeName; - - if (nameParts.size() == 2) { - // We're instrumenting a nested class, find the parent first - auto hr = metadata_import->FindTypeDefByName(nameParts[0].c_str(), - mdTokenNil, &parentTypeDef); - - if (FAILED(hr)) { - // This can happen between .NET framework and .NET core, not all apis are - // available in both. Eg: WinHttpHandler, CurlHandler, and some methods in - // System.Data - Debug("Can't load the parent TypeDef: ", nameParts[0], - " for nested class: ", instrumentationTargetMethodTypeName, - ", Module: ", assemblyName); - return false; +bool FindTypeDefByName(const trace::WSTRING instrumentationTargetMethodTypeName, const trace::WSTRING assemblyName, + const ComPtr& metadata_import, mdTypeDef& typeDef) +{ + mdTypeDef parentTypeDef = mdTypeDefNil; + auto nameParts = Split(instrumentationTargetMethodTypeName, '+'); + auto instrumentedMethodTypeName = instrumentationTargetMethodTypeName; + + if (nameParts.size() == 2) + { + // We're instrumenting a nested class, find the parent first + auto hr = metadata_import->FindTypeDefByName(nameParts[0].c_str(), mdTokenNil, &parentTypeDef); + + if (FAILED(hr)) + { + // This can happen between .NET framework and .NET core, not all apis are + // available in both. Eg: WinHttpHandler, CurlHandler, and some methods in + // System.Data + Debug("Can't load the parent TypeDef: ", nameParts[0], + " for nested class: ", instrumentationTargetMethodTypeName, ", Module: ", assemblyName); + return false; + } + instrumentedMethodTypeName = nameParts[1]; + } + else if (nameParts.size() > 2) + { + Warn("Invalid TypeDef-only one layer of nested classes are supported: ", instrumentationTargetMethodTypeName, + ", Module: ", assemblyName); + return false; } - instrumentedMethodTypeName = nameParts[1]; - } else if (nameParts.size() > 2) { - Warn("Invalid TypeDef-only one layer of nested classes are supported: ", - instrumentationTargetMethodTypeName, ", Module: ", assemblyName); - return false; - } - - // Find the type we're instrumenting - auto hr = metadata_import->FindTypeDefByName( - instrumentedMethodTypeName.c_str(), parentTypeDef, &typeDef); - if (FAILED(hr)) { - // This can happen between .NET framework and .NET core, not all apis are - // available in both. Eg: WinHttpHandler, CurlHandler, and some methods in - // System.Data - Debug("Can't load the TypeDef for: ", instrumentedMethodTypeName, - ", Module: ", assemblyName); - return false; - } + // Find the type we're instrumenting + auto hr = metadata_import->FindTypeDefByName(instrumentedMethodTypeName.c_str(), parentTypeDef, &typeDef); + if (FAILED(hr)) + { + // This can happen between .NET framework and .NET core, not all apis are + // available in both. Eg: WinHttpHandler, CurlHandler, and some methods in + // System.Data + Debug("Can't load the TypeDef for: ", instrumentedMethodTypeName, ", Module: ", assemblyName); + return false; + } - return true; + return true; } -} // namespace trace +} // namespace trace diff --git a/src/Datadog.Trace.ClrProfiler.Native/clr_helpers.h b/src/Datadog.Trace.ClrProfiler.Native/clr_helpers.h index 028017cf2b..1a6a47ecea 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/clr_helpers.h +++ b/src/Datadog.Trace.ClrProfiler.Native/clr_helpers.h @@ -8,10 +8,11 @@ #include "com_ptr.h" #include "integration.h" -#include #include "util.h" +#include -namespace trace { +namespace trace +{ class ModuleMetadata; const size_t kNameMaxSize = 1024; @@ -45,457 +46,517 @@ template class EnumeratorIterator; template -class Enumerator { - private: - const std::function callback_; - const std::function close_; - mutable HCORENUM ptr_; - - public: - Enumerator(std::function callback, - std::function close) - : callback_(callback), close_(close), ptr_(nullptr) {} +class Enumerator +{ +private: + const std::function callback_; + const std::function close_; + mutable HCORENUM ptr_; + +public: + Enumerator(std::function callback, std::function close) : + callback_(callback), close_(close), ptr_(nullptr) + { + } - Enumerator(const Enumerator& other) = default; + Enumerator(const Enumerator& other) = default; - Enumerator& operator=(const Enumerator& other) = default; + Enumerator& operator=(const Enumerator& other) = default; - ~Enumerator() { close_(ptr_); } + ~Enumerator() + { + close_(ptr_); + } - EnumeratorIterator begin() const { - return EnumeratorIterator(this, S_OK); - } + EnumeratorIterator begin() const + { + return EnumeratorIterator(this, S_OK); + } - EnumeratorIterator end() const { - return EnumeratorIterator(this, S_FALSE); - } + EnumeratorIterator end() const + { + return EnumeratorIterator(this, S_FALSE); + } - HRESULT Next(T arr[], ULONG max, ULONG* cnt) const { - return callback_(&ptr_, arr, max, cnt); - } + HRESULT Next(T arr[], ULONG max, ULONG* cnt) const + { + return callback_(&ptr_, arr, max, cnt); + } }; template -class EnumeratorIterator { - private: - const Enumerator* enumerator_; - HRESULT status_ = S_FALSE; - T arr_[kEnumeratorMax]{}; - ULONG idx_ = 0; - ULONG sz_ = 0; - - public: - EnumeratorIterator(const Enumerator* enumerator, HRESULT status) - : enumerator_(enumerator) { - if (status == S_OK) { - status_ = enumerator_->Next(arr_, kEnumeratorMax, &sz_); - if (status_ == S_OK && sz_ == 0) { - status_ = S_FALSE; - } - } else { - status_ = status; - } - } - - bool operator!=(EnumeratorIterator const& other) const { - return enumerator_ != other.enumerator_ || - (status_ == S_OK) != (other.status_ == S_OK); - } - - T const& operator*() const { return arr_[idx_]; } - - EnumeratorIterator& operator++() { - if (idx_ < sz_ - 1) { - idx_++; - } else { - idx_ = 0; - status_ = enumerator_->Next(arr_, kEnumeratorMax, &sz_); - if (status_ == S_OK && sz_ == 0) { - status_ = S_FALSE; - } - } - return *this; - } +class EnumeratorIterator +{ +private: + const Enumerator* enumerator_; + HRESULT status_ = S_FALSE; + T arr_[kEnumeratorMax]{}; + ULONG idx_ = 0; + ULONG sz_ = 0; + +public: + EnumeratorIterator(const Enumerator* enumerator, HRESULT status) : enumerator_(enumerator) + { + if (status == S_OK) + { + status_ = enumerator_->Next(arr_, kEnumeratorMax, &sz_); + if (status_ == S_OK && sz_ == 0) + { + status_ = S_FALSE; + } + } + else + { + status_ = status; + } + } + + bool operator!=(EnumeratorIterator const& other) const + { + return enumerator_ != other.enumerator_ || (status_ == S_OK) != (other.status_ == S_OK); + } + + T const& operator*() const + { + return arr_[idx_]; + } + + EnumeratorIterator& operator++() + { + if (idx_ < sz_ - 1) + { + idx_++; + } + else + { + idx_ = 0; + status_ = enumerator_->Next(arr_, kEnumeratorMax, &sz_); + if (status_ == S_OK && sz_ == 0) + { + status_ = S_FALSE; + } + } + return *this; + } }; -static Enumerator EnumTypeDefs( - const ComPtr& metadata_import) { - return Enumerator( - [metadata_import](HCORENUM* ptr, mdTypeDef arr[], ULONG max, - ULONG* cnt) -> HRESULT { - return metadata_import->EnumTypeDefs(ptr, arr, max, cnt); - }, - [metadata_import](HCORENUM ptr) -> void { - metadata_import->CloseEnum(ptr); - }); +static Enumerator EnumTypeDefs(const ComPtr& metadata_import) +{ + return Enumerator( + [metadata_import](HCORENUM* ptr, mdTypeDef arr[], ULONG max, ULONG* cnt) -> HRESULT { + return metadata_import->EnumTypeDefs(ptr, arr, max, cnt); + }, + [metadata_import](HCORENUM ptr) -> void { metadata_import->CloseEnum(ptr); }); } -static Enumerator EnumTypeRefs( - const ComPtr& metadata_import) { - return Enumerator( - [metadata_import](HCORENUM* ptr, mdTypeRef arr[], ULONG max, - ULONG* cnt) -> HRESULT { - return metadata_import->EnumTypeRefs(ptr, arr, max, cnt); - }, - [metadata_import](HCORENUM ptr) -> void { - metadata_import->CloseEnum(ptr); - }); +static Enumerator EnumTypeRefs(const ComPtr& metadata_import) +{ + return Enumerator( + [metadata_import](HCORENUM* ptr, mdTypeRef arr[], ULONG max, ULONG* cnt) -> HRESULT { + return metadata_import->EnumTypeRefs(ptr, arr, max, cnt); + }, + [metadata_import](HCORENUM ptr) -> void { metadata_import->CloseEnum(ptr); }); } -static Enumerator EnumMethods( - const ComPtr& metadata_import, - const mdToken& parent_token) { - return Enumerator( - [metadata_import, parent_token](HCORENUM* ptr, mdMethodDef arr[], - ULONG max, ULONG* cnt) -> HRESULT { - return metadata_import->EnumMethods(ptr, parent_token, arr, max, cnt); - }, - [metadata_import](HCORENUM ptr) -> void { - metadata_import->CloseEnum(ptr); - }); +static Enumerator EnumMethods(const ComPtr& metadata_import, const mdToken& parent_token) +{ + return Enumerator( + [metadata_import, parent_token](HCORENUM* ptr, mdMethodDef arr[], ULONG max, ULONG* cnt) -> HRESULT { + return metadata_import->EnumMethods(ptr, parent_token, arr, max, cnt); + }, + [metadata_import](HCORENUM ptr) -> void { metadata_import->CloseEnum(ptr); }); } -static Enumerator EnumMemberRefs( - const ComPtr& metadata_import, - const mdToken& parent_token) { - return Enumerator( - [metadata_import, parent_token](HCORENUM* ptr, mdMemberRef arr[], - ULONG max, ULONG* cnt) -> HRESULT { - return metadata_import->EnumMemberRefs(ptr, parent_token, arr, max, - cnt); - }, - [metadata_import](HCORENUM ptr) -> void { - metadata_import->CloseEnum(ptr); - }); +static Enumerator EnumMemberRefs(const ComPtr& metadata_import, + const mdToken& parent_token) +{ + return Enumerator( + [metadata_import, parent_token](HCORENUM* ptr, mdMemberRef arr[], ULONG max, ULONG* cnt) -> HRESULT { + return metadata_import->EnumMemberRefs(ptr, parent_token, arr, max, cnt); + }, + [metadata_import](HCORENUM ptr) -> void { metadata_import->CloseEnum(ptr); }); } -static Enumerator EnumModuleRefs( - const ComPtr& metadata_import) { - return Enumerator( - [metadata_import](HCORENUM* ptr, mdModuleRef arr[], ULONG max, - ULONG* cnt) -> HRESULT { - return metadata_import->EnumModuleRefs(ptr, arr, max, cnt); - }, - [metadata_import](HCORENUM ptr) -> void { - metadata_import->CloseEnum(ptr); - }); +static Enumerator EnumModuleRefs(const ComPtr& metadata_import) +{ + return Enumerator( + [metadata_import](HCORENUM* ptr, mdModuleRef arr[], ULONG max, ULONG* cnt) -> HRESULT { + return metadata_import->EnumModuleRefs(ptr, arr, max, cnt); + }, + [metadata_import](HCORENUM ptr) -> void { metadata_import->CloseEnum(ptr); }); } -static Enumerator EnumAssemblyRefs( - const ComPtr& assembly_import) { - return Enumerator( - [assembly_import](HCORENUM* ptr, mdAssemblyRef arr[], ULONG max, - ULONG* cnt) -> HRESULT { - return assembly_import->EnumAssemblyRefs(ptr, arr, max, cnt); - }, - [assembly_import](HCORENUM ptr) -> void { - assembly_import->CloseEnum(ptr); - }); +static Enumerator EnumAssemblyRefs(const ComPtr& assembly_import) +{ + return Enumerator( + [assembly_import](HCORENUM* ptr, mdAssemblyRef arr[], ULONG max, ULONG* cnt) -> HRESULT { + return assembly_import->EnumAssemblyRefs(ptr, arr, max, cnt); + }, + [assembly_import](HCORENUM ptr) -> void { assembly_import->CloseEnum(ptr); }); } -struct RuntimeInformation { - COR_PRF_RUNTIME_TYPE runtime_type; - USHORT major_version; - USHORT minor_version; - USHORT build_version; - USHORT qfe_version; - - RuntimeInformation() : runtime_type((COR_PRF_RUNTIME_TYPE)0x0), major_version(0), minor_version(0), build_version(0), qfe_version(0) {} - - RuntimeInformation(COR_PRF_RUNTIME_TYPE runtime_type, USHORT major_version, USHORT minor_version, USHORT build_version, USHORT qfe_version) - : runtime_type(runtime_type), - major_version(major_version), - minor_version(minor_version), - build_version(build_version), - qfe_version(qfe_version) {} - - RuntimeInformation& operator=(const RuntimeInformation& other) { - runtime_type = other.runtime_type; - major_version = other.major_version; - minor_version = other.minor_version; - build_version = other.build_version; - qfe_version = other.qfe_version; - return *this; - } - - bool is_desktop() const { return runtime_type == COR_PRF_DESKTOP_CLR; } - bool is_core() const { return runtime_type == COR_PRF_CORE_CLR; } +struct RuntimeInformation +{ + COR_PRF_RUNTIME_TYPE runtime_type; + USHORT major_version; + USHORT minor_version; + USHORT build_version; + USHORT qfe_version; + + RuntimeInformation() : + runtime_type((COR_PRF_RUNTIME_TYPE) 0x0), major_version(0), minor_version(0), build_version(0), qfe_version(0) + { + } + + RuntimeInformation(COR_PRF_RUNTIME_TYPE runtime_type, USHORT major_version, USHORT minor_version, + USHORT build_version, USHORT qfe_version) : + runtime_type(runtime_type), + major_version(major_version), + minor_version(minor_version), + build_version(build_version), + qfe_version(qfe_version) + { + } + + RuntimeInformation& operator=(const RuntimeInformation& other) + { + runtime_type = other.runtime_type; + major_version = other.major_version; + minor_version = other.minor_version; + build_version = other.build_version; + qfe_version = other.qfe_version; + return *this; + } + + bool is_desktop() const + { + return runtime_type == COR_PRF_DESKTOP_CLR; + } + bool is_core() const + { + return runtime_type == COR_PRF_CORE_CLR; + } }; -struct AssemblyInfo { - const AssemblyID id; - const WSTRING name; - const ModuleID manifest_module_id; - const AppDomainID app_domain_id; - const WSTRING app_domain_name; +struct AssemblyInfo +{ + const AssemblyID id; + const WSTRING name; + const ModuleID manifest_module_id; + const AppDomainID app_domain_id; + const WSTRING app_domain_name; - AssemblyInfo() : id(0), name(WStr("")), manifest_module_id(0), app_domain_id(0), app_domain_name(WStr("")) {} + AssemblyInfo() : id(0), name(WStr("")), manifest_module_id(0), app_domain_id(0), app_domain_name(WStr("")) + { + } - AssemblyInfo(AssemblyID id, WSTRING name, ModuleID manifest_module_id, AppDomainID app_domain_id, - WSTRING app_domain_name) - : id(id), + AssemblyInfo(AssemblyID id, WSTRING name, ModuleID manifest_module_id, AppDomainID app_domain_id, + WSTRING app_domain_name) : + id(id), name(name), manifest_module_id(manifest_module_id), app_domain_id(app_domain_id), - app_domain_name(app_domain_name) {} + app_domain_name(app_domain_name) + { + } - bool IsValid() const { return id != 0; } + bool IsValid() const + { + return id != 0; + } }; -struct AssemblyMetadata { - const ModuleID module_id; - const WSTRING name; - const mdAssembly assembly_token; - const Version version; +struct AssemblyMetadata +{ + const ModuleID module_id; + const WSTRING name; + const mdAssembly assembly_token; + const Version version; - AssemblyMetadata() : module_id(0), name(WStr("")), assembly_token(mdTokenNil) {} + AssemblyMetadata() : module_id(0), name(WStr("")), assembly_token(mdTokenNil) + { + } - AssemblyMetadata(ModuleID module_id, WSTRING name, mdAssembly assembly_token, - USHORT major, USHORT minor, USHORT build, USHORT revision) - : module_id(module_id), + AssemblyMetadata(ModuleID module_id, WSTRING name, mdAssembly assembly_token, USHORT major, USHORT minor, + USHORT build, USHORT revision) : + module_id(module_id), name(name), assembly_token(assembly_token), - version(Version(major, minor, build, revision)) {} + version(Version(major, minor, build, revision)) + { + } - bool IsValid() const { return module_id != 0; } + bool IsValid() const + { + return module_id != 0; + } }; -struct AssemblyProperty { - const void* ppbPublicKey; - ULONG pcbPublicKey; - ULONG pulHashAlgId; - ASSEMBLYMETADATA pMetaData{}; - WSTRING szName; - DWORD assemblyFlags = 0; - - AssemblyProperty() - : ppbPublicKey(nullptr), pcbPublicKey(0), pulHashAlgId(0), szName(WStr("")) {} +struct AssemblyProperty +{ + const void* ppbPublicKey; + ULONG pcbPublicKey; + ULONG pulHashAlgId; + ASSEMBLYMETADATA pMetaData{}; + WSTRING szName; + DWORD assemblyFlags = 0; + + AssemblyProperty() : ppbPublicKey(nullptr), pcbPublicKey(0), pulHashAlgId(0), szName(WStr("")) + { + } }; -struct ModuleInfo { - const ModuleID id; - const WSTRING path; - const AssemblyInfo assembly; - const DWORD flags; +struct ModuleInfo +{ + const ModuleID id; + const WSTRING path; + const AssemblyInfo assembly; + const DWORD flags; - ModuleInfo() : id(0), path(WStr("")), assembly({}), flags(0) {} - ModuleInfo(ModuleID id, WSTRING path, AssemblyInfo assembly, DWORD flags) - : id(id), path(path), assembly(assembly), flags(flags) {} + ModuleInfo() : id(0), path(WStr("")), assembly({}), flags(0) + { + } + ModuleInfo(ModuleID id, WSTRING path, AssemblyInfo assembly, DWORD flags) : + id(id), path(path), assembly(assembly), flags(flags) + { + } - bool IsValid() const { return id != 0; } + bool IsValid() const + { + return id != 0; + } - bool IsWindowsRuntime() const { - return ((flags & COR_PRF_MODULE_WINDOWS_RUNTIME) != 0); - } + bool IsWindowsRuntime() const + { + return ((flags & COR_PRF_MODULE_WINDOWS_RUNTIME) != 0); + } }; -struct TypeInfo { - const mdToken id; - const WSTRING name; - const mdTypeSpec type_spec; - const ULONG32 token_type; - const TypeInfo* extend_from; - const bool valueType; - const bool isGeneric; - const TypeInfo* parent_type; - - TypeInfo() - : id(0), +struct TypeInfo +{ + const mdToken id; + const WSTRING name; + const mdTypeSpec type_spec; + const ULONG32 token_type; + const TypeInfo* extend_from; + const bool valueType; + const bool isGeneric; + const TypeInfo* parent_type; + + TypeInfo() : + id(0), name(WStr("")), type_spec(0), token_type(0), extend_from(nullptr), valueType(false), isGeneric(false), - parent_type(nullptr) {} - TypeInfo(mdToken id, WSTRING name, mdTypeSpec type_spec, ULONG32 token_type, - const TypeInfo* extend_from, bool valueType, bool isGeneric, - const TypeInfo* parent_type) - : id(id), + parent_type(nullptr) + { + } + TypeInfo(mdToken id, WSTRING name, mdTypeSpec type_spec, ULONG32 token_type, const TypeInfo* extend_from, + bool valueType, bool isGeneric, const TypeInfo* parent_type) : + id(id), name(name), type_spec(type_spec), token_type(token_type), extend_from(extend_from), valueType(valueType), isGeneric(isGeneric), - parent_type(parent_type) {} + parent_type(parent_type) + { + } - bool IsValid() const { return id != 0; } + bool IsValid() const + { + return id != 0; + } }; -enum MethodArgumentTypeFlag { - TypeFlagByRef = 0x01, - TypeFlagVoid = 0x02, - TypeFlagBoxedType = 0x04 +enum MethodArgumentTypeFlag +{ + TypeFlagByRef = 0x01, + TypeFlagVoid = 0x02, + TypeFlagBoxedType = 0x04 }; -struct FunctionMethodArgument { - ULONG offset; - ULONG length; - PCCOR_SIGNATURE pbBase; - mdToken GetTypeTok(ComPtr& pEmit, - mdAssemblyRef corLibRef) const; - WSTRING GetTypeTokName(ComPtr& pImport) const; - int GetTypeFlags(unsigned& elementType) const; - ULONG GetSignature(PCCOR_SIGNATURE& data) const; +struct FunctionMethodArgument +{ + ULONG offset; + ULONG length; + PCCOR_SIGNATURE pbBase; + mdToken GetTypeTok(ComPtr& pEmit, mdAssemblyRef corLibRef) const; + WSTRING GetTypeTokName(ComPtr& pImport) const; + int GetTypeFlags(unsigned& elementType) const; + ULONG GetSignature(PCCOR_SIGNATURE& data) const; }; -struct FunctionMethodSignature { - private: - PCCOR_SIGNATURE pbBase; - unsigned len; - ULONG numberOfTypeArguments = 0; - ULONG numberOfArguments = 0; - FunctionMethodArgument ret{}; - std::vector params; - - public: - FunctionMethodSignature() : pbBase(nullptr), len(0) {} - FunctionMethodSignature(PCCOR_SIGNATURE pb, unsigned cbBuffer) { - pbBase = pb; - len = cbBuffer; - }; - ULONG NumberOfTypeArguments() const { return numberOfTypeArguments; } - ULONG NumberOfArguments() const { return numberOfArguments; } - WSTRING str() const { return HexStr(pbBase, len); } - FunctionMethodArgument GetRet() const { return ret; } - std::vector GetMethodArguments() const { return params; } - HRESULT TryParse(); - bool operator==(const FunctionMethodSignature& other) const { - return memcmp(pbBase, other.pbBase, len); - } - CorCallingConvention CallingConvention() const { - return CorCallingConvention(len == 0 ? 0 : pbBase[0]); - } - bool IsEmpty() const { return len == 0; } +struct FunctionMethodSignature +{ +private: + PCCOR_SIGNATURE pbBase; + unsigned len; + ULONG numberOfTypeArguments = 0; + ULONG numberOfArguments = 0; + FunctionMethodArgument ret{}; + std::vector params; + +public: + FunctionMethodSignature() : pbBase(nullptr), len(0) + { + } + FunctionMethodSignature(PCCOR_SIGNATURE pb, unsigned cbBuffer) + { + pbBase = pb; + len = cbBuffer; + }; + ULONG NumberOfTypeArguments() const + { + return numberOfTypeArguments; + } + ULONG NumberOfArguments() const + { + return numberOfArguments; + } + WSTRING str() const + { + return HexStr(pbBase, len); + } + FunctionMethodArgument GetRet() const + { + return ret; + } + std::vector GetMethodArguments() const + { + return params; + } + HRESULT TryParse(); + bool operator==(const FunctionMethodSignature& other) const + { + return memcmp(pbBase, other.pbBase, len); + } + CorCallingConvention CallingConvention() const + { + return CorCallingConvention(len == 0 ? 0 : pbBase[0]); + } + bool IsEmpty() const + { + return len == 0; + } }; +struct FunctionInfo +{ + const mdToken id; + const WSTRING name; + const TypeInfo type; + const BOOL is_generic; + const MethodSignature signature; + const MethodSignature function_spec_signature; + const mdToken method_def_id; + FunctionMethodSignature method_signature; + + FunctionInfo() : id(0), name(WStr("")), type({}), is_generic(false), method_def_id(0), method_signature({}) + { + } -struct FunctionInfo { - const mdToken id; - const WSTRING name; - const TypeInfo type; - const BOOL is_generic; - const MethodSignature signature; - const MethodSignature function_spec_signature; - const mdToken method_def_id; - FunctionMethodSignature method_signature; - - FunctionInfo() - : id(0), name(WStr("")), type({}), is_generic(false), method_def_id(0), method_signature({}) {} - - FunctionInfo(mdToken id, WSTRING name, TypeInfo type, - MethodSignature signature, - MethodSignature function_spec_signature, - mdToken method_def_id, - FunctionMethodSignature method_signature) - : id(id), + FunctionInfo(mdToken id, WSTRING name, TypeInfo type, MethodSignature signature, + MethodSignature function_spec_signature, mdToken method_def_id, + FunctionMethodSignature method_signature) : + id(id), name(name), type(type), is_generic(true), signature(signature), function_spec_signature(function_spec_signature), method_def_id(method_def_id), - method_signature(method_signature) {} + method_signature(method_signature) + { + } - FunctionInfo(mdToken id, WSTRING name, TypeInfo type, - MethodSignature signature, - FunctionMethodSignature method_signature) - : id(id), + FunctionInfo(mdToken id, WSTRING name, TypeInfo type, MethodSignature signature, + FunctionMethodSignature method_signature) : + id(id), name(name), type(type), is_generic(false), signature(signature), method_def_id(0), - method_signature(method_signature) {} + method_signature(method_signature) + { + } - bool IsValid() const { return id != 0; } + bool IsValid() const + { + return id != 0; + } }; RuntimeInformation GetRuntimeInformation(ICorProfilerInfo4* info); -AssemblyInfo GetAssemblyInfo(ICorProfilerInfo4* info, - const AssemblyID& assembly_id); +AssemblyInfo GetAssemblyInfo(ICorProfilerInfo4* info, const AssemblyID& assembly_id); -AssemblyMetadata GetAssemblyMetadata( - const ModuleID& module_id, - const ComPtr& assembly_import); +AssemblyMetadata GetAssemblyMetadata(const ModuleID& module_id, const ComPtr& assembly_import); -AssemblyMetadata GetAssemblyImportMetadata( - const ComPtr& assembly_import); +AssemblyMetadata GetAssemblyImportMetadata(const ComPtr& assembly_import); -AssemblyMetadata GetReferencedAssemblyMetadata( - const ComPtr& assembly_import, - const mdAssemblyRef& assembly_ref); +AssemblyMetadata GetReferencedAssemblyMetadata(const ComPtr& assembly_import, + const mdAssemblyRef& assembly_ref); -FunctionInfo GetFunctionInfo(const ComPtr& metadata_import, - const mdToken& token); +FunctionInfo GetFunctionInfo(const ComPtr& metadata_import, const mdToken& token); ModuleInfo GetModuleInfo(ICorProfilerInfo4* info, const ModuleID& module_id); -TypeInfo GetTypeInfo(const ComPtr& metadata_import, - const mdToken& token); +TypeInfo GetTypeInfo(const ComPtr& metadata_import, const mdToken& token); -mdAssemblyRef FindAssemblyRef( - const ComPtr& assembly_import, - const WSTRING& assembly_name); +mdAssemblyRef FindAssemblyRef(const ComPtr& assembly_import, const WSTRING& assembly_name); // FilterIntegrationsByName removes integrations whose names are specified in // disabled_integration_names -std::vector FilterIntegrationsByName( - const std::vector& integrations, - const std::vector& disabled_integration_names); +std::vector FilterIntegrationsByName(const std::vector& integrations, + const std::vector& disabled_integration_names); // FlattenIntegrations flattens integrations to per method structures -std::vector FlattenIntegrations( - const std::vector& integrations, bool is_calltarget_enabled); +std::vector FlattenIntegrations(const std::vector& integrations, + bool is_calltarget_enabled); // FilterIntegrationsByCaller removes any integrations which have a caller and // its not set to the module -std::vector FilterIntegrationsByCaller( - const std::vector& integration_methods, - const AssemblyInfo assembly); +std::vector FilterIntegrationsByCaller(const std::vector& integration_methods, + const AssemblyInfo assembly); // FilterIntegrationsByTarget removes any integrations which have a target not // referenced by the module's assembly import -std::vector FilterIntegrationsByTarget( - const std::vector& integration_methods, - const ComPtr& assembly_import); +std::vector FilterIntegrationsByTarget(const std::vector& integration_methods, + const ComPtr& assembly_import); // FilterIntegrationsByTargetAssemblyName removes any integrations which target any // of the specified assemblies -std::vector FilterIntegrationsByTargetAssemblyName( - const std::vector& integration_methods, - const std::vector& excluded_assembly_names); +std::vector +FilterIntegrationsByTargetAssemblyName(const std::vector& integration_methods, + const std::vector& excluded_assembly_names); -mdMethodSpec DefineMethodSpec(const ComPtr& metadata_emit, - const mdToken& token, +mdMethodSpec DefineMethodSpec(const ComPtr& metadata_emit, const mdToken& token, const MethodSignature& signature); bool DisableOptimizations(); bool EnableInlining(bool defaultValue); -bool IsCallTargetEnabled(); +bool IsCallTargetEnabled(bool defaultValue); -bool TryParseSignatureTypes(const ComPtr& metadata_import, - const FunctionInfo& function_info, - std::vector& signature_result); +bool TryParseSignatureTypes(const ComPtr& metadata_import, const FunctionInfo& function_info, + std::vector& signature_result); -HRESULT GetCorLibAssemblyRef(const ComPtr& assembly_emit, - AssemblyProperty& corAssemblyProperty, +HRESULT GetCorLibAssemblyRef(const ComPtr& assembly_emit, AssemblyProperty& corAssemblyProperty, mdAssemblyRef* corlib_ref); bool ReturnTypeIsValueTypeOrGeneric(const ComPtr& metadata_import, - const ComPtr& metadata_emit, - const ComPtr& assembly_emit, - AssemblyProperty& corAssemblyProperty, - const mdToken targetFunctionToken, - const MethodSignature targetFunctionSignature, - mdToken* ret_type_token); - -bool FindTypeDefByName(const trace::WSTRING instrumentationTargetMethodTypeName, - const trace::WSTRING assemblyName, - const ComPtr& metadata_import, - mdTypeDef& typeDef); -} // namespace trace - -#endif // DD_CLR_PROFILER_CLR_HELPERS_H_ + const ComPtr& metadata_emit, + const ComPtr& assembly_emit, + AssemblyProperty& corAssemblyProperty, const mdToken targetFunctionToken, + const MethodSignature targetFunctionSignature, mdToken* ret_type_token); + +bool FindTypeDefByName(const trace::WSTRING instrumentationTargetMethodTypeName, const trace::WSTRING assemblyName, + const ComPtr& metadata_import, mdTypeDef& typeDef); +} // namespace trace + +#endif // DD_CLR_PROFILER_CLR_HELPERS_H_ diff --git a/src/Datadog.Trace.ClrProfiler.Native/com_ptr.h b/src/Datadog.Trace.ClrProfiler.Native/com_ptr.h index e18ee72ad9..31cd595474 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/com_ptr.h +++ b/src/Datadog.Trace.ClrProfiler.Native/com_ptr.h @@ -1,144 +1,186 @@ #ifndef DD_CLR_PROFILER_COM_PTR_H_ #define DD_CLR_PROFILER_COM_PTR_H_ -#include #include +#include // https://msdn.microsoft.com/en-us/magazine/dn904668.aspx template -class RemoveAddRefRelease : public Interface { - ULONG __stdcall AddRef(); - ULONG __stdcall Release(); +class RemoveAddRefRelease : public Interface +{ + ULONG __stdcall AddRef(); + ULONG __stdcall Release(); }; template -class ComPtr { - public: - ComPtr() noexcept = default; - - ComPtr(ComPtr const& other) noexcept : m_ptr(other.m_ptr) { - InternalAddRef(); - } - - template - friend class ComPtr; +class ComPtr +{ +public: + ComPtr() noexcept = default; + + ComPtr(ComPtr const& other) noexcept : m_ptr(other.m_ptr) + { + InternalAddRef(); + } + + template + friend class ComPtr; + + template + ComPtr(ComPtr const& other) noexcept : m_ptr(other.m_ptr) + { + InternalAddRef(); + } + + template + ComPtr(ComPtr&& other) noexcept : m_ptr(other.m_ptr) + { + other.m_ptr = nullptr; + } + + ~ComPtr() noexcept + { + InternalRelease(); + } + + void Swap(ComPtr& other) noexcept + { + Interface* temp = m_ptr; + m_ptr = other.m_ptr; + other.m_ptr = temp; + } - template - ComPtr(ComPtr const& other) noexcept : m_ptr(other.m_ptr) { - InternalAddRef(); - } - - template - ComPtr(ComPtr&& other) noexcept : m_ptr(other.m_ptr) { - other.m_ptr = nullptr; - } - - ~ComPtr() noexcept { InternalRelease(); } - - void Swap(ComPtr& other) noexcept { - Interface* temp = m_ptr; - m_ptr = other.m_ptr; - other.m_ptr = temp; - } - - void Reset() noexcept { InternalRelease(); } - - Interface* Get() const noexcept { return m_ptr; } - - Interface* Detach() noexcept { - Interface* temp = m_ptr; - m_ptr = nullptr; - return temp; - } - - void Copy(Interface* other) noexcept { InternalCopy(other); } - - void Attach(Interface* other) noexcept { - InternalRelease(); - m_ptr = other; - } - - Interface** GetAddressOf() noexcept { - assert(m_ptr == nullptr); - return &m_ptr; - } - - void CopyTo(Interface** other) const noexcept { - InternalAddRef(); - *other = m_ptr; - } - - template - ComPtr As(IID iid) const noexcept { - ComPtr temp; - m_ptr->QueryInterface(iid, reinterpret_cast(temp.GetAddressOf())); - return temp; - } - - bool IsNull() const noexcept { return nullptr == m_ptr; } - - ComPtr& operator=(ComPtr const& other) noexcept { - InternalCopy(other.m_ptr); - return *this; - } - - template - ComPtr& operator=(ComPtr const& other) noexcept { - InternalCopy(other.m_ptr); - return *this; - } - - template - ComPtr& operator=(ComPtr&& other) noexcept { - InternalMove(other); - return *this; - } - - RemoveAddRefRelease* operator->() const noexcept { - return static_cast*>(m_ptr); - } - - explicit operator bool() const noexcept { return nullptr != m_ptr; } - - private: - Interface* m_ptr = nullptr; - - void InternalAddRef() const noexcept { - if (m_ptr) { - m_ptr->AddRef(); - } - } - - void InternalRelease() noexcept { - Interface* temp = m_ptr; - if (temp) { - m_ptr = nullptr; - temp->Release(); + void Reset() noexcept + { + InternalRelease(); } - } - - void InternalCopy(Interface* other) noexcept { - if (m_ptr != other) { - InternalRelease(); - m_ptr = other; - InternalAddRef(); + + Interface* Get() const noexcept + { + return m_ptr; + } + + Interface* Detach() noexcept + { + Interface* temp = m_ptr; + m_ptr = nullptr; + return temp; + } + + void Copy(Interface* other) noexcept + { + InternalCopy(other); + } + + void Attach(Interface* other) noexcept + { + InternalRelease(); + m_ptr = other; + } + + Interface** GetAddressOf() noexcept + { + assert(m_ptr == nullptr); + return &m_ptr; + } + + void CopyTo(Interface** other) const noexcept + { + InternalAddRef(); + *other = m_ptr; } - } - - template - void InternalMove(ComPtr& other) noexcept { - if (m_ptr != other.m_ptr) { - InternalRelease(); - m_ptr = other.m_ptr; - other.m_ptr = nullptr; + + template + ComPtr As(IID iid) const noexcept + { + ComPtr temp; + m_ptr->QueryInterface(iid, reinterpret_cast(temp.GetAddressOf())); + return temp; + } + + bool IsNull() const noexcept + { + return nullptr == m_ptr; + } + + ComPtr& operator=(ComPtr const& other) noexcept + { + InternalCopy(other.m_ptr); + return *this; + } + + template + ComPtr& operator=(ComPtr const& other) noexcept + { + InternalCopy(other.m_ptr); + return *this; + } + + template + ComPtr& operator=(ComPtr&& other) noexcept + { + InternalMove(other); + return *this; + } + + RemoveAddRefRelease* operator->() const noexcept + { + return static_cast*>(m_ptr); + } + + explicit operator bool() const noexcept + { + return nullptr != m_ptr; + } + +private: + Interface* m_ptr = nullptr; + + void InternalAddRef() const noexcept + { + if (m_ptr) + { + m_ptr->AddRef(); + } + } + + void InternalRelease() noexcept + { + Interface* temp = m_ptr; + if (temp) + { + m_ptr = nullptr; + temp->Release(); + } + } + + void InternalCopy(Interface* other) noexcept + { + if (m_ptr != other) + { + InternalRelease(); + m_ptr = other; + InternalAddRef(); + } + } + + template + void InternalMove(ComPtr& other) noexcept + { + if (m_ptr != other.m_ptr) + { + InternalRelease(); + m_ptr = other.m_ptr; + other.m_ptr = nullptr; + } } - } }; template -void swap(ComPtr& left, ComPtr& right) noexcept { - left.Swap(right); +void swap(ComPtr& left, ComPtr& right) noexcept +{ + left.Swap(right); } -#endif // DD_CLR_PROFILER_COM_PTR_H_ +#endif // DD_CLR_PROFILER_COM_PTR_H_ diff --git a/src/Datadog.Trace.ClrProfiler.Native/cor_profiler.cpp b/src/Datadog.Trace.ClrProfiler.Native/cor_profiler.cpp index 6b24ea00d8..142659ed9e 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/cor_profiler.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/cor_profiler.cpp @@ -1,10 +1,9 @@ #include "cor_profiler.h" +#include "corhlpr.h" #include #include -#include "corhlpr.h" -#include "version.h" #include "clr_helpers.h" #include "dd_profiler_constants.h" #include "dllmain.h" @@ -17,1479 +16,1585 @@ #include "metadata_builder.h" #include "module_metadata.h" #include "pal.h" -#include "sig_helpers.h" #include "resource.h" -#include "util.h" +#include "sig_helpers.h" #include "stats.h" +#include "util.h" +#include "version.h" #ifdef MACOS -#include #include +#include #endif -namespace trace { +namespace trace +{ CorProfiler* profiler = nullptr; // // ICorProfilerCallback methods // -HRESULT STDMETHODCALLTYPE -CorProfiler::Initialize(IUnknown* cor_profiler_info_unknown) { - auto _ = trace::Stats::Instance()->InitializeMeasure(); +HRESULT STDMETHODCALLTYPE CorProfiler::Initialize(IUnknown* cor_profiler_info_unknown) +{ + auto _ = trace::Stats::Instance()->InitializeMeasure(); - // check if debug mode is enabled - debug_logging_enabled = IsDebugEnabled(); + // check if debug mode is enabled + debug_logging_enabled = IsDebugEnabled(); - // check if dump il rewrite is enabled - dump_il_rewrite_enabled = IsDumpILRewriteEnabled(); + // check if dump il rewrite is enabled + dump_il_rewrite_enabled = IsDumpILRewriteEnabled(); - CorProfilerBase::Initialize(cor_profiler_info_unknown); + CorProfilerBase::Initialize(cor_profiler_info_unknown); - // check if tracing is completely disabled - if (IsTracingDisabled()) { - Info("DATADOG TRACER DIAGNOSTICS - Profiler disabled in ", environment::tracing_enabled); - return E_FAIL; - } + // check if tracing is completely disabled + if (IsTracingDisabled()) + { + Info("DATADOG TRACER DIAGNOSTICS - Profiler disabled in ", environment::tracing_enabled); + return E_FAIL; + } - #if defined(ARM64) || defined(ARM) - // - // In ARM64 and ARM, complete ReJIT support is only available from .NET 5.0 - // - ICorProfilerInfo12* info12; - HRESULT hrInfo12 = cor_profiler_info_unknown->QueryInterface(__uuidof(ICorProfilerInfo12), (void**)&info12); - if (SUCCEEDED(hrInfo12)) { - Info(".NET 5.0 runtime or greater was detected."); - } else { - Warn("DATADOG TRACER DIAGNOSTICS - Profiler disabled: .NET 5.0 runtime or greater is required on this architecture."); - return E_FAIL; - } +#if defined(ARM64) || defined(ARM) + // + // In ARM64 and ARM, complete ReJIT support is only available from .NET 5.0 + // + ICorProfilerInfo12* info12; + HRESULT hrInfo12 = cor_profiler_info_unknown->QueryInterface(__uuidof(ICorProfilerInfo12), (void**) &info12); + if (SUCCEEDED(hrInfo12)) + { + Info(".NET 5.0 runtime or greater was detected."); + } + else + { + Warn("DATADOG TRACER DIAGNOSTICS - Profiler disabled: .NET 5.0 runtime or greater is required on this " + "architecture."); + return E_FAIL; + } #endif - const auto process_name = GetCurrentProcessName(); - const auto include_process_names = - GetEnvironmentValues(environment::include_process_names); - - // if there is a process inclusion list, attach profiler only if this - // process's name is on the list - if (!include_process_names.empty() && - !Contains(include_process_names, process_name)) { - Info("DATADOG TRACER DIAGNOSTICS - Profiler disabled: ", process_name, " not found in ", - environment::include_process_names, "."); - return E_FAIL; - } - - const auto exclude_process_names = - GetEnvironmentValues(environment::exclude_process_names); - - // attach profiler only if this process's name is NOT on the list - if (Contains(exclude_process_names, process_name)) { - Info("DATADOG TRACER DIAGNOSTICS - Profiler disabled: ", process_name, " found in ", - environment::exclude_process_names, "."); - return E_FAIL; - } - - // get Profiler interface - HRESULT hr = cor_profiler_info_unknown->QueryInterface(__uuidof(ICorProfilerInfo4), (void**)&this->info_); - if (FAILED(hr)) { - Warn("DATADOG TRACER DIAGNOSTICS - Failed to attach profiler: interface ICorProfilerInfo4 not found."); - return E_FAIL; - } + const auto process_name = GetCurrentProcessName(); + const auto include_process_names = GetEnvironmentValues(environment::include_process_names); - Info("Environment variables:"); - for (auto&& env_var : env_vars_to_display) { - WSTRING env_var_value = GetEnvironmentValue(env_var); - if (debug_logging_enabled || !env_var_value.empty()) { - Info(" ", env_var, "=", env_var_value); + // if there is a process inclusion list, attach profiler only if this + // process's name is on the list + if (!include_process_names.empty() && !Contains(include_process_names, process_name)) + { + Info("DATADOG TRACER DIAGNOSTICS - Profiler disabled: ", process_name, " not found in ", + environment::include_process_names, "."); + return E_FAIL; } - } - if (IsAzureAppServices()) { - Info("Profiler is operating within Azure App Services context."); - in_azure_app_services = true; + const auto exclude_process_names = GetEnvironmentValues(environment::exclude_process_names); - const auto app_pool_id_value = - GetEnvironmentValue(environment::azure_app_services_app_pool_id); + // attach profiler only if this process's name is NOT on the list + if (Contains(exclude_process_names, process_name)) + { + Info("DATADOG TRACER DIAGNOSTICS - Profiler disabled: ", process_name, " found in ", + environment::exclude_process_names, "."); + return E_FAIL; + } - if (app_pool_id_value.size() > 1 && app_pool_id_value.at(0) == '~') { - Info("DATADOG TRACER DIAGNOSTICS - Profiler disabled: ", environment::azure_app_services_app_pool_id, - " ", app_pool_id_value, - " is recognized as an Azure App Services infrastructure process."); - return E_FAIL; + // get Profiler interface + HRESULT hr = cor_profiler_info_unknown->QueryInterface(__uuidof(ICorProfilerInfo4), (void**) &this->info_); + if (FAILED(hr)) + { + Warn("DATADOG TRACER DIAGNOSTICS - Failed to attach profiler: interface ICorProfilerInfo4 not found."); + return E_FAIL; } - const auto cli_telemetry_profile_value = GetEnvironmentValue( - environment::azure_app_services_cli_telemetry_profile_value); + // get ICorProfilerInfo6 for net46+ + ICorProfilerInfo6* info6; + hr = cor_profiler_info_unknown->QueryInterface(__uuidof(ICorProfilerInfo6), (void**)&info6); - if (cli_telemetry_profile_value == WStr("AzureKudu")) { - Info("DATADOG TRACER DIAGNOSTICS - Profiler disabled: ", app_pool_id_value, - " is recognized as Kudu, an Azure App Services reserved process."); - return E_FAIL; - } + if (SUCCEEDED(hr)) { + Debug("Interface ICorProfilerInfo6 found."); + is_net46_or_greater = true; } - // get path to integration definition JSON files - const WSTRING integrations_paths = GetEnvironmentValue(environment::integrations_path); + Info("Environment variables:"); + for (auto&& env_var : env_vars_to_display) + { + WSTRING env_var_value = GetEnvironmentValue(env_var); + if (debug_logging_enabled || !env_var_value.empty()) + { + Info(" ", env_var, "=", env_var_value); + } + } - if (integrations_paths.empty()) { - Warn("DATADOG TRACER DIAGNOSTICS - Profiler disabled: ", environment::integrations_path, - " environment variable not set."); - return E_FAIL; - } + if (IsAzureAppServices()) + { + Info("Profiler is operating within Azure App Services context."); + in_azure_app_services = true; - const auto is_calltarget_enabled = IsCallTargetEnabled(); + const auto app_pool_id_value = GetEnvironmentValue(environment::azure_app_services_app_pool_id); - // Initialize ReJIT handler and define the Rewriter Callback - if (is_calltarget_enabled) { - rejit_handler = new RejitHandler(this->info_, [this](RejitHandlerModule* mod, RejitHandlerModuleMethod* method) { - return this->CallTarget_RewriterCallback(mod, method); - }); - } else { - rejit_handler = nullptr; - } + if (app_pool_id_value.size() > 1 && app_pool_id_value.at(0) == '~') + { + Info("DATADOG TRACER DIAGNOSTICS - Profiler disabled: ", environment::azure_app_services_app_pool_id, " ", + app_pool_id_value, " is recognized as an Azure App Services infrastructure process."); + return E_FAIL; + } - // load all available integrations from JSON files - const std::vector all_integrations = - LoadIntegrationsFromEnvironment(); + const auto cli_telemetry_profile_value = + GetEnvironmentValue(environment::azure_app_services_cli_telemetry_profile_value); - // get list of disabled integration names - const std::vector disabled_integration_names = - GetEnvironmentValues(environment::disabled_integrations); + if (cli_telemetry_profile_value == WStr("AzureKudu")) + { + Info("DATADOG TRACER DIAGNOSTICS - Profiler disabled: ", app_pool_id_value, + " is recognized as Kudu, an Azure App Services reserved process."); + return E_FAIL; + } + } - // remove disabled integrations - const std::vector integrations = - FilterIntegrationsByName(all_integrations, disabled_integration_names); + // get path to integration definition JSON files + const WSTRING integrations_paths = GetEnvironmentValue(environment::integrations_path); - integration_methods_ = - FlattenIntegrations(integrations, is_calltarget_enabled); + if (integrations_paths.empty()) + { + Warn("DATADOG TRACER DIAGNOSTICS - Profiler disabled: ", environment::integrations_path, + " environment variable not set."); + return E_FAIL; + } - // check if there are any enabled integrations left - if (integration_methods_.empty()) { - Warn("DATADOG TRACER DIAGNOSTICS - Profiler disabled: no enabled integrations found."); - return E_FAIL; - } else { - Debug("Number of Integrations loaded: ", integration_methods_.size()); - } + const auto is_calltarget_enabled = IsCallTargetEnabled(is_net46_or_greater); - // temporarily skip the calls into netstandard.dll that were added in - // https://github.com/DataDog/dd-trace-dotnet/pull/753. - // users can opt-in to the additional instrumentation by setting environment - // variable OTEL_TRACE_NETSTANDARD_ENABLED - if (!IsNetstandardEnabled()) { - integration_methods_ = FilterIntegrationsByTargetAssemblyName( - integration_methods_, {WStr("netstandard")}); - } + // Initialize ReJIT handler and define the Rewriter Callback + if (is_calltarget_enabled) + { + rejit_handler = + new RejitHandler(this->info_, [this](RejitHandlerModule* mod, RejitHandlerModuleMethod* method) { + return this->CallTarget_RewriterCallback(mod, method); + }); + } + else + { + rejit_handler = nullptr; + } - DWORD event_mask = COR_PRF_MONITOR_JIT_COMPILATION | - COR_PRF_DISABLE_TRANSPARENCY_CHECKS_UNDER_FULL_TRUST | - COR_PRF_MONITOR_MODULE_LOADS | - COR_PRF_MONITOR_ASSEMBLY_LOADS | - COR_PRF_DISABLE_ALL_NGEN_IMAGES; - - if (is_calltarget_enabled) { - Info("CallTarget instrumentation is enabled."); - event_mask |= COR_PRF_ENABLE_REJIT; - } else { - Info("CallTarget instrumentation is disabled."); - } + // load all available integrations from JSON files + const std::vector all_integrations = LoadIntegrationsFromEnvironment(); - if (!EnableInlining(is_calltarget_enabled)) { - Info("JIT Inlining is disabled."); - event_mask |= COR_PRF_DISABLE_INLINING; - } else { - Info("JIT Inlining is enabled."); - } + // get list of disabled integration names + const std::vector disabled_integration_names = GetEnvironmentValues(environment::disabled_integrations); - if (DisableOptimizations()) { - Info("Disabling all code optimizations."); - event_mask |= COR_PRF_DISABLE_OPTIMIZATIONS; - } + // remove disabled integrations + const std::vector integrations = + FilterIntegrationsByName(all_integrations, disabled_integration_names); - const WSTRING domain_neutral_instrumentation = - GetEnvironmentValue(environment::domain_neutral_instrumentation); + integration_methods_ = FlattenIntegrations(integrations, is_calltarget_enabled); - if (domain_neutral_instrumentation == WStr("1") || domain_neutral_instrumentation == WStr("true")) { - instrument_domain_neutral_assemblies = true; - } + // check if there are any enabled integrations left + if (integration_methods_.empty()) + { + Warn("DATADOG TRACER DIAGNOSTICS - Profiler disabled: no enabled integrations found."); + return E_FAIL; + } + else + { + Debug("Number of Integrations loaded: ", integration_methods_.size()); + } - // set event mask to subscribe to events and disable NGEN images - // get ICorProfilerInfo6 for net452+ - ICorProfilerInfo6* info6; - hr = cor_profiler_info_unknown->QueryInterface(__uuidof(ICorProfilerInfo6), (void**)&info6); + // temporarily skip the calls into netstandard.dll that were added in + // https://github.com/DataDog/dd-trace-dotnet/pull/753. + // users can opt-in to the additional instrumentation by setting environment + // variable DD_TRACE_NETSTANDARD_ENABLED + if (!IsNetstandardEnabled()) + { + integration_methods_ = FilterIntegrationsByTargetAssemblyName(integration_methods_, {WStr("netstandard")}); + } - if (SUCCEEDED(hr)) { - Debug("Interface ICorProfilerInfo6 found."); - is_net46_or_greater = true; - hr = info6->SetEventMask2(event_mask, COR_PRF_HIGH_ADD_ASSEMBLY_REFERENCES); + DWORD event_mask = COR_PRF_MONITOR_JIT_COMPILATION | COR_PRF_DISABLE_TRANSPARENCY_CHECKS_UNDER_FULL_TRUST | + COR_PRF_MONITOR_MODULE_LOADS | COR_PRF_MONITOR_ASSEMBLY_LOADS | COR_PRF_DISABLE_ALL_NGEN_IMAGES; - if (instrument_domain_neutral_assemblies) { - Info("Note: The ", environment::domain_neutral_instrumentation, " environment variable is not needed when running on .NET Framework 4.5.2 or higher, and will be ignored."); + if (is_calltarget_enabled) + { + Info("CallTarget instrumentation is enabled."); + event_mask |= COR_PRF_ENABLE_REJIT; + } + else + { + Info("CallTarget instrumentation is disabled."); } - } else { - hr = this->info_->SetEventMask(event_mask); - if (instrument_domain_neutral_assemblies) { - Info("Detected environment variable ", environment::domain_neutral_instrumentation, - "=", domain_neutral_instrumentation); - Info("Enabling automatic instrumentation of methods called from domain-neutral assemblies. ", - "Please ensure that there is only one AppDomain or, if applications are being hosted in IIS, ", - "ensure that all Application Pools have at most one application each. ", - "Otherwise, a sharing violation (HRESULT 0x80131401) may occur."); + if (!EnableInlining(is_calltarget_enabled)) + { + Info("JIT Inlining is disabled."); + event_mask |= COR_PRF_DISABLE_INLINING; + } + else + { + Info("JIT Inlining is enabled."); } - } - if (FAILED(hr)) { - Warn("DATADOG TRACER DIAGNOSTICS - Failed to attach profiler: unable to set event mask."); - return E_FAIL; - } - runtime_information_ = GetRuntimeInformation(this->info_); - if (process_name == WStr("w3wp.exe") || - process_name == WStr("iisexpress.exe")) { - is_desktop_iis = runtime_information_.is_desktop(); - } + if (DisableOptimizations()) + { + Info("Disabling all code optimizations."); + event_mask |= COR_PRF_DISABLE_OPTIMIZATIONS; + } - // writing opcodes vector for the IL dumper -#define OPDEF(c, s, pop, push, args, type, l, s1, s2, flow) \ - opcodes_names.push_back(s); -#include "opcode.def" -#undef OPDEF - opcodes_names.push_back("(count)"); // CEE_COUNT - opcodes_names.push_back("->"); // CEE_SWITCH_ARG - - // we're in! - Info("Profiler attached."); - this->info_->AddRef(); - is_attached_.store(true); - profiler = this; - return S_OK; -} + const WSTRING domain_neutral_instrumentation = GetEnvironmentValue(environment::domain_neutral_instrumentation); -HRESULT STDMETHODCALLTYPE CorProfiler::AssemblyLoadFinished(AssemblyID assembly_id, - HRESULT hr_status) { - auto _ = trace::Stats::Instance()->AssemblyLoadFinishedMeasure(); + if (domain_neutral_instrumentation == WStr("1") || domain_neutral_instrumentation == WStr("true")) + { + instrument_domain_neutral_assemblies = true; + } - if (FAILED(hr_status)) { - // if assembly failed to load, skip it entirely, - // otherwise we can crash the process if module is not valid - CorProfilerBase::AssemblyLoadFinished(assembly_id, hr_status); - return S_OK; - } - // keep this lock until we are done using the module, - // to prevent it from unloading while in use - std::lock_guard guard(module_id_to_info_map_lock_); + // set event mask to subscribe to events and disable NGEN images + if (is_net46_or_greater) + { + hr = info6->SetEventMask2(event_mask, COR_PRF_HIGH_ADD_ASSEMBLY_REFERENCES); - // double check if is_attached_ has changed to avoid possible race condition with shutdown function - if (!is_attached_) { - return S_OK; - } + if (instrument_domain_neutral_assemblies) + { + Info("Note: The ", environment::domain_neutral_instrumentation, + " environment variable is not needed when running on .NET Framework 4.5.2 or higher, and will be " + "ignored."); + } + } + else + { + hr = this->info_->SetEventMask(event_mask); + + if (instrument_domain_neutral_assemblies) + { + Info("Detected environment variable ", environment::domain_neutral_instrumentation, "=", + domain_neutral_instrumentation); + Info("Enabling automatic instrumentation of methods called from domain-neutral assemblies. ", + "Please ensure that there is only one AppDomain or, if applications are being hosted in IIS, ", + "ensure that all Application Pools have at most one application each. ", + "Otherwise, a sharing violation (HRESULT 0x80131401) may occur."); + } + } + if (FAILED(hr)) + { + Warn("DATADOG TRACER DIAGNOSTICS - Failed to attach profiler: unable to set event mask."); + return E_FAIL; + } - const auto assembly_info = GetAssemblyInfo(this->info_, assembly_id); - if (!assembly_info.IsValid()) { - Debug("AssemblyLoadFinished: ", assembly_id, " ", hr_status); + runtime_information_ = GetRuntimeInformation(this->info_); + if (process_name == WStr("w3wp.exe") || process_name == WStr("iisexpress.exe")) + { + is_desktop_iis = runtime_information_.is_desktop(); + } + + // writing opcodes vector for the IL dumper +#define OPDEF(c, s, pop, push, args, type, l, s1, s2, flow) opcodes_names.push_back(s); +#include "opcode.def" +#undef OPDEF + opcodes_names.push_back("(count)"); // CEE_COUNT + opcodes_names.push_back("->"); // CEE_SWITCH_ARG + + // we're in! + Info("Profiler attached."); + this->info_->AddRef(); + is_attached_.store(true); + profiler = this; return S_OK; - } +} - const auto is_instrumentation_assembly = assembly_info.name == WStr("OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed"); +HRESULT STDMETHODCALLTYPE CorProfiler::AssemblyLoadFinished(AssemblyID assembly_id, HRESULT hr_status) +{ + auto _ = trace::Stats::Instance()->AssemblyLoadFinishedMeasure(); - if (is_instrumentation_assembly || debug_logging_enabled) { - if (debug_logging_enabled) { - Debug("AssemblyLoadFinished: ", assembly_id, " ", hr_status); + if (FAILED(hr_status)) + { + // if assembly failed to load, skip it entirely, + // otherwise we can crash the process if module is not valid + CorProfilerBase::AssemblyLoadFinished(assembly_id, hr_status); + return S_OK; } - ComPtr metadata_interfaces; - auto hr = this->info_->GetModuleMetaData(assembly_info.manifest_module_id, ofRead | ofWrite, IID_IMetaDataImport2, metadata_interfaces.GetAddressOf()); + // keep this lock until we are done using the module, + // to prevent it from unloading while in use + std::lock_guard guard(module_id_to_info_map_lock_); - if (FAILED(hr)) { - Warn("AssemblyLoadFinished failed to get metadata interface for module id ", assembly_info.manifest_module_id, " from assembly ", assembly_info.name); - return S_OK; + // double check if is_attached_ has changed to avoid possible race condition with shutdown function + if (!is_attached_) + { + return S_OK; } - // Get the IMetaDataAssemblyImport interface to get metadata from the managed assembly - const auto assembly_import = metadata_interfaces.As(IID_IMetaDataAssemblyImport); - const auto assembly_metadata = GetAssemblyImportMetadata(assembly_import); - - if (debug_logging_enabled) { - Debug("AssemblyLoadFinished: AssemblyName=", assembly_info.name, " AssemblyVersion=", assembly_metadata.version.str()); + const auto assembly_info = GetAssemblyInfo(this->info_, assembly_id); + if (!assembly_info.IsValid()) + { + Debug("AssemblyLoadFinished: ", assembly_id, " ", hr_status); + return S_OK; } - if (is_instrumentation_assembly) { - // Configure a version string to compare with the profiler version - std::stringstream ss; - ss << assembly_metadata.version.major << '.' - << assembly_metadata.version.minor << '.' - << assembly_metadata.version.build; - - auto assembly_version = ToWSTRING(ss.str()); + const auto is_instrumentation_assembly = assembly_info.name == WStr("Datadog.Trace.ClrProfiler.Managed"); - // Check that Major.Minor.Build match the profiler version - if (assembly_version == ToWSTRING(PROFILER_VERSION)) { - Info("AssemblyLoadFinished: OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed v", assembly_version, " matched profiler version v", PROFILER_VERSION); - managed_profiler_loaded_app_domains.insert(assembly_info.app_domain_id); - - if (runtime_information_.is_desktop() && corlib_module_loaded) { - // Set the managed_profiler_loaded_domain_neutral flag whenever the - // managed profiler is loaded shared - if (assembly_info.app_domain_id == corlib_app_domain_id) { - Info("AssemblyLoadFinished: OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed was loaded domain-neutral"); - managed_profiler_loaded_domain_neutral = true; - } else { - Info("AssemblyLoadFinished: OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed was not loaded domain-neutral"); - } + if (is_instrumentation_assembly || debug_logging_enabled) + { + if (debug_logging_enabled) + { + Debug("AssemblyLoadFinished: ", assembly_id, " ", hr_status); } - } else { - Warn("AssemblyLoadFinished: Datadog.Trace.ClrProfiler.Managed v", assembly_version, " did not match profiler version v", PROFILER_VERSION); - } - } - } - return S_OK; -} - -HRESULT STDMETHODCALLTYPE CorProfiler::ModuleLoadFinished(ModuleID module_id, - HRESULT hr_status) { - auto _ = trace::Stats::Instance()->ModuleLoadFinishedMeasure(); + ComPtr metadata_interfaces; + auto hr = this->info_->GetModuleMetaData(assembly_info.manifest_module_id, ofRead | ofWrite, + IID_IMetaDataImport2, metadata_interfaces.GetAddressOf()); - if (FAILED(hr_status)) { - // if module failed to load, skip it entirely, - // otherwise we can crash the process if module is not valid - CorProfilerBase::ModuleLoadFinished(module_id, hr_status); - return S_OK; - } + if (FAILED(hr)) + { + Warn("AssemblyLoadFinished failed to get metadata interface for module id ", + assembly_info.manifest_module_id, " from assembly ", assembly_info.name); + return S_OK; + } - if (!is_attached_) { - return S_OK; - } + // Get the IMetaDataAssemblyImport interface to get metadata from the managed assembly + const auto assembly_import = metadata_interfaces.As(IID_IMetaDataAssemblyImport); + const auto assembly_metadata = GetAssemblyImportMetadata(assembly_import); - // keep this lock until we are done using the module, - // to prevent it from unloading while in use - std::lock_guard guard(module_id_to_info_map_lock_); + if (debug_logging_enabled) + { + Debug("AssemblyLoadFinished: AssemblyName=", assembly_info.name, + " AssemblyVersion=", assembly_metadata.version.str()); + } - // double check if is_attached_ has changed to avoid possible race condition with shutdown function - if (!is_attached_) { - return S_OK; - } + if (is_instrumentation_assembly) + { + // Configure a version string to compare with the profiler version + std::stringstream ss; + ss << assembly_metadata.version.major << '.' << assembly_metadata.version.minor << '.' + << assembly_metadata.version.build; + + auto assembly_version = ToWSTRING(ss.str()); + + // Check that Major.Minor.Build match the profiler version + if (assembly_version == ToWSTRING(PROFILER_VERSION)) + { + Info("AssemblyLoadFinished: Datadog.Trace.ClrProfiler.Managed v", assembly_version, + " matched profiler version v", PROFILER_VERSION); + managed_profiler_loaded_app_domains.insert(assembly_info.app_domain_id); + + if (runtime_information_.is_desktop() && corlib_module_loaded) + { + // Set the managed_profiler_loaded_domain_neutral flag whenever the + // managed profiler is loaded shared + if (assembly_info.app_domain_id == corlib_app_domain_id) + { + Info("AssemblyLoadFinished: Datadog.Trace.ClrProfiler.Managed was loaded domain-neutral"); + managed_profiler_loaded_domain_neutral = true; + } + else + { + Info("AssemblyLoadFinished: Datadog.Trace.ClrProfiler.Managed was not loaded domain-neutral"); + } + } + } + else + { + Warn("AssemblyLoadFinished: Datadog.Trace.ClrProfiler.Managed v", assembly_version, + " did not match profiler version v", PROFILER_VERSION); + } + } + } - const auto module_info = GetModuleInfo(this->info_, module_id); - if (!module_info.IsValid()) { return S_OK; - } - - if (debug_logging_enabled) { - Debug("ModuleLoadFinished: ", module_id, " ", module_info.assembly.name, " AppDomain ", module_info.assembly.app_domain_id, " ", module_info.assembly.app_domain_name); - } +} - AppDomainID app_domain_id = module_info.assembly.app_domain_id; +HRESULT STDMETHODCALLTYPE CorProfiler::ModuleLoadFinished(ModuleID module_id, HRESULT hr_status) +{ + auto _ = trace::Stats::Instance()->ModuleLoadFinishedMeasure(); - // Identify the AppDomain ID of mscorlib which will be the Shared Domain - // because mscorlib is always a domain-neutral assembly - if (!corlib_module_loaded && - (module_info.assembly.name == WStr("mscorlib") || - module_info.assembly.name == WStr("System.Private.CoreLib"))) { - corlib_module_loaded = true; - corlib_app_domain_id = app_domain_id; + if (FAILED(hr_status)) + { + // if module failed to load, skip it entirely, + // otherwise we can crash the process if module is not valid + CorProfilerBase::ModuleLoadFinished(module_id, hr_status); + return S_OK; + } - ComPtr metadata_interfaces; - auto hr = this->info_->GetModuleMetaData(module_id, ofRead | ofWrite, IID_IMetaDataImport2, metadata_interfaces.GetAddressOf()); + if (!is_attached_) + { + return S_OK; + } - // Get the IMetaDataAssemblyImport interface to get metadata from the - // managed assembly - const auto assembly_import = metadata_interfaces.As(IID_IMetaDataAssemblyImport); - const auto assembly_metadata = GetAssemblyImportMetadata(assembly_import); + // keep this lock until we are done using the module, + // to prevent it from unloading while in use + std::lock_guard guard(module_id_to_info_map_lock_); - hr = assembly_import->GetAssemblyProps( - assembly_metadata.assembly_token, &corAssemblyProperty.ppbPublicKey, - &corAssemblyProperty.pcbPublicKey, &corAssemblyProperty.pulHashAlgId, - NULL, 0, NULL, &corAssemblyProperty.pMetaData, - &corAssemblyProperty.assemblyFlags); + // double check if is_attached_ has changed to avoid possible race condition with shutdown function + if (!is_attached_) + { + return S_OK; + } - if (FAILED(hr)) { - Warn("AssemblyLoadFinished failed to get properties for COR assembly "); + const auto module_info = GetModuleInfo(this->info_, module_id); + if (!module_info.IsValid()) + { + return S_OK; } - corAssemblyProperty.szName = module_info.assembly.name; + if (debug_logging_enabled) + { + Debug("ModuleLoadFinished: ", module_id, " ", module_info.assembly.name, " AppDomain ", + module_info.assembly.app_domain_id, " ", module_info.assembly.app_domain_name); + } - Info("COR library: ", corAssemblyProperty.szName, " ", - corAssemblyProperty.pMetaData.usMajorVersion, ".", - corAssemblyProperty.pMetaData.usMinorVersion, ".", - corAssemblyProperty.pMetaData.usRevisionNumber); + AppDomainID app_domain_id = module_info.assembly.app_domain_id; + + // Identify the AppDomain ID of mscorlib which will be the Shared Domain + // because mscorlib is always a domain-neutral assembly + if (!corlib_module_loaded && + (module_info.assembly.name == WStr("mscorlib") || module_info.assembly.name == WStr("System.Private.CoreLib"))) + { + corlib_module_loaded = true; + corlib_app_domain_id = app_domain_id; + + ComPtr metadata_interfaces; + auto hr = this->info_->GetModuleMetaData(module_id, ofRead | ofWrite, IID_IMetaDataImport2, + metadata_interfaces.GetAddressOf()); + + // Get the IMetaDataAssemblyImport interface to get metadata from the + // managed assembly + const auto assembly_import = metadata_interfaces.As(IID_IMetaDataAssemblyImport); + const auto assembly_metadata = GetAssemblyImportMetadata(assembly_import); + + hr = assembly_import->GetAssemblyProps(assembly_metadata.assembly_token, &corAssemblyProperty.ppbPublicKey, + &corAssemblyProperty.pcbPublicKey, &corAssemblyProperty.pulHashAlgId, + NULL, 0, NULL, &corAssemblyProperty.pMetaData, + &corAssemblyProperty.assemblyFlags); + + if (FAILED(hr)) + { + Warn("AssemblyLoadFinished failed to get properties for COR assembly "); + } - return S_OK; - } + corAssemblyProperty.szName = module_info.assembly.name; - // In IIS, the startup hook will be inserted into a method in System.Web (which is domain-neutral) - // but the Datadog.Trace.ClrProfiler.Managed.Loader assembly that the startup hook loads from a - // byte array will be loaded into a non-shared AppDomain. - // In this case, do not insert another startup hook into that non-shared AppDomain - if (module_info.assembly.name == WStr("Datadog.Trace.ClrProfiler.Managed.Loader")) { - Info("ModuleLoadFinished: Datadog.Trace.ClrProfiler.Managed.Loader loaded into AppDomain ", app_domain_id, " ", module_info.assembly.app_domain_name); - first_jit_compilation_app_domains.insert(app_domain_id); - return S_OK; - } + Info("COR library: ", corAssemblyProperty.szName, " ", corAssemblyProperty.pMetaData.usMajorVersion, ".", + corAssemblyProperty.pMetaData.usMinorVersion, ".", corAssemblyProperty.pMetaData.usRevisionNumber); - if (module_info.IsWindowsRuntime()) { - // We cannot obtain writable metadata interfaces on Windows Runtime modules - // or instrument their IL. - Debug("ModuleLoadFinished skipping Windows Metadata module: ", module_id, " ", module_info.assembly.name); - return S_OK; - } + return S_OK; + } - for (auto&& skip_assembly_pattern : skip_assembly_prefixes) { - if (module_info.assembly.name.rfind(skip_assembly_pattern, 0) == 0) { - Debug("ModuleLoadFinished skipping module by pattern: ", module_id, " ", - module_info.assembly.name); - return S_OK; + // In IIS, the startup hook will be inserted into a method in System.Web (which is domain-neutral) + // but the Datadog.Trace.ClrProfiler.Managed.Loader assembly that the startup hook loads from a + // byte array will be loaded into a non-shared AppDomain. + // In this case, do not insert another startup hook into that non-shared AppDomain + if (module_info.assembly.name == WStr("Datadog.Trace.ClrProfiler.Managed.Loader")) + { + Info("ModuleLoadFinished: Datadog.Trace.ClrProfiler.Managed.Loader loaded into AppDomain ", app_domain_id, " ", + module_info.assembly.app_domain_name); + first_jit_compilation_app_domains.insert(app_domain_id); + return S_OK; } - } - for (auto&& skip_assembly : skip_assemblies) { - if (module_info.assembly.name == skip_assembly) { - Debug("ModuleLoadFinished skipping known module: ", module_id, " ", - module_info.assembly.name); - return S_OK; + if (module_info.IsWindowsRuntime()) + { + // We cannot obtain writable metadata interfaces on Windows Runtime modules + // or instrument their IL. + Debug("ModuleLoadFinished skipping Windows Metadata module: ", module_id, " ", module_info.assembly.name); + return S_OK; } - } - std::vector filtered_integrations = IsCallTargetEnabled() ? - integration_methods_ : FilterIntegrationsByCaller(integration_methods_, module_info.assembly); + for (auto&& skip_assembly_pattern : skip_assembly_prefixes) + { + if (module_info.assembly.name.rfind(skip_assembly_pattern, 0) == 0) + { + Debug("ModuleLoadFinished skipping module by pattern: ", module_id, " ", module_info.assembly.name); + return S_OK; + } + } - if (filtered_integrations.empty()) { - // we don't need to instrument anything in this module, skip it - Debug("ModuleLoadFinished skipping module (filtered by caller): ", module_id, " ", module_info.assembly.name); - return S_OK; - } + for (auto&& skip_assembly : skip_assemblies) + { + if (module_info.assembly.name == skip_assembly) + { + Debug("ModuleLoadFinished skipping known module: ", module_id, " ", module_info.assembly.name); + return S_OK; + } + } - ComPtr metadata_interfaces; - auto hr = this->info_->GetModuleMetaData(module_id, ofRead | ofWrite, IID_IMetaDataImport2, metadata_interfaces.GetAddressOf()); + std::vector filtered_integrations = IsCallTargetEnabled(is_net46_or_greater) ? + integration_methods_ : FilterIntegrationsByCaller(integration_methods_, module_info.assembly); - if (FAILED(hr)) { - Warn("ModuleLoadFinished failed to get metadata interface for ", module_id, " ", module_info.assembly.name); - return S_OK; - } + if (filtered_integrations.empty()) + { + // we don't need to instrument anything in this module, skip it + Debug("ModuleLoadFinished skipping module (filtered by caller): ", module_id, " ", module_info.assembly.name); + return S_OK; + } - const auto metadata_import = metadata_interfaces.As(IID_IMetaDataImport); - const auto metadata_emit = metadata_interfaces.As(IID_IMetaDataEmit); - const auto assembly_import = metadata_interfaces.As(IID_IMetaDataAssemblyImport); - const auto assembly_emit = metadata_interfaces.As(IID_IMetaDataAssemblyEmit); + ComPtr metadata_interfaces; + auto hr = this->info_->GetModuleMetaData(module_id, ofRead | ofWrite, IID_IMetaDataImport2, + metadata_interfaces.GetAddressOf()); - // don't skip Microsoft.AspNetCore.Hosting so we can run the startup hook and - // subscribe to DiagnosticSource events. - // don't skip Dapper: it makes ADO.NET calls even though it doesn't reference - // System.Data or System.Data.Common - if (module_info.assembly.name != WStr("Microsoft.AspNetCore.Hosting") && module_info.assembly.name != WStr("Dapper") && !IsCallTargetEnabled()) { - filtered_integrations = FilterIntegrationsByTarget(filtered_integrations, assembly_import); + if (FAILED(hr)) + { + Warn("ModuleLoadFinished failed to get metadata interface for ", module_id, " ", module_info.assembly.name); + return S_OK; + } - if (filtered_integrations.empty()) { - // we don't need to instrument anything in this module, skip it - Debug("ModuleLoadFinished skipping module (filtered by target): ", module_id, " ", module_info.assembly.name); - return S_OK; + const auto metadata_import = metadata_interfaces.As(IID_IMetaDataImport); + const auto metadata_emit = metadata_interfaces.As(IID_IMetaDataEmit); + const auto assembly_import = metadata_interfaces.As(IID_IMetaDataAssemblyImport); + const auto assembly_emit = metadata_interfaces.As(IID_IMetaDataAssemblyEmit); + + // don't skip Microsoft.AspNetCore.Hosting so we can run the startup hook and + // subscribe to DiagnosticSource events. + // don't skip Dapper: it makes ADO.NET calls even though it doesn't reference + // System.Data or System.Data.Common + if (module_info.assembly.name != WStr("Microsoft.AspNetCore.Hosting") && + module_info.assembly.name != WStr("Dapper") && !IsCallTargetEnabled(is_net46_or_greater)) + { + filtered_integrations = FilterIntegrationsByTarget(filtered_integrations, assembly_import); + + if (filtered_integrations.empty()) + { + // we don't need to instrument anything in this module, skip it + Debug("ModuleLoadFinished skipping module (filtered by target): ", module_id, " ", + module_info.assembly.name); + return S_OK; + } } - } - mdModule module; - hr = metadata_import->GetModuleFromScope(&module); - if (FAILED(hr)) { - Warn("ModuleLoadFinished failed to get module metadata token for ", module_id, " ", module_info.assembly.name); - return S_OK; - } + mdModule module; + hr = metadata_import->GetModuleFromScope(&module); + if (FAILED(hr)) + { + Warn("ModuleLoadFinished failed to get module metadata token for ", module_id, " ", module_info.assembly.name); + return S_OK; + } - GUID module_version_id; - hr = metadata_import->GetScopeProps(nullptr, 0, nullptr, &module_version_id); - if (FAILED(hr)) { - Warn("ModuleLoadFinished failed to get module_version_id for ", module_id, " ", module_info.assembly.name); - return S_OK; - } + GUID module_version_id; + hr = metadata_import->GetScopeProps(nullptr, 0, nullptr, &module_version_id); + if (FAILED(hr)) + { + Warn("ModuleLoadFinished failed to get module_version_id for ", module_id, " ", module_info.assembly.name); + return S_OK; + } - ModuleMetadata* module_metadata = new ModuleMetadata( - metadata_import, metadata_emit, assembly_import, assembly_emit, - module_info.assembly.name, app_domain_id, - module_version_id, filtered_integrations, &corAssemblyProperty); + ModuleMetadata* module_metadata = + new ModuleMetadata(metadata_import, metadata_emit, assembly_import, assembly_emit, module_info.assembly.name, + app_domain_id, module_version_id, filtered_integrations, &corAssemblyProperty); - // store module info for later lookup - module_id_to_info_map_[module_id] = module_metadata; + // store module info for later lookup + module_id_to_info_map_[module_id] = module_metadata; - Debug("ModuleLoadFinished stored metadata for ", module_id, " ", - module_info.assembly.name, " AppDomain ", - module_info.assembly.app_domain_id, " ", - module_info.assembly.app_domain_name); + Debug("ModuleLoadFinished stored metadata for ", module_id, " ", module_info.assembly.name, " AppDomain ", + module_info.assembly.app_domain_id, " ", module_info.assembly.app_domain_name); - // We call the function to analyze the module and request the ReJIT of integrations defined in this module. - if (IsCallTargetEnabled()) { - CallTarget_RequestRejitForModule(module_id, module_metadata, filtered_integrations); - } + // We call the function to analyze the module and request the ReJIT of integrations defined in this module. + if (IsCallTargetEnabled(is_net46_or_greater)) + { + CallTarget_RequestRejitForModule(module_id, module_metadata, filtered_integrations); + } - return S_OK; + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfiler::ModuleUnloadStarted(ModuleID module_id) { - auto _ = trace::Stats::Instance()->ModuleUnloadStartedMeasure(); +HRESULT STDMETHODCALLTYPE CorProfiler::ModuleUnloadStarted(ModuleID module_id) +{ + auto _ = trace::Stats::Instance()->ModuleUnloadStartedMeasure(); - if (!is_attached_) { - return S_OK; - } + if (!is_attached_) + { + return S_OK; + } - if (debug_logging_enabled) { - const auto module_info = GetModuleInfo(this->info_, module_id); + if (debug_logging_enabled) + { + const auto module_info = GetModuleInfo(this->info_, module_id); - if (module_info.IsValid()) { - Debug("ModuleUnloadStarted: ", module_id, " ", module_info.assembly.name, - " AppDomain ", module_info.assembly.app_domain_id, " ", - module_info.assembly.app_domain_name); - } else { - Debug("ModuleUnloadStarted: ", module_id); + if (module_info.IsValid()) + { + Debug("ModuleUnloadStarted: ", module_id, " ", module_info.assembly.name, " AppDomain ", + module_info.assembly.app_domain_id, " ", module_info.assembly.app_domain_name); + } + else + { + Debug("ModuleUnloadStarted: ", module_id); + } } - } - // take this lock so we block until the - // module metadata is not longer being used - std::lock_guard guard(module_id_to_info_map_lock_); + // take this lock so we block until the + // module metadata is not longer being used + std::lock_guard guard(module_id_to_info_map_lock_); - // double check if is_attached_ has changed to avoid possible race condition with shutdown function - if (!is_attached_) { - return S_OK; - } + // double check if is_attached_ has changed to avoid possible race condition with shutdown function + if (!is_attached_) + { + return S_OK; + } - // remove module metadata from map - auto findRes = module_id_to_info_map_.find(module_id); - if (findRes != module_id_to_info_map_.end()) { - ModuleMetadata* metadata = findRes->second; + // remove module metadata from map + auto findRes = module_id_to_info_map_.find(module_id); + if (findRes != module_id_to_info_map_.end()) + { + ModuleMetadata* metadata = findRes->second; + + // remove appdomain id from managed_profiler_loaded_app_domains set + if (managed_profiler_loaded_app_domains.find(metadata->app_domain_id) != + managed_profiler_loaded_app_domains.end()) + { + managed_profiler_loaded_app_domains.erase(metadata->app_domain_id); + } - // remove appdomain id from managed_profiler_loaded_app_domains set - if (managed_profiler_loaded_app_domains.find(metadata->app_domain_id) != - managed_profiler_loaded_app_domains.end()) { - managed_profiler_loaded_app_domains.erase(metadata->app_domain_id); + module_id_to_info_map_.erase(module_id); + delete metadata; } - module_id_to_info_map_.erase(module_id); - delete metadata; - } - - return S_OK; + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfiler::Shutdown() { - CorProfilerBase::Shutdown(); +HRESULT STDMETHODCALLTYPE CorProfiler::Shutdown() +{ + CorProfilerBase::Shutdown(); - // keep this lock until we are done using the module, - // to prevent it from unloading while in use - std::lock_guard guard(module_id_to_info_map_lock_); + // keep this lock until we are done using the module, + // to prevent it from unloading while in use + std::lock_guard guard(module_id_to_info_map_lock_); - if (rejit_handler != nullptr) { - rejit_handler->Shutdown(); - } - Warn("Exiting. Stats: ", Stats::Instance()->ToString()); - is_attached_.store(false); - Logger::Shutdown(); - return S_OK; + if (rejit_handler != nullptr) + { + rejit_handler->Shutdown(); + } + Warn("Exiting. Stats: ", Stats::Instance()->ToString()); + is_attached_.store(false); + Logger::Shutdown(); + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfiler::ProfilerDetachSucceeded() { - if (!is_attached_) { - return S_OK; - } - CorProfilerBase::ProfilerDetachSucceeded(); +HRESULT STDMETHODCALLTYPE CorProfiler::ProfilerDetachSucceeded() +{ + if (!is_attached_) + { + return S_OK; + } + CorProfilerBase::ProfilerDetachSucceeded(); - // keep this lock until we are done using the module, - // to prevent it from unloading while in use - std::lock_guard guard(module_id_to_info_map_lock_); + // keep this lock until we are done using the module, + // to prevent it from unloading while in use + std::lock_guard guard(module_id_to_info_map_lock_); - // double check if is_attached_ has changed to avoid possible race condition with shutdown function - if (!is_attached_) { - return S_OK; - } + // double check if is_attached_ has changed to avoid possible race condition with shutdown function + if (!is_attached_) + { + return S_OK; + } - Warn("Detaching profiler."); - Logger::Instance()->Flush(); - is_attached_.store(false); - return S_OK; + Warn("Detaching profiler."); + Logger::Instance()->Flush(); + is_attached_.store(false); + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfiler::JITCompilationStarted( - FunctionID function_id, BOOL is_safe_to_block) { - auto _ = trace::Stats::Instance()->JITCompilationStartedMeasure(); +HRESULT STDMETHODCALLTYPE CorProfiler::JITCompilationStarted(FunctionID function_id, BOOL is_safe_to_block) +{ + auto _ = trace::Stats::Instance()->JITCompilationStartedMeasure(); - if (!is_attached_ || !is_safe_to_block) { - return S_OK; - } + if (!is_attached_ || !is_safe_to_block) + { + return S_OK; + } - // keep this lock until we are done using the module, - // to prevent it from unloading while in use - std::lock_guard guard(module_id_to_info_map_lock_); + // keep this lock until we are done using the module, + // to prevent it from unloading while in use + std::lock_guard guard(module_id_to_info_map_lock_); - // double check if is_attached_ has changed to avoid possible race condition with shutdown function - if (!is_attached_) { - return S_OK; - } + // double check if is_attached_ has changed to avoid possible race condition with shutdown function + if (!is_attached_) + { + return S_OK; + } - ModuleID module_id; - mdToken function_token = mdTokenNil; + ModuleID module_id; + mdToken function_token = mdTokenNil; - HRESULT hr = this->info_->GetFunctionInfo(function_id, nullptr, &module_id, &function_token); + HRESULT hr = this->info_->GetFunctionInfo(function_id, nullptr, &module_id, &function_token); - if (FAILED(hr)) { - Warn("JITCompilationStarted: Call to ICorProfilerInfo4.GetFunctionInfo() failed for ", function_id); - return S_OK; - } + if (FAILED(hr)) + { + Warn("JITCompilationStarted: Call to ICorProfilerInfo4.GetFunctionInfo() failed for ", function_id); + return S_OK; + } - // Verify that we have the metadata for this module - ModuleMetadata* module_metadata = nullptr; + // Verify that we have the metadata for this module + ModuleMetadata* module_metadata = nullptr; - auto findRes = module_id_to_info_map_.find(module_id); - if (findRes != module_id_to_info_map_.end()) { - module_metadata = findRes->second; - } + auto findRes = module_id_to_info_map_.find(module_id); + if (findRes != module_id_to_info_map_.end()) + { + module_metadata = findRes->second; + } - if (module_metadata == nullptr) { - // we haven't stored a ModuleMetadata for this module, - // so we can't modify its IL - return S_OK; - } + if (module_metadata == nullptr) + { + // we haven't stored a ModuleMetadata for this module, + // so we can't modify its IL + return S_OK; + } // We check if we are in CallTarget mode and the loader was already injected. - const bool is_calltarget_enabled = IsCallTargetEnabled(); + const bool is_calltarget_enabled = IsCallTargetEnabled(is_net46_or_greater); const bool has_loader_injected_in_appdomain = first_jit_compilation_app_domains.find(module_metadata->app_domain_id) != first_jit_compilation_app_domains.end(); - if (is_calltarget_enabled && has_loader_injected_in_appdomain) { - // Loader was already injected in a calltarget scenario, we don't need to do anything else here - return S_OK; - } - - // get function info - const auto caller = GetFunctionInfo(module_metadata->metadata_import, function_token); - if (!caller.IsValid()) { - return S_OK; - } + if (is_calltarget_enabled && has_loader_injected_in_appdomain) + { + // Loader was already injected in a calltarget scenario, we don't need to do anything else here + return S_OK; + } - if (debug_logging_enabled) { - Debug("JITCompilationStarted: function_id=", function_id, - " token=", function_token, " name=", caller.type.name, ".", - caller.name, "()"); - } + // get function info + const auto caller = GetFunctionInfo(module_metadata->metadata_import, function_token); + if (!caller.IsValid()) + { + return S_OK; + } - // IIS: Ensure that the startup hook is inserted into System.Web.Compilation.BuildManager.InvokePreStartInitMethods. - // This will be the first call-site considered for the startup hook injection, - // which correctly loads Datadog.Trace.ClrProfiler.Managed.Loader into the application's - // own AppDomain because at this point in the code path, the ApplicationImpersonationContext - // has been started. - // - // Note: This check must only run on desktop because it is possible (and the default) to host - // ASP.NET Core in-process, so a new .NET Core runtime is instantiated and run in the same w3wp.exe process - auto valid_startup_hook_callsite = true; - if (is_desktop_iis) { - valid_startup_hook_callsite = - module_metadata->assemblyName == WStr("System.Web") && - caller.type.name == WStr("System.Web.Compilation.BuildManager") && - caller.name == WStr("InvokePreStartInitMethods"); - } else if (module_metadata->assemblyName == WStr("System") || - module_metadata->assemblyName == WStr("System.Net.Http")) { - valid_startup_hook_callsite = false; - } + if (debug_logging_enabled) + { + Debug("JITCompilationStarted: function_id=", function_id, " token=", function_token, " name=", caller.type.name, + ".", caller.name, "()"); + } - // The first time a method is JIT compiled in an AppDomain, insert our startup - // hook which, at a minimum, must add an AssemblyResolve event so we can find - // OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed.dll and its dependencies on-disk since it - // is no longer provided in a NuGet package - if (valid_startup_hook_callsite && !has_loader_injected_in_appdomain) { - bool domain_neutral_assembly = runtime_information_.is_desktop() && corlib_module_loaded && module_metadata->app_domain_id == corlib_app_domain_id; - Info("JITCompilationStarted: Startup hook registered in function_id=", function_id, - " token=", function_token, " name=", caller.type.name, ".", - caller.name, "(), assembly_name=", module_metadata->assemblyName, - " app_domain_id=", module_metadata->app_domain_id, - " domain_neutral=", domain_neutral_assembly); + // IIS: Ensure that the startup hook is inserted into System.Web.Compilation.BuildManager.InvokePreStartInitMethods. + // This will be the first call-site considered for the startup hook injection, + // which correctly loads Datadog.Trace.ClrProfiler.Managed.Loader into the application's + // own AppDomain because at this point in the code path, the ApplicationImpersonationContext + // has been started. + // + // Note: This check must only run on desktop because it is possible (and the default) to host + // ASP.NET Core in-process, so a new .NET Core runtime is instantiated and run in the same w3wp.exe process + auto valid_startup_hook_callsite = true; + if (is_desktop_iis) + { + valid_startup_hook_callsite = module_metadata->assemblyName == WStr("System.Web") && + caller.type.name == WStr("System.Web.Compilation.BuildManager") && + caller.name == WStr("InvokePreStartInitMethods"); + } + else if (module_metadata->assemblyName == WStr("System") || + module_metadata->assemblyName == WStr("System.Net.Http")) + { + valid_startup_hook_callsite = false; + } - first_jit_compilation_app_domains.insert(module_metadata->app_domain_id); + // The first time a method is JIT compiled in an AppDomain, insert our startup + // hook which, at a minimum, must add an AssemblyResolve event so we can find + // Datadog.Trace.ClrProfiler.Managed.dll and its dependencies on-disk since it + // is no longer provided in a NuGet package + if (valid_startup_hook_callsite && !has_loader_injected_in_appdomain) + { + bool domain_neutral_assembly = runtime_information_.is_desktop() && corlib_module_loaded && + module_metadata->app_domain_id == corlib_app_domain_id; + Info("JITCompilationStarted: Startup hook registered in function_id=", function_id, " token=", function_token, + " name=", caller.type.name, ".", caller.name, "(), assembly_name=", module_metadata->assemblyName, + " app_domain_id=", module_metadata->app_domain_id, " domain_neutral=", domain_neutral_assembly); + + first_jit_compilation_app_domains.insert(module_metadata->app_domain_id); + + hr = RunILStartupHook(module_metadata->metadata_emit, module_id, function_token); + + if (FAILED(hr)) + { + Warn("JITCompilationStarted: Call to RunILStartupHook() failed for ", module_id, " ", function_token); + return S_OK; + } - hr = RunILStartupHook(module_metadata->metadata_emit, module_id, - function_token); + if (is_desktop_iis) + { + hr = AddIISPreStartInitFlags(module_id, function_token); - if (FAILED(hr)) { - Warn("JITCompilationStarted: Call to RunILStartupHook() failed for ", module_id, " ", function_token); - return S_OK; + if (FAILED(hr)) + { + Warn("JITCompilationStarted: Call to AddIISPreStartInitFlags() failed for ", module_id, " ", + function_token); + return S_OK; + } + } } - if (is_desktop_iis) { - hr = AddIISPreStartInitFlags(module_id, - function_token); + if (!is_calltarget_enabled) + { + // we don't actually need to instrument anything in + // Microsoft.AspNetCore.Hosting, it was included only to ensure the startup + // hook is called for AspNetCore applications + if (module_metadata->assemblyName == WStr("Microsoft.AspNetCore.Hosting")) + { + return S_OK; + } - if (FAILED(hr)) { - Warn("JITCompilationStarted: Call to AddIISPreStartInitFlags() failed for ", - module_id, " ", function_token); - return S_OK; - } - } - } + // Get valid method replacements for this caller method + const auto method_replacements = module_metadata->GetMethodReplacementsForCaller(caller); + if (method_replacements.empty()) + { + return S_OK; + } - if (!is_calltarget_enabled) { - // we don't actually need to instrument anything in - // Microsoft.AspNetCore.Hosting, it was included only to ensure the startup - // hook is called for AspNetCore applications - if (module_metadata->assemblyName == WStr("Microsoft.AspNetCore.Hosting")) { - return S_OK; - } + // Perform method insertion calls + hr = + ProcessInsertionCalls(module_metadata, function_id, module_id, function_token, caller, method_replacements); - // Get valid method replacements for this caller method - const auto method_replacements = - module_metadata->GetMethodReplacementsForCaller(caller); - if (method_replacements.empty()) { - return S_OK; - } - - // Perform method insertion calls - hr = ProcessInsertionCalls(module_metadata, - function_id, - module_id, - function_token, - caller, - method_replacements); - - if (FAILED(hr)) { - Warn("JITCompilationStarted: Call to ProcessInsertionCalls() failed for ", function_id, " ", module_id, " ", function_token); - return S_OK; - } - - // Perform method replacement calls - hr = ProcessReplacementCalls(module_metadata, - function_id, - module_id, - function_token, - caller, - method_replacements); - - if (FAILED(hr)) { - Warn("JITCompilationStarted: Call to ProcessReplacementCalls() failed for ", function_id, " ", module_id, " ", function_token); - return S_OK; - } - } + if (FAILED(hr)) + { + Warn("JITCompilationStarted: Call to ProcessInsertionCalls() failed for ", function_id, " ", module_id, " ", + function_token); + return S_OK; + } - return S_OK; -} + // Perform method replacement calls + hr = ProcessReplacementCalls(module_metadata, function_id, module_id, function_token, caller, + method_replacements); -HRESULT STDMETHODCALLTYPE CorProfiler::JITInlining(FunctionID callerId, - FunctionID calleeId, BOOL* pfShouldInline) { - auto _ = trace::Stats::Instance()->JITInliningMeasure(); + if (FAILED(hr)) + { + Warn("JITCompilationStarted: Call to ProcessReplacementCalls() failed for ", function_id, " ", module_id, + " ", function_token); + return S_OK; + } + } - if (!is_attached_) { return S_OK; - } +} - ModuleID calleeModuleId; - mdToken calleFunctionToken = mdTokenNil; - auto hr = this->info_->GetFunctionInfo(calleeId, NULL, &calleeModuleId, - &calleFunctionToken); +HRESULT STDMETHODCALLTYPE CorProfiler::JITInlining(FunctionID callerId, FunctionID calleeId, BOOL* pfShouldInline) +{ + auto _ = trace::Stats::Instance()->JITInliningMeasure(); - *pfShouldInline = true; + if (!is_attached_) + { + return S_OK; + } - if (FAILED(hr)) { - Warn("*** JITInlining: Failed to get the function info of the calleId: ", calleeId); - return S_OK; - } + ModuleID calleeModuleId; + mdToken calleFunctionToken = mdTokenNil; + auto hr = this->info_->GetFunctionInfo(calleeId, NULL, &calleeModuleId, &calleFunctionToken); - if (rejit_handler == nullptr) { - return S_OK; - } + *pfShouldInline = true; - RejitHandlerModule* handlerModule = nullptr; - if (rejit_handler->TryGetModule(calleeModuleId, &handlerModule)) { - RejitHandlerModuleMethod* handlerMethod = nullptr; - if (handlerModule->TryGetMethod(calleFunctionToken, &handlerMethod)) { - Debug("*** JITInlining: Inlining disabled for [ModuleId=", calleeModuleId, - ", MethodDef=", TokenStr(&calleFunctionToken), "]"); - *pfShouldInline = false; - return S_OK; + if (FAILED(hr)) + { + Warn("*** JITInlining: Failed to get the function info of the calleId: ", calleeId); + return S_OK; + } + + if (rejit_handler == nullptr) + { + return S_OK; + } + + RejitHandlerModule* handlerModule = nullptr; + if (rejit_handler->TryGetModule(calleeModuleId, &handlerModule)) + { + RejitHandlerModuleMethod* handlerMethod = nullptr; + if (handlerModule->TryGetMethod(calleFunctionToken, &handlerMethod)) + { + Debug("*** JITInlining: Inlining disabled for [ModuleId=", calleeModuleId, + ", MethodDef=", TokenStr(&calleFunctionToken), "]"); + *pfShouldInline = false; + return S_OK; + } } - } - return S_OK; + return S_OK; } // // ICorProfilerCallback6 methods // -HRESULT STDMETHODCALLTYPE CorProfiler::GetAssemblyReferences( - const WCHAR* wszAssemblyPath, - ICorProfilerAssemblyReferenceProvider* pAsmRefProvider) { - if (in_azure_app_services) { - Debug("GetAssemblyReferences skipping entire callback because this is running in Azure App Services, which isn't yet supported for this feature. AssemblyPath=", wszAssemblyPath); - return S_OK; - } - - // Convert the assembly path to the assembly name, assuming the assembly name - // is either or .dll - auto assemblyPathString = ToString(wszAssemblyPath); - auto filename = - assemblyPathString.substr(assemblyPathString.find_last_of("\\/") + 1); - auto lastNiDllPeriodIndex = filename.rfind(".ni.dll"); - auto lastDllPeriodIndex = filename.rfind(".dll"); - if (lastNiDllPeriodIndex != std::string::npos) { - filename.erase(lastNiDllPeriodIndex, 7); - } else if (lastDllPeriodIndex != std::string::npos) { - filename.erase(lastDllPeriodIndex, 4); - } +HRESULT STDMETHODCALLTYPE CorProfiler::GetAssemblyReferences(const WCHAR* wszAssemblyPath, + ICorProfilerAssemblyReferenceProvider* pAsmRefProvider) +{ + if (in_azure_app_services) + { + Debug("GetAssemblyReferences skipping entire callback because this is running in Azure App Services, which " + "isn't yet supported for this feature. AssemblyPath=", + wszAssemblyPath); + return S_OK; + } - const WSTRING assembly_name = ToWSTRING(filename); + // Convert the assembly path to the assembly name, assuming the assembly name + // is either or .dll + auto assemblyPathString = ToString(wszAssemblyPath); + auto filename = assemblyPathString.substr(assemblyPathString.find_last_of("\\/") + 1); + auto lastNiDllPeriodIndex = filename.rfind(".ni.dll"); + auto lastDllPeriodIndex = filename.rfind(".dll"); + if (lastNiDllPeriodIndex != std::string::npos) + { + filename.erase(lastNiDllPeriodIndex, 7); + } + else if (lastDllPeriodIndex != std::string::npos) + { + filename.erase(lastDllPeriodIndex, 4); + } - // Skip known framework assemblies that we will not instrument and, - // as a result, will not need an assembly reference to the - // managed profiler - for (auto&& skip_assembly_pattern : skip_assembly_prefixes) { - if (assembly_name.rfind(skip_assembly_pattern, 0) == 0) { - Debug("GetAssemblyReferences skipping module by pattern: Name=", - assembly_name, " Path=", wszAssemblyPath); - return S_OK; + const WSTRING assembly_name = ToWSTRING(filename); + + // Skip known framework assemblies that we will not instrument and, + // as a result, will not need an assembly reference to the + // managed profiler + for (auto&& skip_assembly_pattern : skip_assembly_prefixes) + { + if (assembly_name.rfind(skip_assembly_pattern, 0) == 0) + { + Debug("GetAssemblyReferences skipping module by pattern: Name=", assembly_name, " Path=", wszAssemblyPath); + return S_OK; + } } - } - for (auto&& skip_assembly : skip_assemblies) { - if (assembly_name == skip_assembly) { - Debug("GetAssemblyReferences skipping known assembly: Name=", - assembly_name, " Path=", wszAssemblyPath); - return S_OK; + for (auto&& skip_assembly : skip_assemblies) + { + if (assembly_name == skip_assembly) + { + Debug("GetAssemblyReferences skipping known assembly: Name=", assembly_name, " Path=", wszAssemblyPath); + return S_OK; + } } - } - // Construct an ASSEMBLYMETADATA structure for the managed profiler that can - // be consumed by the runtime - const AssemblyReference assemblyReference = trace::AssemblyReference(managed_profiler_full_assembly_version); - ASSEMBLYMETADATA assembly_metadata{}; - - assembly_metadata.usMajorVersion = assemblyReference.version.major; - assembly_metadata.usMinorVersion = assemblyReference.version.minor; - assembly_metadata.usBuildNumber = assemblyReference.version.build; - assembly_metadata.usRevisionNumber = assemblyReference.version.revision; - if (assemblyReference.locale == WStr("neutral")) { - assembly_metadata.szLocale = const_cast(WStr("\0")); - assembly_metadata.cbLocale = 0; - } else { - assembly_metadata.szLocale = - const_cast(assemblyReference.locale.c_str()); - assembly_metadata.cbLocale = (DWORD)(assemblyReference.locale.size()); - } + // Construct an ASSEMBLYMETADATA structure for the managed profiler that can + // be consumed by the runtime + const AssemblyReference assemblyReference = trace::AssemblyReference(managed_profiler_full_assembly_version); + ASSEMBLYMETADATA assembly_metadata{}; + + assembly_metadata.usMajorVersion = assemblyReference.version.major; + assembly_metadata.usMinorVersion = assemblyReference.version.minor; + assembly_metadata.usBuildNumber = assemblyReference.version.build; + assembly_metadata.usRevisionNumber = assemblyReference.version.revision; + if (assemblyReference.locale == WStr("neutral")) + { + assembly_metadata.szLocale = const_cast(WStr("\0")); + assembly_metadata.cbLocale = 0; + } + else + { + assembly_metadata.szLocale = const_cast(assemblyReference.locale.c_str()); + assembly_metadata.cbLocale = (DWORD)(assemblyReference.locale.size()); + } - DWORD public_key_size = 8; - if (assemblyReference.public_key == trace::PublicKey()) { - public_key_size = 0; - } + DWORD public_key_size = 8; + if (assemblyReference.public_key == trace::PublicKey()) + { + public_key_size = 0; + } - COR_PRF_ASSEMBLY_REFERENCE_INFO asmRefInfo; - asmRefInfo.pbPublicKeyOrToken = - (void*)&assemblyReference.public_key.data[0]; - asmRefInfo.cbPublicKeyOrToken = public_key_size; - asmRefInfo.szName = assemblyReference.name.c_str(); - asmRefInfo.pMetaData = &assembly_metadata; - asmRefInfo.pbHashValue = nullptr; - asmRefInfo.cbHashValue = 0; - asmRefInfo.dwAssemblyRefFlags = 0; - - // Attempt to extend the assembly closure of the provided assembly to include - // the managed profiler - auto hr = pAsmRefProvider->AddAssemblyReference(&asmRefInfo); - if (FAILED(hr)) { - Warn("GetAssemblyReferences failed for call from ", wszAssemblyPath); - return S_OK; - } + COR_PRF_ASSEMBLY_REFERENCE_INFO asmRefInfo; + asmRefInfo.pbPublicKeyOrToken = (void*) &assemblyReference.public_key.data[0]; + asmRefInfo.cbPublicKeyOrToken = public_key_size; + asmRefInfo.szName = assemblyReference.name.c_str(); + asmRefInfo.pMetaData = &assembly_metadata; + asmRefInfo.pbHashValue = nullptr; + asmRefInfo.cbHashValue = 0; + asmRefInfo.dwAssemblyRefFlags = 0; + + // Attempt to extend the assembly closure of the provided assembly to include + // the managed profiler + auto hr = pAsmRefProvider->AddAssemblyReference(&asmRefInfo); + if (FAILED(hr)) + { + Warn("GetAssemblyReferences failed for call from ", wszAssemblyPath); + return S_OK; + } - Debug("GetAssemblyReferences extending assembly closure for ", - assembly_name, " to include ", asmRefInfo.szName, - ". Path=", wszAssemblyPath); - instrument_domain_neutral_assemblies = true; + Debug("GetAssemblyReferences extending assembly closure for ", assembly_name, " to include ", asmRefInfo.szName, + ". Path=", wszAssemblyPath); + instrument_domain_neutral_assemblies = true; - return S_OK; + return S_OK; } -bool CorProfiler::IsAttached() const { return is_attached_; } +bool CorProfiler::IsAttached() const +{ + return is_attached_; +} // // Helper methods // -HRESULT CorProfiler::ProcessReplacementCalls( - ModuleMetadata* module_metadata, - const FunctionID function_id, - const ModuleID module_id, - const mdToken function_token, - const FunctionInfo& caller, - const std::vector method_replacements) { - ILRewriter rewriter(this->info_, nullptr, module_id, function_token); - bool modified = false; - auto hr = rewriter.Import(); - - if (FAILED(hr)) { - Warn("ProcessReplacementCalls: Call to ILRewriter.Import() failed for ", module_id, " ", function_token); - return hr; - } - - std::string original_code; - if (dump_il_rewrite_enabled) { - original_code = - GetILCodes("*** IL original code for caller: ", &rewriter, caller, module_metadata); - } +HRESULT CorProfiler::ProcessReplacementCalls(ModuleMetadata* module_metadata, const FunctionID function_id, + const ModuleID module_id, const mdToken function_token, + const FunctionInfo& caller, + const std::vector method_replacements) +{ + ILRewriter rewriter(this->info_, nullptr, module_id, function_token); + bool modified = false; + auto hr = rewriter.Import(); + + if (FAILED(hr)) + { + Warn("ProcessReplacementCalls: Call to ILRewriter.Import() failed for ", module_id, " ", function_token); + return hr; + } - // Perform method call replacements - for (auto& method_replacement : method_replacements) { - // Exit early if the method replacement isn't actually doing a replacement - if (method_replacement.wrapper_method.action != WStr("ReplaceTargetMethod")) { - continue; - } - - const auto& wrapper_method_key = - method_replacement.wrapper_method.get_method_cache_key(); - // Exit early if we previously failed to store the method ref for this wrapper_method - if (module_metadata->IsFailedWrapperMemberKey(wrapper_method_key)) { - continue; - } - - // for each IL instruction - for (ILInstr* pInstr = rewriter.GetILList()->m_pNext; - pInstr != rewriter.GetILList(); pInstr = pInstr->m_pNext) { - // only CALL or CALLVIRT - if (pInstr->m_opcode != CEE_CALL && pInstr->m_opcode != CEE_CALLVIRT) { - continue; - } - - // get the target function info, continue if its invalid - auto target = - GetFunctionInfo(module_metadata->metadata_import, pInstr->m_Arg32); - if (!target.IsValid()) { - continue; - } - - // make sure the type and method names match - if (method_replacement.target_method.type_name != target.type.name || - method_replacement.target_method.method_name != target.name) { - continue; - } - - // we add 3 parameters to every wrapper method: opcode, mdToken, and - // module_version_id - const short added_parameters_count = 3; - - auto wrapper_method_signature_size = - method_replacement.wrapper_method.method_signature.data.size(); - - if (wrapper_method_signature_size < (added_parameters_count + 3)) { - // wrapper signature must have at least 6 bytes - // 0:{CallingConvention}|1:{ParamCount}|2:{ReturnType}|3:{OpCode}|4:{mdToken}|5:{ModuleVersionId} - if (debug_logging_enabled) { - Debug( - "JITCompilationStarted skipping function call: wrapper signature " - "too short. function_id=", - function_id, " token=", function_token, - " wrapper_method=", method_replacement.wrapper_method.type_name, - ".", method_replacement.wrapper_method.method_name, - "() wrapper_method_signature_size=", - wrapper_method_signature_size); - } - - continue; - } - - auto expected_number_args = method_replacement.wrapper_method - .method_signature.NumberOfArguments(); - - // subtract the last arguments we add to every wrapper - expected_number_args = expected_number_args - added_parameters_count; - - if (target.signature.IsInstanceMethod()) { - // We always pass the instance as the first argument - expected_number_args--; - } - - auto target_arg_count = target.signature.NumberOfArguments(); - - if (expected_number_args != target_arg_count) { - // Number of arguments does not match our wrapper method - if (debug_logging_enabled) { - Debug( - "JITCompilationStarted skipping function call: argument counts " - "don't match. function_id=", - function_id, " token=", function_token, - " target_name=", target.type.name, ".", target.name, - "() expected_number_args=", expected_number_args, - " target_arg_count=", target_arg_count); - } - - continue; - } - - // Resolve the MethodRef now. If the method is generic, we'll need to use it - // to define a MethodSpec - // Generate a method ref token for the wrapper method - mdMemberRef wrapper_method_ref = mdMemberRefNil; - mdTypeRef wrapper_type_ref = mdTypeRefNil; - auto generated_wrapper_method_ref = GetWrapperMethodRef(module_metadata, - module_id, - method_replacement, - wrapper_method_ref, - wrapper_type_ref); - if (!generated_wrapper_method_ref) { - Warn( - "JITCompilationStarted failed to obtain wrapper method ref for ", - method_replacement.wrapper_method.type_name, ".", method_replacement.wrapper_method.method_name, "().", - " function_id=", function_id, " function_token=", function_token, - " name=", caller.type.name, ".", caller.name, "()"); - continue; - } - - auto method_def_md_token = target.id; - - if (target.is_generic) { - if (target.signature.NumberOfTypeArguments() != - method_replacement.wrapper_method.method_signature - .NumberOfTypeArguments()) { - // Number of generic arguments does not match our wrapper method - continue; - } - - // we need to emit a method spec to populate the generic arguments - wrapper_method_ref = - DefineMethodSpec(module_metadata->metadata_emit, wrapper_method_ref, - target.function_spec_signature); - method_def_md_token = target.method_def_id; - } - - std::vector actual_sig; - const auto successfully_parsed_signature = TryParseSignatureTypes( - module_metadata->metadata_import, target, actual_sig); - auto expected_sig = - method_replacement.target_method.signature_types; - - if (!successfully_parsed_signature) { - if (debug_logging_enabled) { - Debug( - "JITCompilationStarted skipping function call: failed to parse " - "signature. function_id=", - function_id, " token=", function_token, - " target_name=", target.type.name, ".", target.name, "()", - " successfully_parsed_signature=", successfully_parsed_signature, - " sig_types.size()=", actual_sig.size(), - " expected_sig_types.size()=", expected_sig.size()); - } - - continue; - } - - if (actual_sig.size() != expected_sig.size()) { - // we can't safely assume our wrapper methods handle the types - if (debug_logging_enabled) { - Debug( - "JITCompilationStarted skipping function call: unexpected type " - "count. function_id=", - function_id, " token=", function_token, - " target_name=", target.type.name, ".", target.name, - "() successfully_parsed_signature=", - successfully_parsed_signature, - " sig_types.size()=", actual_sig.size(), - " expected_sig_types.size()=", expected_sig.size()); - } - - continue; - } - - auto is_match = true; - for (size_t i = 0; i < expected_sig.size(); i++) { - if (expected_sig[i] == WStr("_")) { - // We are supposed to ignore this index - continue; - } - if (expected_sig[i] != actual_sig[i]) { - // we have a type mismatch, drop out - if (debug_logging_enabled) { - Debug( - "JITCompilationStarted skipping function call: types don't " - "match. function_id=", - function_id, " token=", function_token, - " target_name=", target.type.name, ".", target.name, - "() actual[", i, "]=", actual_sig[i], ", expected[", - i, "]=", expected_sig[i]); - } - - is_match = false; - break; - } - } - - if (!is_match) { - // signatures don't match - continue; - } - - // At this point we know we've hit a match. Error out if - // 1) The managed profiler has not been loaded yet - // 2) The caller is domain-neutral AND we do not want to instrument domain-neutral assemblies - // 3) The target instruction is a constrained virtual method call (a constrained IL instruction followed by a callvirt IL instruction) - - // 1) The managed profiler has not been loaded yet - if (!ProfilerAssemblyIsLoadedIntoAppDomain(module_metadata->app_domain_id)) { - Warn( - "JITCompilationStarted skipping method: Method replacement " - "found but the managed profiler has not yet been loaded " - "into AppDomain with id=", module_metadata->app_domain_id, - " function_id=", function_id, " token=", function_token, - " caller_name=", caller.type.name, ".", caller.name, "()", - " target_name=", target.type.name, ".", target.name, "()"); - continue; - } - - // 2) The caller is domain-neutral AND we do not want to instrument domain-neutral assemblies - bool caller_assembly_is_domain_neutral = - runtime_information_.is_desktop() && corlib_module_loaded && - module_metadata->app_domain_id == corlib_app_domain_id; - - if (caller_assembly_is_domain_neutral && !instrument_domain_neutral_assemblies) { - Warn( - "JITCompilationStarted skipping method: Method replacement", - " found but the calling assembly ", module_metadata->assemblyName, - " has been loaded domain-neutral so its code is being shared across AppDomains," - " making it unsafe for automatic instrumentation.", - " function_id=", function_id, " token=", function_token, - " caller_name=", caller.type.name, ".", caller.name, "()", - " target_name=", target.type.name, ".", target.name, "()"); - continue; - } - - // 3) The target instruction is a constrained virtual method call (a constrained IL instruction followed by a callvirt IL instruction) - if (pInstr->m_opcode == CEE_CALLVIRT && pInstr->m_pPrev->m_opcode == CEE_CONSTRAINED) { - Warn("JITCompilationStarted skipping method: Method replacement", - " found but the target method call is a constrained virtual method call ", - " (a 'constrained' IL instruction followed by a 'callvirt' IL instruction).", - " This type of method call is not currently supported for automatic" - " instrumentation.", - " function_id=", function_id, " token=", function_token, - " caller_name=", caller.type.name, ".", caller.name, "()", - " target_name=", target.type.name, ".", target.name, "()"); - continue; - } - - const auto original_argument = pInstr->m_Arg32; - const void* module_version_id_ptr = &module_metadata->module_version_id; - - // Begin IL Modification - ILRewriterWrapper rewriter_wrapper(&rewriter); - rewriter_wrapper.SetILPosition(pInstr); - - // IL Modification #1: Replace original method call with a NOP, so that all original - // jump targets resolve correctly and we correctly populate the - // stack with additional arguments - // - // IMPORTANT: Conditional branches may jump to the original call instruction which - // resulted in the InvalidProgramException seen in - // https://github.com/DataDog/dd-trace-dotnet/pull/542. To avoid this, we'll do - // the rest of our IL modifications AFTER this instruction. - auto original_methodcall_opcode = pInstr->m_opcode; - pInstr->m_opcode = CEE_NOP; - pInstr = pInstr->m_pNext; - rewriter_wrapper.SetILPosition(pInstr); - - // IL Modification #2: Conditionally box System.Threading.CancellationToken or System.ReadOnlyMemory - // if it is the last argument in the target method. - // - // System.Threading.CancellationToken: - // If the last argument in the method signature is of the type - // System.Threading.CancellationToken (a struct) then box it before calling our - // integration method. This resolves https://github.com/DataDog/dd-trace-dotnet/issues/662, - // in which we did not box the System.Threading.CancellationToken object, even though the - // wrapper method expects an object. In that issue we observed some strange CLR behavior - // when the target method was in System.Data and the environment was 32-bit .NET Framework: - // the CLR swapped the values of the CancellationToken argument and the opCode argument. - // For example, the VIRTCALL opCode is '0x6F' and this value would be placed at the memory - // location assigned to the CancellationToken variable. Since we treat the CancellationToken - // variable as an object, this '0x6F' would be dereference to access the underlying object, - // and an invalid memory read would occur and crash the application. - // - // System.ReadOnlyMemory: - // If the last argument in the method signature is of the type - // System.ReadOnlyMemory (a generic valuetype) then box it before calling our - // integration method. We need this modification for RabbitMQ.Client 6.x.x instrumentation - // that uses System.ReadOnlyMemory instead of byte[] for the message body parameter. - // - // Currently, all integrations that use either of the two types - // have the argument as the last argument in the signature (lucky us!). - // For now, we'll do the following: - // 1) Get the method signature of the original target method - // 2) Read the signature until the final argument type - // 3) Check for System.Threading.CancellationToken - // 3a) If the type begins with `ELEMENT_TYPE_VALUETYPE`, uncompress the compressed type token that follows - // 3b) If the type token represents System.Threading.CancellationToken, emit a 'box ' IL instruction before calling our wrapper method - // 4) Check for System.ReadOnlyMemory - // 4a) If the type begins with `ELEMENT_TYPE_GENERICINST` and if the next byte is `ELEMENT_TYPE_VALUETYPE`, uncompress the compressed type token that follows - // 4b) If the type token represents System.ReadOnlyMemory, emit a 'box ' IL instruction before calling our wrapper method. The type token - // will be a TypeSpec representing the specific generic instantiation of System.ReadOnlyMemory - auto original_method_def = target.id; - size_t argument_count = target.signature.NumberOfArguments(); - size_t return_type_index = target.signature.IndexOfReturnType(); - PCCOR_SIGNATURE pSigCurrent = PCCOR_SIGNATURE(&target.signature.data[return_type_index]); // index to the location of the return type - bool signature_read_success = true; - - // iterate until the pointer is pointing at the last argument - for (size_t signature_types_index = 0; signature_types_index < argument_count; signature_types_index++) { - if (!ParseType(&pSigCurrent)) { - signature_read_success = false; - break; - } - } - - // read the last argument type - if (signature_read_success && *pSigCurrent == ELEMENT_TYPE_VALUETYPE) { - pSigCurrent++; - mdToken valuetype_type_token = CorSigUncompressToken(pSigCurrent); - - // Currently, we only expect to see `System.Threading.CancellationToken` as a valuetype in this position - // If we expand this to a general case, we would always perform the boxing regardless of type - if (GetTypeInfo(module_metadata->metadata_import, valuetype_type_token).name == WStr("System.Threading.CancellationToken")) { - rewriter_wrapper.Box(valuetype_type_token); - } - } - - if (signature_read_success && *pSigCurrent == ELEMENT_TYPE_GENERICINST) { - PCCOR_SIGNATURE p_start_byte = pSigCurrent; - PCCOR_SIGNATURE p_end_byte = p_start_byte; - - pSigCurrent++; - - if (*pSigCurrent == ELEMENT_TYPE_VALUETYPE) { - pSigCurrent++; - mdToken valuetype_type_token = CorSigUncompressToken(pSigCurrent); - - // Currently, we only expect to see - // `System.ReadOnlyMemory` as a valuetype in this - // position If we expand this to a general case, we would always - // perform the boxing regardless of type - if (GetTypeInfo(module_metadata->metadata_import, valuetype_type_token).name == WStr("System.ReadOnlyMemory`1") - && ParseType(&p_end_byte)) { - size_t length = p_end_byte - p_start_byte; - mdTypeSpec type_token; - module_metadata->metadata_emit->GetTokenFromTypeSpec( - p_start_byte, (ULONG)length, &type_token); - rewriter_wrapper.Box(type_token); - } - } - } - - // IL Modification #3: Insert a non-virtual call (CALL) to the instrumentation wrapper. - // Always use CALL because the wrapper methods are all static. - rewriter_wrapper.CallMember(wrapper_method_ref, false); - rewriter_wrapper.SetILPosition(pInstr->m_pPrev); // Set ILPosition to method call - - // IL Modification #4: Push the following additional arguments on the evaluation stack in the - // following order, which all integration wrapper methods expect: - // 1) [int32] original CALL/CALLVIRT opCode - // 2) [int32] mdToken for original method call target - // 3) [int64] pointer to MVID - rewriter_wrapper.LoadInt32(original_methodcall_opcode); - rewriter_wrapper.LoadInt32(method_def_md_token); - rewriter_wrapper.LoadInt64(reinterpret_cast(module_version_id_ptr)); - - // IL Modification #5: Conditionally emit an unbox.any instruction on the return value - // of the wrapper method if we return an object but the original - // method call returned a valuetype or a generic type. - // - // This resolves https://github.com/DataDog/dd-trace-dotnet/pull/566, which raised a - // System.EntryPointNotFoundException. This occurred because the return type of the - // generic method was a generic type that evaluated to a value type at runtime. As a - // result, this caller method expected an unboxed representation of the return value, - // even though we can only return values of type object. So if we detect that the - // expected return type is a valuetype or a generic type, issue an unbox.any - // instruction that will unbox it. - mdToken typeToken; - if (method_replacement.wrapper_method.method_signature.ReturnTypeIsObject() - && ReturnTypeIsValueTypeOrGeneric(module_metadata->metadata_import, - module_metadata->metadata_emit, - module_metadata->assembly_emit, - corAssemblyProperty, - target.id, - target.signature, - &typeToken)) { - if (debug_logging_enabled) { - Debug( - "JITCompilationStarted inserting 'unbox.any ", typeToken, - "' instruction after calling target function." - " function_id=", function_id, - " token=", function_token, - " target_name=", target.type.name, ".", target.name,"()"); - } - rewriter_wrapper.UnboxAnyAfter(typeToken); - } - - // End IL Modification - modified = true; - Info("*** JITCompilationStarted() replaced calls from ", caller.type.name, - ".", caller.name, "() to ", - method_replacement.target_method.type_name, ".", - method_replacement.target_method.method_name, "() ", - original_argument, " with calls to ", - method_replacement.wrapper_method.type_name, ".", - method_replacement.wrapper_method.method_name, "() ", - wrapper_method_ref); + std::string original_code; + if (dump_il_rewrite_enabled) + { + original_code = GetILCodes("*** IL original code for caller: ", &rewriter, caller, module_metadata); } - } - if (modified) { - hr = rewriter.Export(); + // Perform method call replacements + for (auto& method_replacement : method_replacements) + { + // Exit early if the method replacement isn't actually doing a replacement + if (method_replacement.wrapper_method.action != WStr("ReplaceTargetMethod")) + { + continue; + } + + const auto& wrapper_method_key = method_replacement.wrapper_method.get_method_cache_key(); + // Exit early if we previously failed to store the method ref for this wrapper_method + if (module_metadata->IsFailedWrapperMemberKey(wrapper_method_key)) + { + continue; + } + + // for each IL instruction + for (ILInstr* pInstr = rewriter.GetILList()->m_pNext; pInstr != rewriter.GetILList(); pInstr = pInstr->m_pNext) + { + // only CALL or CALLVIRT + if (pInstr->m_opcode != CEE_CALL && pInstr->m_opcode != CEE_CALLVIRT) + { + continue; + } + + // get the target function info, continue if its invalid + auto target = GetFunctionInfo(module_metadata->metadata_import, pInstr->m_Arg32); + if (!target.IsValid()) + { + continue; + } + + // make sure the type and method names match + if (method_replacement.target_method.type_name != target.type.name || + method_replacement.target_method.method_name != target.name) + { + continue; + } + + // we add 3 parameters to every wrapper method: opcode, mdToken, and + // module_version_id + const short added_parameters_count = 3; + + auto wrapper_method_signature_size = method_replacement.wrapper_method.method_signature.data.size(); + + if (wrapper_method_signature_size < (added_parameters_count + 3)) + { + // wrapper signature must have at least 6 bytes + // 0:{CallingConvention}|1:{ParamCount}|2:{ReturnType}|3:{OpCode}|4:{mdToken}|5:{ModuleVersionId} + if (debug_logging_enabled) + { + Debug("JITCompilationStarted skipping function call: wrapper signature " + "too short. function_id=", + function_id, " token=", function_token, + " wrapper_method=", method_replacement.wrapper_method.type_name, ".", + method_replacement.wrapper_method.method_name, + "() wrapper_method_signature_size=", wrapper_method_signature_size); + } + + continue; + } + + auto expected_number_args = method_replacement.wrapper_method.method_signature.NumberOfArguments(); + + // subtract the last arguments we add to every wrapper + expected_number_args = expected_number_args - added_parameters_count; + + if (target.signature.IsInstanceMethod()) + { + // We always pass the instance as the first argument + expected_number_args--; + } + + auto target_arg_count = target.signature.NumberOfArguments(); + + if (expected_number_args != target_arg_count) + { + // Number of arguments does not match our wrapper method + if (debug_logging_enabled) + { + Debug("JITCompilationStarted skipping function call: argument counts " + "don't match. function_id=", + function_id, " token=", function_token, " target_name=", target.type.name, ".", target.name, + "() expected_number_args=", expected_number_args, " target_arg_count=", target_arg_count); + } + + continue; + } + + // Resolve the MethodRef now. If the method is generic, we'll need to use it + // to define a MethodSpec + // Generate a method ref token for the wrapper method + mdMemberRef wrapper_method_ref = mdMemberRefNil; + mdTypeRef wrapper_type_ref = mdTypeRefNil; + auto generated_wrapper_method_ref = GetWrapperMethodRef(module_metadata, module_id, method_replacement, + wrapper_method_ref, wrapper_type_ref); + if (!generated_wrapper_method_ref) + { + Warn("JITCompilationStarted failed to obtain wrapper method ref for ", + method_replacement.wrapper_method.type_name, ".", method_replacement.wrapper_method.method_name, + "().", " function_id=", function_id, " function_token=", function_token, + " name=", caller.type.name, ".", caller.name, "()"); + continue; + } + + auto method_def_md_token = target.id; + + if (target.is_generic) + { + if (target.signature.NumberOfTypeArguments() != + method_replacement.wrapper_method.method_signature.NumberOfTypeArguments()) + { + // Number of generic arguments does not match our wrapper method + continue; + } + + // we need to emit a method spec to populate the generic arguments + wrapper_method_ref = DefineMethodSpec(module_metadata->metadata_emit, wrapper_method_ref, + target.function_spec_signature); + method_def_md_token = target.method_def_id; + } + + std::vector actual_sig; + const auto successfully_parsed_signature = + TryParseSignatureTypes(module_metadata->metadata_import, target, actual_sig); + auto expected_sig = method_replacement.target_method.signature_types; + + if (!successfully_parsed_signature) + { + if (debug_logging_enabled) + { + Debug("JITCompilationStarted skipping function call: failed to parse " + "signature. function_id=", + function_id, " token=", function_token, " target_name=", target.type.name, ".", target.name, + "()", " successfully_parsed_signature=", successfully_parsed_signature, + " sig_types.size()=", actual_sig.size(), " expected_sig_types.size()=", expected_sig.size()); + } + + continue; + } + + if (actual_sig.size() != expected_sig.size()) + { + // we can't safely assume our wrapper methods handle the types + if (debug_logging_enabled) + { + Debug("JITCompilationStarted skipping function call: unexpected type " + "count. function_id=", + function_id, " token=", function_token, " target_name=", target.type.name, ".", target.name, + "() successfully_parsed_signature=", successfully_parsed_signature, + " sig_types.size()=", actual_sig.size(), " expected_sig_types.size()=", expected_sig.size()); + } + + continue; + } + + auto is_match = true; + for (size_t i = 0; i < expected_sig.size(); i++) + { + if (expected_sig[i] == WStr("_")) + { + // We are supposed to ignore this index + continue; + } + if (expected_sig[i] != actual_sig[i]) + { + // we have a type mismatch, drop out + if (debug_logging_enabled) + { + Debug("JITCompilationStarted skipping function call: types don't " + "match. function_id=", + function_id, " token=", function_token, " target_name=", target.type.name, ".", + target.name, "() actual[", i, "]=", actual_sig[i], ", expected[", i, + "]=", expected_sig[i]); + } + + is_match = false; + break; + } + } - if (FAILED(hr)) { - Warn("ProcessReplacementCalls: Call to ILRewriter.Export() failed for ModuleID=", module_id, " ", function_token); - return hr; + if (!is_match) + { + // signatures don't match + continue; + } + + // At this point we know we've hit a match. Error out if + // 1) The managed profiler has not been loaded yet + // 2) The caller is domain-neutral AND we do not want to instrument domain-neutral assemblies + // 3) The target instruction is a constrained virtual method call (a constrained IL instruction followed + // by a callvirt IL instruction) + + // 1) The managed profiler has not been loaded yet + if (!ProfilerAssemblyIsLoadedIntoAppDomain(module_metadata->app_domain_id)) + { + Warn("JITCompilationStarted skipping method: Method replacement " + "found but the managed profiler has not yet been loaded " + "into AppDomain with id=", + module_metadata->app_domain_id, " function_id=", function_id, " token=", function_token, + " caller_name=", caller.type.name, ".", caller.name, "()", " target_name=", target.type.name, ".", + target.name, "()"); + continue; + } + + // 2) The caller is domain-neutral AND we do not want to instrument domain-neutral assemblies + bool caller_assembly_is_domain_neutral = runtime_information_.is_desktop() && corlib_module_loaded && + module_metadata->app_domain_id == corlib_app_domain_id; + + if (caller_assembly_is_domain_neutral && !instrument_domain_neutral_assemblies) + { + Warn("JITCompilationStarted skipping method: Method replacement", " found but the calling assembly ", + module_metadata->assemblyName, + " has been loaded domain-neutral so its code is being shared across AppDomains," + " making it unsafe for automatic instrumentation.", + " function_id=", function_id, " token=", function_token, " caller_name=", caller.type.name, ".", + caller.name, "()", " target_name=", target.type.name, ".", target.name, "()"); + continue; + } + + // 3) The target instruction is a constrained virtual method call (a constrained IL instruction followed + // by a callvirt IL instruction) + if (pInstr->m_opcode == CEE_CALLVIRT && pInstr->m_pPrev->m_opcode == CEE_CONSTRAINED) + { + Warn("JITCompilationStarted skipping method: Method replacement", + " found but the target method call is a constrained virtual method call ", + " (a 'constrained' IL instruction followed by a 'callvirt' IL instruction).", + " This type of method call is not currently supported for automatic" + " instrumentation.", + " function_id=", function_id, " token=", function_token, " caller_name=", caller.type.name, ".", + caller.name, "()", " target_name=", target.type.name, ".", target.name, "()"); + continue; + } + + const auto original_argument = pInstr->m_Arg32; + const void* module_version_id_ptr = &module_metadata->module_version_id; + + // Begin IL Modification + ILRewriterWrapper rewriter_wrapper(&rewriter); + rewriter_wrapper.SetILPosition(pInstr); + + // IL Modification #1: Replace original method call with a NOP, so that all original + // jump targets resolve correctly and we correctly populate the + // stack with additional arguments + // + // IMPORTANT: Conditional branches may jump to the original call instruction which + // resulted in the InvalidProgramException seen in + // https://github.com/DataDog/dd-trace-dotnet/pull/542. To avoid this, we'll do + // the rest of our IL modifications AFTER this instruction. + auto original_methodcall_opcode = pInstr->m_opcode; + pInstr->m_opcode = CEE_NOP; + pInstr = pInstr->m_pNext; + rewriter_wrapper.SetILPosition(pInstr); + + // IL Modification #2: Conditionally box System.Threading.CancellationToken or System.ReadOnlyMemory + // if it is the last argument in the target method. + // + // System.Threading.CancellationToken: + // If the last argument in the method signature is of the type + // System.Threading.CancellationToken (a struct) then box it before calling our + // integration method. This resolves https://github.com/DataDog/dd-trace-dotnet/issues/662, + // in which we did not box the System.Threading.CancellationToken object, even though the + // wrapper method expects an object. In that issue we observed some strange CLR behavior + // when the target method was in System.Data and the environment was 32-bit .NET Framework: + // the CLR swapped the values of the CancellationToken argument and the opCode argument. + // For example, the VIRTCALL opCode is '0x6F' and this value would be placed at the memory + // location assigned to the CancellationToken variable. Since we treat the CancellationToken + // variable as an object, this '0x6F' would be dereference to access the underlying object, + // and an invalid memory read would occur and crash the application. + // + // System.ReadOnlyMemory: + // If the last argument in the method signature is of the type + // System.ReadOnlyMemory (a generic valuetype) then box it before calling our + // integration method. We need this modification for RabbitMQ.Client 6.x.x instrumentation + // that uses System.ReadOnlyMemory instead of byte[] for the message body parameter. + // + // Currently, all integrations that use either of the two types + // have the argument as the last argument in the signature (lucky us!). + // For now, we'll do the following: + // 1) Get the method signature of the original target method + // 2) Read the signature until the final argument type + // 3) Check for System.Threading.CancellationToken + // 3a) If the type begins with `ELEMENT_TYPE_VALUETYPE`, uncompress the compressed type token that + // follows 3b) If the type token represents System.Threading.CancellationToken, emit a 'box + // ' IL instruction before calling our wrapper method + // 4) Check for System.ReadOnlyMemory + // 4a) If the type begins with `ELEMENT_TYPE_GENERICINST` and if the next byte is + // `ELEMENT_TYPE_VALUETYPE`, uncompress the compressed type token that follows 4b) If the type token + // represents System.ReadOnlyMemory, emit a 'box ' IL instruction before calling our + // wrapper method. The type token + // will be a TypeSpec representing the specific generic instantiation of System.ReadOnlyMemory + auto original_method_def = target.id; + size_t argument_count = target.signature.NumberOfArguments(); + size_t return_type_index = target.signature.IndexOfReturnType(); + PCCOR_SIGNATURE pSigCurrent = + PCCOR_SIGNATURE(&target.signature.data[return_type_index]); // index to the location of the return type + bool signature_read_success = true; + + // iterate until the pointer is pointing at the last argument + for (size_t signature_types_index = 0; signature_types_index < argument_count; signature_types_index++) + { + if (!ParseType(&pSigCurrent)) + { + signature_read_success = false; + break; + } + } + + // read the last argument type + if (signature_read_success && *pSigCurrent == ELEMENT_TYPE_VALUETYPE) + { + pSigCurrent++; + mdToken valuetype_type_token = CorSigUncompressToken(pSigCurrent); + + // Currently, we only expect to see `System.Threading.CancellationToken` as a valuetype in this position + // If we expand this to a general case, we would always perform the boxing regardless of type + if (GetTypeInfo(module_metadata->metadata_import, valuetype_type_token).name == + WStr("System.Threading.CancellationToken")) + { + rewriter_wrapper.Box(valuetype_type_token); + } + } + + if (signature_read_success && *pSigCurrent == ELEMENT_TYPE_GENERICINST) + { + PCCOR_SIGNATURE p_start_byte = pSigCurrent; + PCCOR_SIGNATURE p_end_byte = p_start_byte; + + pSigCurrent++; + + if (*pSigCurrent == ELEMENT_TYPE_VALUETYPE) + { + pSigCurrent++; + mdToken valuetype_type_token = CorSigUncompressToken(pSigCurrent); + + // Currently, we only expect to see + // `System.ReadOnlyMemory` as a valuetype in this + // position If we expand this to a general case, we would always + // perform the boxing regardless of type + if (GetTypeInfo(module_metadata->metadata_import, valuetype_type_token).name == + WStr("System.ReadOnlyMemory`1") && + ParseType(&p_end_byte)) + { + size_t length = p_end_byte - p_start_byte; + mdTypeSpec type_token; + module_metadata->metadata_emit->GetTokenFromTypeSpec(p_start_byte, (ULONG) length, &type_token); + rewriter_wrapper.Box(type_token); + } + } + } + + // IL Modification #3: Insert a non-virtual call (CALL) to the instrumentation wrapper. + // Always use CALL because the wrapper methods are all static. + rewriter_wrapper.CallMember(wrapper_method_ref, false); + rewriter_wrapper.SetILPosition(pInstr->m_pPrev); // Set ILPosition to method call + + // IL Modification #4: Push the following additional arguments on the evaluation stack in the + // following order, which all integration wrapper methods expect: + // 1) [int32] original CALL/CALLVIRT opCode + // 2) [int32] mdToken for original method call target + // 3) [int64] pointer to MVID + rewriter_wrapper.LoadInt32(original_methodcall_opcode); + rewriter_wrapper.LoadInt32(method_def_md_token); + rewriter_wrapper.LoadInt64(reinterpret_cast(module_version_id_ptr)); + + // IL Modification #5: Conditionally emit an unbox.any instruction on the return value + // of the wrapper method if we return an object but the original + // method call returned a valuetype or a generic type. + // + // This resolves https://github.com/DataDog/dd-trace-dotnet/pull/566, which raised a + // System.EntryPointNotFoundException. This occurred because the return type of the + // generic method was a generic type that evaluated to a value type at runtime. As a + // result, this caller method expected an unboxed representation of the return value, + // even though we can only return values of type object. So if we detect that the + // expected return type is a valuetype or a generic type, issue an unbox.any + // instruction that will unbox it. + mdToken typeToken; + if (method_replacement.wrapper_method.method_signature.ReturnTypeIsObject() && + ReturnTypeIsValueTypeOrGeneric(module_metadata->metadata_import, module_metadata->metadata_emit, + module_metadata->assembly_emit, corAssemblyProperty, target.id, + target.signature, &typeToken)) + { + if (debug_logging_enabled) + { + Debug("JITCompilationStarted inserting 'unbox.any ", typeToken, + "' instruction after calling target function." + " function_id=", + function_id, " token=", function_token, " target_name=", target.type.name, ".", target.name, + "()"); + } + rewriter_wrapper.UnboxAnyAfter(typeToken); + } + + // End IL Modification + modified = true; + Info("*** JITCompilationStarted() replaced calls from ", caller.type.name, ".", caller.name, "() to ", + method_replacement.target_method.type_name, ".", method_replacement.target_method.method_name, "() ", + original_argument, " with calls to ", method_replacement.wrapper_method.type_name, ".", + method_replacement.wrapper_method.method_name, "() ", wrapper_method_ref); + } } - if (dump_il_rewrite_enabled) { - Info(original_code); - Info(GetILCodes("*** IL modification for caller: ", &rewriter, caller, module_metadata)); + if (modified) + { + hr = rewriter.Export(); + + if (FAILED(hr)) + { + Warn("ProcessReplacementCalls: Call to ILRewriter.Export() failed for ModuleID=", module_id, " ", + function_token); + return hr; + } + + if (dump_il_rewrite_enabled) + { + Info(original_code); + Info(GetILCodes("*** IL modification for caller: ", &rewriter, caller, module_metadata)); + } } - } - return S_OK; + return S_OK; } -HRESULT CorProfiler::ProcessInsertionCalls( - ModuleMetadata* module_metadata, - const FunctionID function_id, - const ModuleID module_id, - const mdToken function_token, - const FunctionInfo& caller, - const std::vector method_replacements) { +HRESULT CorProfiler::ProcessInsertionCalls(ModuleMetadata* module_metadata, const FunctionID function_id, + const ModuleID module_id, const mdToken function_token, + const FunctionInfo& caller, + const std::vector method_replacements) +{ - ILRewriter rewriter(this->info_, nullptr, module_id, function_token); - bool modified = false; + ILRewriter rewriter(this->info_, nullptr, module_id, function_token); + bool modified = false; - auto hr = rewriter.Import(); + auto hr = rewriter.Import(); - if (FAILED(hr)) { - Warn("ProcessInsertionCalls: Call to ILRewriter.Import() failed for ", module_id, " ", function_token); - return hr; - } + if (FAILED(hr)) + { + Warn("ProcessInsertionCalls: Call to ILRewriter.Import() failed for ", module_id, " ", function_token); + return hr; + } - ILRewriterWrapper rewriter_wrapper(&rewriter); - ILInstr* firstInstr = rewriter.GetILList()->m_pNext; - ILInstr* lastInstr = rewriter.GetILList()->m_pPrev; // Should be a 'ret' instruction + ILRewriterWrapper rewriter_wrapper(&rewriter); + ILInstr* firstInstr = rewriter.GetILList()->m_pNext; + ILInstr* lastInstr = rewriter.GetILList()->m_pPrev; // Should be a 'ret' instruction - for (auto& method_replacement : method_replacements) { - if (method_replacement.wrapper_method.action == WStr("ReplaceTargetMethod")) { - continue; - } + for (auto& method_replacement : method_replacements) + { + if (method_replacement.wrapper_method.action == WStr("ReplaceTargetMethod")) + { + continue; + } - const auto& wrapper_method_key = - method_replacement.wrapper_method.get_method_cache_key(); + const auto& wrapper_method_key = method_replacement.wrapper_method.get_method_cache_key(); - // Exit early if we previously failed to store the method ref for this wrapper_method - if (module_metadata->IsFailedWrapperMemberKey(wrapper_method_key)) { - continue; - } + // Exit early if we previously failed to store the method ref for this wrapper_method + if (module_metadata->IsFailedWrapperMemberKey(wrapper_method_key)) + { + continue; + } - // Generate a method ref token for the wrapper method - mdMemberRef wrapper_method_ref = mdMemberRefNil; - mdTypeRef wrapper_type_ref = mdTypeRefNil; - auto generated_wrapper_method_ref = GetWrapperMethodRef(module_metadata, - module_id, - method_replacement, - wrapper_method_ref, - wrapper_type_ref); - if (!generated_wrapper_method_ref) { - Warn( - "JITCompilationStarted failed to obtain wrapper method ref for ", - method_replacement.wrapper_method.type_name, ".", method_replacement.wrapper_method.method_name, "().", - " function_id=", function_id, " function_token=", function_token, - " name=", caller.type.name, ".", caller.name, "()"); - continue; - } - - // After successfully getting the method reference, insert a call to it - if (method_replacement.wrapper_method.action == WStr("InsertFirst")) { - // Get first instruction and set the rewriter to that location - rewriter_wrapper.SetILPosition(firstInstr); - rewriter_wrapper.CallMember(wrapper_method_ref, false); - firstInstr = firstInstr->m_pPrev; - modified = true; - - Info("*** JITCompilationStarted() : InsertFirst inserted call to ", - method_replacement.wrapper_method.type_name, ".", - method_replacement.wrapper_method.method_name, "() ", wrapper_method_ref, - " to the beginning of method", - caller.type.name,".", caller.name, "()"); + // Generate a method ref token for the wrapper method + mdMemberRef wrapper_method_ref = mdMemberRefNil; + mdTypeRef wrapper_type_ref = mdTypeRefNil; + auto generated_wrapper_method_ref = + GetWrapperMethodRef(module_metadata, module_id, method_replacement, wrapper_method_ref, wrapper_type_ref); + if (!generated_wrapper_method_ref) + { + Warn("JITCompilationStarted failed to obtain wrapper method ref for ", + method_replacement.wrapper_method.type_name, ".", method_replacement.wrapper_method.method_name, "().", + " function_id=", function_id, " function_token=", function_token, " name=", caller.type.name, ".", + caller.name, "()"); + continue; + } + + // After successfully getting the method reference, insert a call to it + if (method_replacement.wrapper_method.action == WStr("InsertFirst")) + { + // Get first instruction and set the rewriter to that location + rewriter_wrapper.SetILPosition(firstInstr); + rewriter_wrapper.CallMember(wrapper_method_ref, false); + firstInstr = firstInstr->m_pPrev; + modified = true; + + Info("*** JITCompilationStarted() : InsertFirst inserted call to ", + method_replacement.wrapper_method.type_name, ".", method_replacement.wrapper_method.method_name, "() ", + wrapper_method_ref, " to the beginning of method", caller.type.name, ".", caller.name, "()"); + } } - } - if (modified) { - hr = rewriter.Export(); + if (modified) + { + hr = rewriter.Export(); - if (FAILED(hr)) { - Warn("ProcessInsertionCalls: Call to ILRewriter.Export() failed for ModuleID=", module_id, " ", function_token); - return hr; + if (FAILED(hr)) + { + Warn("ProcessInsertionCalls: Call to ILRewriter.Export() failed for ModuleID=", module_id, " ", + function_token); + return hr; + } } - } - return S_OK; + return S_OK; } -bool CorProfiler::GetWrapperMethodRef( - ModuleMetadata* module_metadata, - ModuleID module_id, - const MethodReplacement& method_replacement, - mdMemberRef& wrapper_method_ref, - mdTypeRef& wrapper_type_ref) { - const auto& wrapper_method_key = - method_replacement.wrapper_method.get_method_cache_key(); - const auto& wrapper_type_key = - method_replacement.wrapper_method.get_type_cache_key(); - - // Resolve the MethodRef now. If the method is generic, we'll need to use it - // later to define a MethodSpec - if (!module_metadata->TryGetWrapperMemberRef(wrapper_method_key, - wrapper_method_ref)) { - const auto module_info = GetModuleInfo(this->info_, module_id); - if (!module_info.IsValid()) { - return false; - } +bool CorProfiler::GetWrapperMethodRef(ModuleMetadata* module_metadata, ModuleID module_id, + const MethodReplacement& method_replacement, mdMemberRef& wrapper_method_ref, + mdTypeRef& wrapper_type_ref) +{ + const auto& wrapper_method_key = method_replacement.wrapper_method.get_method_cache_key(); + const auto& wrapper_type_key = method_replacement.wrapper_method.get_type_cache_key(); + + // Resolve the MethodRef now. If the method is generic, we'll need to use it + // later to define a MethodSpec + if (!module_metadata->TryGetWrapperMemberRef(wrapper_method_key, wrapper_method_ref)) + { + const auto module_info = GetModuleInfo(this->info_, module_id); + if (!module_info.IsValid()) + { + return false; + } - mdModule module; - auto hr = module_metadata->metadata_import->GetModuleFromScope(&module); - if (FAILED(hr)) { - Warn( - "JITCompilationStarted failed to get module metadata token for " - "module_id=", module_id, " module_name=", module_info.assembly.name); - return false; - } - - const MetadataBuilder metadata_builder( - *module_metadata, module, module_metadata->metadata_import, - module_metadata->metadata_emit, module_metadata->assembly_import, - module_metadata->assembly_emit); - - // for each wrapper assembly, emit an assembly reference - hr = metadata_builder.EmitAssemblyRef( - method_replacement.wrapper_method.assembly); - if (FAILED(hr)) { - Warn( - "JITCompilationStarted failed to emit wrapper assembly ref for assembly=", - method_replacement.wrapper_method.assembly.name, - ", Version=", method_replacement.wrapper_method.assembly.version.str(), - ", Culture=", method_replacement.wrapper_method.assembly.locale, - " PublicKeyToken=", method_replacement.wrapper_method.assembly.public_key.str()); - return false; - } - - // for each method replacement in each enabled integration, - // emit a reference to the instrumentation wrapper methods - hr = metadata_builder.StoreWrapperMethodRef(method_replacement); - if (FAILED(hr)) { - Warn( - "JITCompilationStarted failed to obtain wrapper method ref for ", - method_replacement.wrapper_method.type_name, ".", method_replacement.wrapper_method.method_name, "()."); - return false; - } else { - module_metadata->TryGetWrapperMemberRef(wrapper_method_key, - wrapper_method_ref); + mdModule module; + auto hr = module_metadata->metadata_import->GetModuleFromScope(&module); + if (FAILED(hr)) + { + Warn("JITCompilationStarted failed to get module metadata token for " + "module_id=", + module_id, " module_name=", module_info.assembly.name); + return false; + } + + const MetadataBuilder metadata_builder(*module_metadata, module, module_metadata->metadata_import, + module_metadata->metadata_emit, module_metadata->assembly_import, + module_metadata->assembly_emit); + + // for each wrapper assembly, emit an assembly reference + hr = metadata_builder.EmitAssemblyRef(method_replacement.wrapper_method.assembly); + if (FAILED(hr)) + { + Warn("JITCompilationStarted failed to emit wrapper assembly ref for assembly=", + method_replacement.wrapper_method.assembly.name, + ", Version=", method_replacement.wrapper_method.assembly.version.str(), + ", Culture=", method_replacement.wrapper_method.assembly.locale, + " PublicKeyToken=", method_replacement.wrapper_method.assembly.public_key.str()); + return false; + } + + // for each method replacement in each enabled integration, + // emit a reference to the instrumentation wrapper methods + hr = metadata_builder.StoreWrapperMethodRef(method_replacement); + if (FAILED(hr)) + { + Warn("JITCompilationStarted failed to obtain wrapper method ref for ", + method_replacement.wrapper_method.type_name, ".", method_replacement.wrapper_method.method_name, + "()."); + return false; + } + else + { + module_metadata->TryGetWrapperMemberRef(wrapper_method_key, wrapper_method_ref); + } } - } - module_metadata->TryGetWrapperParentTypeRef(wrapper_type_key, - wrapper_type_ref); - return true; + module_metadata->TryGetWrapperParentTypeRef(wrapper_type_key, wrapper_type_ref); + return true; } -bool CorProfiler::ProfilerAssemblyIsLoadedIntoAppDomain(AppDomainID app_domain_id) { - return managed_profiler_loaded_domain_neutral || - managed_profiler_loaded_app_domains.find(app_domain_id) != - managed_profiler_loaded_app_domains.end(); +bool CorProfiler::ProfilerAssemblyIsLoadedIntoAppDomain(AppDomainID app_domain_id) +{ + return managed_profiler_loaded_domain_neutral || + managed_profiler_loaded_app_domains.find(app_domain_id) != managed_profiler_loaded_app_domains.end(); } const std::string indent_values[] = { @@ -1506,1082 +1611,1084 @@ const std::string indent_values[] = { std::string(2 * 10, ' '), }; -std::string CorProfiler::GetILCodes(const std::string& title, ILRewriter* rewriter, - const FunctionInfo& caller, ModuleMetadata* module_metadata) { - std::stringstream orig_sstream; - orig_sstream << title; - orig_sstream << ToString(caller.type.name); - orig_sstream << "."; - orig_sstream << ToString(caller.name); - orig_sstream << " => (max_stack: "; - orig_sstream << rewriter->GetMaxStackValue(); - orig_sstream << ")" << std::endl; - - const auto ehCount = rewriter->GetEHCount(); - const auto ehPtr = rewriter->GetEHPointer(); - int indent = 1; - - PCCOR_SIGNATURE originalSignature = nullptr; - ULONG originalSignatureSize = 0; - mdToken localVarSig = rewriter->GetTkLocalVarSig(); - - if (localVarSig != mdTokenNil) { - auto hr = module_metadata->metadata_import->GetSigFromToken(localVarSig, &originalSignature, &originalSignatureSize); - if (SUCCEEDED(hr)) { - orig_sstream << std::endl - << ". Local Var Signature: " - << ToString(HexStr(originalSignature, originalSignatureSize)) - << std::endl; +std::string CorProfiler::GetILCodes(const std::string& title, ILRewriter* rewriter, const FunctionInfo& caller, + ModuleMetadata* module_metadata) +{ + std::stringstream orig_sstream; + orig_sstream << title; + orig_sstream << ToString(caller.type.name); + orig_sstream << "."; + orig_sstream << ToString(caller.name); + orig_sstream << " => (max_stack: "; + orig_sstream << rewriter->GetMaxStackValue(); + orig_sstream << ")" << std::endl; + + const auto ehCount = rewriter->GetEHCount(); + const auto ehPtr = rewriter->GetEHPointer(); + int indent = 1; + + PCCOR_SIGNATURE originalSignature = nullptr; + ULONG originalSignatureSize = 0; + mdToken localVarSig = rewriter->GetTkLocalVarSig(); + + if (localVarSig != mdTokenNil) + { + auto hr = + module_metadata->metadata_import->GetSigFromToken(localVarSig, &originalSignature, &originalSignatureSize); + if (SUCCEEDED(hr)) + { + orig_sstream << std::endl + << ". Local Var Signature: " << ToString(HexStr(originalSignature, originalSignatureSize)) + << std::endl; + } } - } - orig_sstream << std::endl; - for (ILInstr* cInstr = rewriter->GetILList()->m_pNext; - cInstr != rewriter->GetILList(); cInstr = cInstr->m_pNext) { - - if (ehCount > 0) { - for (unsigned int i = 0; i < ehCount; i++) { - const auto currentEH = ehPtr[i]; - if (currentEH.m_Flags == COR_ILEXCEPTION_CLAUSE_FINALLY) { - if (currentEH.m_pTryBegin == cInstr) { - if (indent > 0) { - orig_sstream << indent_values[indent]; + orig_sstream << std::endl; + for (ILInstr* cInstr = rewriter->GetILList()->m_pNext; cInstr != rewriter->GetILList(); cInstr = cInstr->m_pNext) + { + + if (ehCount > 0) + { + for (unsigned int i = 0; i < ehCount; i++) + { + const auto currentEH = ehPtr[i]; + if (currentEH.m_Flags == COR_ILEXCEPTION_CLAUSE_FINALLY) + { + if (currentEH.m_pTryBegin == cInstr) + { + if (indent > 0) + { + orig_sstream << indent_values[indent]; + } + orig_sstream << ".try {" << std::endl; + indent++; + } + if (currentEH.m_pTryEnd == cInstr) + { + indent--; + if (indent > 0) + { + orig_sstream << indent_values[indent]; + } + orig_sstream << "}" << std::endl; + } + if (currentEH.m_pHandlerBegin == cInstr) + { + if (indent > 0) + { + orig_sstream << indent_values[indent]; + } + orig_sstream << ".finally {" << std::endl; + indent++; + } + } } - orig_sstream << ".try {" << std::endl; - indent++; - } - if (currentEH.m_pTryEnd == cInstr) { - indent--; - if (indent > 0) { - orig_sstream << indent_values[indent]; + for (unsigned int i = 0; i < ehCount; i++) + { + const auto currentEH = ehPtr[i]; + if (currentEH.m_Flags == COR_ILEXCEPTION_CLAUSE_NONE) + { + if (currentEH.m_pTryBegin == cInstr) + { + if (indent > 0) + { + orig_sstream << indent_values[indent]; + } + orig_sstream << ".try {" << std::endl; + indent++; + } + if (currentEH.m_pTryEnd == cInstr) + { + indent--; + if (indent > 0) + { + orig_sstream << indent_values[indent]; + } + orig_sstream << "}" << std::endl; + } + if (currentEH.m_pHandlerBegin == cInstr) + { + if (indent > 0) + { + orig_sstream << indent_values[indent]; + } + orig_sstream << ".catch {" << std::endl; + indent++; + } + } } - orig_sstream << "}" << std::endl; - } - if (currentEH.m_pHandlerBegin == cInstr) { - if (indent > 0) { - orig_sstream << indent_values[indent]; + } + + if (indent > 0) + { + orig_sstream << indent_values[indent]; + } + orig_sstream << cInstr; + orig_sstream << ": "; + if (cInstr->m_opcode < opcodes_names.size()) + { + orig_sstream << std::setw(10) << opcodes_names[cInstr->m_opcode]; + } + else + { + orig_sstream << "0x"; + orig_sstream << std::setfill('0') << std::setw(2) << std::hex << cInstr->m_opcode; + } + if (cInstr->m_pTarget != NULL) + { + orig_sstream << " "; + orig_sstream << cInstr->m_pTarget; + + if (cInstr->m_opcode == CEE_CALL || cInstr->m_opcode == CEE_CALLVIRT || cInstr->m_opcode == CEE_NEWOBJ) + { + const auto memberInfo = + GetFunctionInfo(module_metadata->metadata_import, (mdMemberRef) cInstr->m_Arg32); + orig_sstream << " | "; + orig_sstream << ToString(memberInfo.type.name); + orig_sstream << "."; + orig_sstream << ToString(memberInfo.name); + if (memberInfo.signature.NumberOfArguments() > 0) + { + orig_sstream << "("; + orig_sstream << memberInfo.signature.NumberOfArguments(); + orig_sstream << " argument{s}"; + orig_sstream << ")"; + } + else + { + orig_sstream << "()"; + } } - orig_sstream << ".finally {" << std::endl; - indent++; - } - } - } - for (unsigned int i = 0; i < ehCount; i++) { - const auto currentEH = ehPtr[i]; - if (currentEH.m_Flags == COR_ILEXCEPTION_CLAUSE_NONE) { - if (currentEH.m_pTryBegin == cInstr) { - if (indent > 0) { - orig_sstream << indent_values[indent]; + else if (cInstr->m_opcode == CEE_CASTCLASS || cInstr->m_opcode == CEE_BOX || + cInstr->m_opcode == CEE_UNBOX_ANY || cInstr->m_opcode == CEE_NEWARR || + cInstr->m_opcode == CEE_INITOBJ) + { + const auto typeInfo = GetTypeInfo(module_metadata->metadata_import, (mdTypeRef) cInstr->m_Arg32); + orig_sstream << " | "; + orig_sstream << ToString(typeInfo.name); } - orig_sstream << ".try {" << std::endl; - indent++; - } - if (currentEH.m_pTryEnd == cInstr) { - indent--; - if (indent > 0) { - orig_sstream << indent_values[indent]; + else if (cInstr->m_opcode == CEE_LDSTR) + { + LPWSTR szString = new WCHAR[1024]; + ULONG szStringLength; + auto hr = module_metadata->metadata_import->GetUserString((mdString) cInstr->m_Arg32, szString, 1024, + &szStringLength); + if (SUCCEEDED(hr)) + { + orig_sstream << " | \""; + orig_sstream << ToString(WSTRING(szString, szStringLength)); + orig_sstream << "\""; + } } - orig_sstream << "}" << std::endl; - } - if (currentEH.m_pHandlerBegin == cInstr) { - if (indent > 0) { - orig_sstream << indent_values[indent]; + } + else if (cInstr->m_Arg64 != 0) + { + orig_sstream << " "; + orig_sstream << cInstr->m_Arg64; + } + orig_sstream << std::endl; + + if (ehCount > 0) + { + for (unsigned int i = 0; i < ehCount; i++) + { + const auto currentEH = ehPtr[i]; + if (currentEH.m_pHandlerEnd == cInstr) + { + indent--; + if (indent > 0) + { + orig_sstream << indent_values[indent]; + } + orig_sstream << "}" << std::endl; + } } - orig_sstream << ".catch {" << std::endl; - indent++; - } - } - } - } - - if (indent > 0) { - orig_sstream << indent_values[indent]; - } - orig_sstream << cInstr; - orig_sstream << ": "; - if (cInstr->m_opcode < opcodes_names.size()) { - orig_sstream << std::setw(10) << opcodes_names[cInstr->m_opcode]; - } else { - orig_sstream << "0x"; - orig_sstream << std::setfill('0') << std::setw(2) << std::hex - << cInstr->m_opcode; - } - if (cInstr->m_pTarget != NULL) { - orig_sstream << " "; - orig_sstream << cInstr->m_pTarget; - - if (cInstr->m_opcode == CEE_CALL || cInstr->m_opcode == CEE_CALLVIRT || cInstr->m_opcode == CEE_NEWOBJ) { - const auto memberInfo = GetFunctionInfo(module_metadata->metadata_import, - (mdMemberRef)cInstr->m_Arg32); - orig_sstream << " | "; - orig_sstream << ToString(memberInfo.type.name); - orig_sstream << "."; - orig_sstream << ToString(memberInfo.name); - if (memberInfo.signature.NumberOfArguments() > 0) { - orig_sstream << "("; - orig_sstream << memberInfo.signature.NumberOfArguments(); - orig_sstream << " argument{s}"; - orig_sstream << ")"; - - } else { - orig_sstream << "()"; - } - } else if (cInstr->m_opcode == CEE_CASTCLASS || cInstr->m_opcode == CEE_BOX || - cInstr->m_opcode == CEE_UNBOX_ANY || cInstr->m_opcode == CEE_NEWARR || - cInstr->m_opcode == CEE_INITOBJ) { - const auto typeInfo = GetTypeInfo(module_metadata->metadata_import, - (mdTypeRef)cInstr->m_Arg32); - orig_sstream << " | "; - orig_sstream << ToString(typeInfo.name); - } else if (cInstr->m_opcode == CEE_LDSTR) { - LPWSTR szString = new WCHAR[1024]; - ULONG szStringLength; - auto hr = module_metadata->metadata_import->GetUserString( - (mdString)cInstr->m_Arg32, szString, 1024, &szStringLength); - if (SUCCEEDED(hr)) { - orig_sstream << " | \""; - orig_sstream << ToString(WSTRING(szString, szStringLength)); - orig_sstream << "\""; - } - } - } else if (cInstr->m_Arg64 != 0) { - orig_sstream << " "; - orig_sstream << cInstr->m_Arg64; - } - orig_sstream << std::endl; - - if (ehCount > 0) { - for (unsigned int i = 0; i < ehCount; i++) { - const auto currentEH = ehPtr[i]; - if (currentEH.m_pHandlerEnd == cInstr) { - indent--; - if (indent > 0) { - orig_sstream << indent_values[indent]; - } - orig_sstream << "}" << std::endl; } - } } - } - return orig_sstream.str(); + return orig_sstream.str(); } // // Startup methods // -HRESULT CorProfiler::RunILStartupHook( - const ComPtr& metadata_emit, const ModuleID module_id, - const mdToken function_token) { - mdMethodDef ret_method_token; - auto hr = GenerateVoidILStartupMethod(module_id, &ret_method_token); - - if (FAILED(hr)) { - Warn("RunILStartupHook: Call to GenerateVoidILStartupMethod failed for ", module_id); - return hr; - } +HRESULT CorProfiler::RunILStartupHook(const ComPtr& metadata_emit, const ModuleID module_id, + const mdToken function_token) +{ + mdMethodDef ret_method_token; + auto hr = GenerateVoidILStartupMethod(module_id, &ret_method_token); + + if (FAILED(hr)) + { + Warn("RunILStartupHook: Call to GenerateVoidILStartupMethod failed for ", module_id); + return hr; + } - ILRewriter rewriter(this->info_, nullptr, module_id, function_token); - hr = rewriter.Import(); + ILRewriter rewriter(this->info_, nullptr, module_id, function_token); + hr = rewriter.Import(); - if (FAILED(hr)) { - Warn("RunILStartupHook: Call to ILRewriter.Import() failed for ", module_id, " ", function_token); - return hr; - } + if (FAILED(hr)) + { + Warn("RunILStartupHook: Call to ILRewriter.Import() failed for ", module_id, " ", function_token); + return hr; + } - ILRewriterWrapper rewriter_wrapper(&rewriter); + ILRewriterWrapper rewriter_wrapper(&rewriter); - // Get first instruction and set the rewriter to that location - ILInstr* pInstr = rewriter.GetILList()->m_pNext; - rewriter_wrapper.SetILPosition(pInstr); - rewriter_wrapper.CallMember(ret_method_token, false); - hr = rewriter.Export(); + // Get first instruction and set the rewriter to that location + ILInstr* pInstr = rewriter.GetILList()->m_pNext; + rewriter_wrapper.SetILPosition(pInstr); + rewriter_wrapper.CallMember(ret_method_token, false); + hr = rewriter.Export(); - if (FAILED(hr)) { - Warn("RunILStartupHook: Call to ILRewriter.Export() failed for ModuleID=", module_id, " ", function_token); - return hr; - } + if (FAILED(hr)) + { + Warn("RunILStartupHook: Call to ILRewriter.Export() failed for ModuleID=", module_id, " ", function_token); + return hr; + } - return S_OK; + return S_OK; } -HRESULT CorProfiler::GenerateVoidILStartupMethod(const ModuleID module_id, - mdMethodDef* ret_method_token) { - ComPtr metadata_interfaces; - auto hr = this->info_->GetModuleMetaData(module_id, ofRead | ofWrite, - IID_IMetaDataImport2, - metadata_interfaces.GetAddressOf()); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: failed to get metadata interface for ", module_id); - return hr; - } - - const auto metadata_import = - metadata_interfaces.As(IID_IMetaDataImport); - const auto metadata_emit = - metadata_interfaces.As(IID_IMetaDataEmit); - const auto assembly_import = metadata_interfaces.As( - IID_IMetaDataAssemblyImport); - const auto assembly_emit = - metadata_interfaces.As(IID_IMetaDataAssemblyEmit); - - mdAssemblyRef corlib_ref; - hr = GetCorLibAssemblyRef(assembly_emit, corAssemblyProperty, &corlib_ref); - - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: failed to define AssemblyRef to mscorlib"); - return hr; - } - - // Define a TypeRef for System.Object - mdTypeRef object_type_ref; - hr = metadata_emit->DefineTypeRefByName(corlib_ref, WStr("System.Object"), &object_type_ref); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineTypeRefByName failed"); - return hr; - } - - // Define a new TypeDef __DDVoidMethodType__ that extends System.Object - mdTypeDef new_type_def; - hr = metadata_emit->DefineTypeDef(WStr("__DDVoidMethodType__"), tdAbstract | tdSealed, - object_type_ref, NULL, &new_type_def); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineTypeDef failed"); - return hr; - } +HRESULT CorProfiler::GenerateVoidILStartupMethod(const ModuleID module_id, mdMethodDef* ret_method_token) +{ + ComPtr metadata_interfaces; + auto hr = this->info_->GetModuleMetaData(module_id, ofRead | ofWrite, IID_IMetaDataImport2, + metadata_interfaces.GetAddressOf()); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: failed to get metadata interface for ", module_id); + return hr; + } - // Define a new static method __DDVoidMethodCall__ on the new type that has a void return type and takes no arguments - BYTE initialize_signature[] = { - IMAGE_CEE_CS_CALLCONV_DEFAULT, // Calling convention - 0, // Number of parameters - ELEMENT_TYPE_VOID, // Return type - }; - hr = metadata_emit->DefineMethod(new_type_def, - WStr("__DDVoidMethodCall__"), - mdStatic, - initialize_signature, - sizeof(initialize_signature), - 0, - 0, - ret_method_token); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineMethod failed"); - return hr; - } + const auto metadata_import = metadata_interfaces.As(IID_IMetaDataImport); + const auto metadata_emit = metadata_interfaces.As(IID_IMetaDataEmit); + const auto assembly_import = metadata_interfaces.As(IID_IMetaDataAssemblyImport); + const auto assembly_emit = metadata_interfaces.As(IID_IMetaDataAssemblyEmit); - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Define IsAlreadyLoaded() method - // - - // - // Define a new static method IsAlreadyLoaded on the new type that has a bool return type and takes no arguments; - // - mdMethodDef alreadyLoadedMethodToken; - BYTE already_loaded_signature[] = { - IMAGE_CEE_CS_CALLCONV_DEFAULT, - 0, - ELEMENT_TYPE_BOOLEAN, - }; - hr = metadata_emit->DefineMethod( - new_type_def, WStr("IsAlreadyLoaded"), mdStatic | mdPrivate, - already_loaded_signature, sizeof(already_loaded_signature), 0, 0, - &alreadyLoadedMethodToken); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineMethod IsAlreadyLoaded failed"); - return hr; - } + mdAssemblyRef corlib_ref; + hr = GetCorLibAssemblyRef(assembly_emit, corAssemblyProperty, &corlib_ref); - // If .NET Framework 4.6 or greater - if (is_net46_or_greater) { + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: failed to define AssemblyRef to mscorlib"); + return hr; + } - // Define a new static int field _isAssemblyLoaded on the new type. - mdFieldDef isAssemblyLoadedFieldToken = mdFieldDefNil; - BYTE field_signature[] = { - IMAGE_CEE_CS_CALLCONV_FIELD, - ELEMENT_TYPE_I4 - }; - hr = metadata_emit->DefineField(new_type_def, WStr("_isAssemblyLoaded"), - fdStatic | fdPrivate, field_signature, - sizeof(field_signature), 0, nullptr, 0, - &isAssemblyLoadedFieldToken); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineField _isAssemblyLoaded failed"); - return hr; + // Define a TypeRef for System.Object + mdTypeRef object_type_ref; + hr = metadata_emit->DefineTypeRefByName(corlib_ref, WStr("System.Object"), &object_type_ref); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineTypeRefByName failed"); + return hr; } - // Get a TypeRef for System.Threading.Interlocked - mdTypeRef interlocked_type_ref; - hr = metadata_emit->DefineTypeRefByName(corlib_ref, WStr("System.Threading.Interlocked"), &interlocked_type_ref); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineTypeRefByName interlocked_type_ref failed"); - return hr; + // Define a new TypeDef __DDVoidMethodType__ that extends System.Object + mdTypeDef new_type_def; + hr = metadata_emit->DefineTypeDef(WStr("__DDVoidMethodType__"), tdAbstract | tdSealed, object_type_ref, NULL, + &new_type_def); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineTypeDef failed"); + return hr; } - // Create method signature for System.Threading.Interlocked::CompareExchange(int32&, int32, int32) - COR_SIGNATURE interlocked_compare_exchange_signature[] = { - IMAGE_CEE_CS_CALLCONV_DEFAULT, - 3, - ELEMENT_TYPE_I4, - ELEMENT_TYPE_BYREF, - ELEMENT_TYPE_I4, - ELEMENT_TYPE_I4, - ELEMENT_TYPE_I4 + // Define a new static method __DDVoidMethodCall__ on the new type that has a void return type and takes no + // arguments + BYTE initialize_signature[] = { + IMAGE_CEE_CS_CALLCONV_DEFAULT, // Calling convention + 0, // Number of parameters + ELEMENT_TYPE_VOID, // Return type }; - - mdMemberRef interlocked_compare_member_ref; - hr = metadata_emit->DefineMemberRef( - interlocked_type_ref, WStr("CompareExchange"), - interlocked_compare_exchange_signature, - sizeof(interlocked_compare_exchange_signature), - &interlocked_compare_member_ref); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineMemberRef CompareExchange failed"); - return hr; + hr = metadata_emit->DefineMethod(new_type_def, WStr("__DDVoidMethodCall__"), mdStatic, initialize_signature, + sizeof(initialize_signature), 0, 0, ret_method_token); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineMethod failed"); + return hr; } - ///////////////////////////////////////////// - // Add IL instructions into the IsAlreadyLoaded method - // - // static int _isAssemblyLoaded = 0; + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // Define IsAlreadyLoaded() method // - // public static bool IsAlreadyLoaded() { - // return Interlocked.CompareExchange(ref _isAssemblyLoaded, 1, 0) == 1; - // } - // - ILRewriter rewriter_already_loaded(this->info_, nullptr, module_id, alreadyLoadedMethodToken); - rewriter_already_loaded.InitializeTiny(); - - ILInstr* pALFirstInstr = rewriter_already_loaded.GetILList()->m_pNext; - ILInstr* pALNewInstr = NULL; - - // ldsflda _isAssemblyLoaded : Load the address of the "_isAssemblyLoaded" static var - pALNewInstr = rewriter_already_loaded.NewILInstr(); - pALNewInstr->m_opcode = CEE_LDSFLDA; - pALNewInstr->m_Arg32 = isAssemblyLoadedFieldToken; - rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); - - // ldc.i4.1 : Load the constant 1 (int) to the stack - pALNewInstr = rewriter_already_loaded.NewILInstr(); - pALNewInstr->m_opcode = CEE_LDC_I4_1; - rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); - - // ldc.i4.0 : Load the constant 0 (int) to the stack - pALNewInstr = rewriter_already_loaded.NewILInstr(); - pALNewInstr->m_opcode = CEE_LDC_I4_0; - rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); - - // call int Interlocked.CompareExchange(ref int, int, int) method - pALNewInstr = rewriter_already_loaded.NewILInstr(); - pALNewInstr->m_opcode = CEE_CALL; - pALNewInstr->m_Arg32 = interlocked_compare_member_ref; - rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); - // ldc.i4.1 : Load the constant 1 (int) to the stack - pALNewInstr = rewriter_already_loaded.NewILInstr(); - pALNewInstr->m_opcode = CEE_LDC_I4_1; - rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); - - // ceq : Compare equality from two values from the stack - pALNewInstr = rewriter_already_loaded.NewILInstr(); - pALNewInstr->m_opcode = CEE_CEQ; - rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); - - // ret : Return the value of the comparison - pALNewInstr = rewriter_already_loaded.NewILInstr(); - pALNewInstr->m_opcode = CEE_RET; - rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); - - hr = rewriter_already_loaded.Export(); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: Call to ILRewriter.Export() failed for ModuleID=", module_id); - return hr; - } - - } else { - - ///////////////////////////////////////////// - // Add IL instructions into the IsAlreadyLoaded method // - // public static bool IsAlreadyLoaded() { - // return false; - // } + // Define a new static method IsAlreadyLoaded on the new type that has a bool return type and takes no arguments; // - ILRewriter rewriter_already_loaded(this->info_, nullptr, module_id, alreadyLoadedMethodToken); - rewriter_already_loaded.InitializeTiny(); + mdMethodDef alreadyLoadedMethodToken; + BYTE already_loaded_signature[] = { + IMAGE_CEE_CS_CALLCONV_DEFAULT, + 0, + ELEMENT_TYPE_BOOLEAN, + }; + hr = metadata_emit->DefineMethod(new_type_def, WStr("IsAlreadyLoaded"), mdStatic | mdPrivate, + already_loaded_signature, sizeof(already_loaded_signature), 0, 0, + &alreadyLoadedMethodToken); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineMethod IsAlreadyLoaded failed"); + return hr; + } - ILInstr* pALFirstInstr = rewriter_already_loaded.GetILList()->m_pNext; - ILInstr* pALNewInstr = NULL; + // If .NET Framework 4.6 or greater + if (is_net46_or_greater) + { + + // Define a new static int field _isAssemblyLoaded on the new type. + mdFieldDef isAssemblyLoadedFieldToken = mdFieldDefNil; + BYTE field_signature[] = {IMAGE_CEE_CS_CALLCONV_FIELD, ELEMENT_TYPE_I4}; + hr = metadata_emit->DefineField(new_type_def, WStr("_isAssemblyLoaded"), fdStatic | fdPrivate, field_signature, + sizeof(field_signature), 0, nullptr, 0, &isAssemblyLoadedFieldToken); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineField _isAssemblyLoaded failed"); + return hr; + } - // ldc.i4.0 : Load the constant 0 (int) to the stack - pALNewInstr = rewriter_already_loaded.NewILInstr(); - pALNewInstr->m_opcode = CEE_LDC_I4_0; - rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); + // Get a TypeRef for System.Threading.Interlocked + mdTypeRef interlocked_type_ref; + hr = + metadata_emit->DefineTypeRefByName(corlib_ref, WStr("System.Threading.Interlocked"), &interlocked_type_ref); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineTypeRefByName interlocked_type_ref failed"); + return hr; + } - // ret : Return - pALNewInstr = rewriter_already_loaded.NewILInstr(); - pALNewInstr->m_opcode = CEE_RET; - rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); + // Create method signature for System.Threading.Interlocked::CompareExchange(int32&, int32, int32) + COR_SIGNATURE interlocked_compare_exchange_signature[] = {IMAGE_CEE_CS_CALLCONV_DEFAULT, + 3, + ELEMENT_TYPE_I4, + ELEMENT_TYPE_BYREF, + ELEMENT_TYPE_I4, + ELEMENT_TYPE_I4, + ELEMENT_TYPE_I4}; + + mdMemberRef interlocked_compare_member_ref; + hr = metadata_emit->DefineMemberRef( + interlocked_type_ref, WStr("CompareExchange"), interlocked_compare_exchange_signature, + sizeof(interlocked_compare_exchange_signature), &interlocked_compare_member_ref); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineMemberRef CompareExchange failed"); + return hr; + } - hr = rewriter_already_loaded.Export(); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: Call to ILRewriter.Export() failed for ModuleID=", module_id); - return hr; + ///////////////////////////////////////////// + // Add IL instructions into the IsAlreadyLoaded method + // + // static int _isAssemblyLoaded = 0; + // + // public static bool IsAlreadyLoaded() { + // return Interlocked.CompareExchange(ref _isAssemblyLoaded, 1, 0) == 1; + // } + // + ILRewriter rewriter_already_loaded(this->info_, nullptr, module_id, alreadyLoadedMethodToken); + rewriter_already_loaded.InitializeTiny(); + + ILInstr* pALFirstInstr = rewriter_already_loaded.GetILList()->m_pNext; + ILInstr* pALNewInstr = NULL; + + // ldsflda _isAssemblyLoaded : Load the address of the "_isAssemblyLoaded" static var + pALNewInstr = rewriter_already_loaded.NewILInstr(); + pALNewInstr->m_opcode = CEE_LDSFLDA; + pALNewInstr->m_Arg32 = isAssemblyLoadedFieldToken; + rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); + + // ldc.i4.1 : Load the constant 1 (int) to the stack + pALNewInstr = rewriter_already_loaded.NewILInstr(); + pALNewInstr->m_opcode = CEE_LDC_I4_1; + rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); + + // ldc.i4.0 : Load the constant 0 (int) to the stack + pALNewInstr = rewriter_already_loaded.NewILInstr(); + pALNewInstr->m_opcode = CEE_LDC_I4_0; + rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); + + // call int Interlocked.CompareExchange(ref int, int, int) method + pALNewInstr = rewriter_already_loaded.NewILInstr(); + pALNewInstr->m_opcode = CEE_CALL; + pALNewInstr->m_Arg32 = interlocked_compare_member_ref; + rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); + + // ldc.i4.1 : Load the constant 1 (int) to the stack + pALNewInstr = rewriter_already_loaded.NewILInstr(); + pALNewInstr->m_opcode = CEE_LDC_I4_1; + rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); + + // ceq : Compare equality from two values from the stack + pALNewInstr = rewriter_already_loaded.NewILInstr(); + pALNewInstr->m_opcode = CEE_CEQ; + rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); + + // ret : Return the value of the comparison + pALNewInstr = rewriter_already_loaded.NewILInstr(); + pALNewInstr->m_opcode = CEE_RET; + rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); + + hr = rewriter_already_loaded.Export(); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: Call to ILRewriter.Export() failed for ModuleID=", module_id); + return hr; + } + } + else + { + + ///////////////////////////////////////////// + // Add IL instructions into the IsAlreadyLoaded method + // + // public static bool IsAlreadyLoaded() { + // return false; + // } + // + ILRewriter rewriter_already_loaded(this->info_, nullptr, module_id, alreadyLoadedMethodToken); + rewriter_already_loaded.InitializeTiny(); + + ILInstr* pALFirstInstr = rewriter_already_loaded.GetILList()->m_pNext; + ILInstr* pALNewInstr = NULL; + + // ldc.i4.0 : Load the constant 0 (int) to the stack + pALNewInstr = rewriter_already_loaded.NewILInstr(); + pALNewInstr->m_opcode = CEE_LDC_I4_0; + rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); + + // ret : Return + pALNewInstr = rewriter_already_loaded.NewILInstr(); + pALNewInstr->m_opcode = CEE_RET; + rewriter_already_loaded.InsertBefore(pALFirstInstr, pALNewInstr); + + hr = rewriter_already_loaded.Export(); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: Call to ILRewriter.Export() failed for ModuleID=", module_id); + return hr; + } } - } - - // Define a method on the managed side that will PInvoke into the profiler method: - // C++: void GetAssemblyAndSymbolsBytes(BYTE** pAssemblyArray, int* assemblySize, BYTE** pSymbolsArray, int* symbolsSize) - // C#: static extern void GetAssemblyAndSymbolsBytes(out IntPtr assemblyPtr, out int assemblySize, out IntPtr symbolsPtr, out int symbolsSize) - mdMethodDef pinvoke_method_def; - COR_SIGNATURE get_assembly_bytes_signature[] = { - IMAGE_CEE_CS_CALLCONV_DEFAULT, // Calling convention - 4, // Number of parameters - ELEMENT_TYPE_VOID, // Return type - ELEMENT_TYPE_BYREF, // List of parameter types - ELEMENT_TYPE_I, - ELEMENT_TYPE_BYREF, - ELEMENT_TYPE_I4, - ELEMENT_TYPE_BYREF, - ELEMENT_TYPE_I, - ELEMENT_TYPE_BYREF, - ELEMENT_TYPE_I4, - }; - hr = metadata_emit->DefineMethod( - new_type_def, WStr("GetAssemblyAndSymbolsBytes"), mdStatic | mdPinvokeImpl | mdHideBySig, - get_assembly_bytes_signature, sizeof(get_assembly_bytes_signature), 0, 0, - &pinvoke_method_def); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineMethod failed"); - return hr; - } + // Define a method on the managed side that will PInvoke into the profiler method: + // C++: void GetAssemblyAndSymbolsBytes(BYTE** pAssemblyArray, int* assemblySize, BYTE** pSymbolsArray, int* + // symbolsSize) C#: static extern void GetAssemblyAndSymbolsBytes(out IntPtr assemblyPtr, out int assemblySize, out + // IntPtr symbolsPtr, out int symbolsSize) + mdMethodDef pinvoke_method_def; + COR_SIGNATURE get_assembly_bytes_signature[] = { + IMAGE_CEE_CS_CALLCONV_DEFAULT, // Calling convention + 4, // Number of parameters + ELEMENT_TYPE_VOID, // Return type + ELEMENT_TYPE_BYREF, // List of parameter types + ELEMENT_TYPE_I, + ELEMENT_TYPE_BYREF, + ELEMENT_TYPE_I4, + ELEMENT_TYPE_BYREF, + ELEMENT_TYPE_I, + ELEMENT_TYPE_BYREF, + ELEMENT_TYPE_I4, + }; + hr = metadata_emit->DefineMethod(new_type_def, WStr("GetAssemblyAndSymbolsBytes"), + mdStatic | mdPinvokeImpl | mdHideBySig, get_assembly_bytes_signature, + sizeof(get_assembly_bytes_signature), 0, 0, &pinvoke_method_def); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineMethod failed"); + return hr; + } - metadata_emit->SetMethodImplFlags(pinvoke_method_def, miPreserveSig); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: SetMethodImplFlags failed"); - return hr; - } + metadata_emit->SetMethodImplFlags(pinvoke_method_def, miPreserveSig); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: SetMethodImplFlags failed"); + return hr; + } #ifdef _WIN32 - WSTRING native_profiler_file = WStr("OPENTELEMETRY.AUTOINSTRUMENTATION.CLRPROFILER.NATIVE.DLL"); + WSTRING native_profiler_file = WStr("OPENTELEMETRY.AUTOINSTRUMENTATION.CLRPROFILER.NATIVE.DLL"); #else // _WIN32 #ifdef BIT64 - WSTRING native_profiler_file = GetEnvironmentValue(WStr("CORECLR_PROFILER_PATH_64")); - Debug("GenerateVoidILStartupMethod: Linux: CORECLR_PROFILER_PATH_64 defined as: ", native_profiler_file); - if (native_profiler_file == WStr("")) { - native_profiler_file = GetEnvironmentValue(WStr("CORECLR_PROFILER_PATH")); - Debug("GenerateVoidILStartupMethod: Linux: CORECLR_PROFILER_PATH defined as: ", native_profiler_file); - } + WSTRING native_profiler_file = GetEnvironmentValue(WStr("CORECLR_PROFILER_PATH_64")); + Debug("GenerateVoidILStartupMethod: Linux: CORECLR_PROFILER_PATH_64 defined as: ", native_profiler_file); + if (native_profiler_file == WStr("")) + { + native_profiler_file = GetEnvironmentValue(WStr("CORECLR_PROFILER_PATH")); + Debug("GenerateVoidILStartupMethod: Linux: CORECLR_PROFILER_PATH defined as: ", native_profiler_file); + } #else // BIT64 - WSTRING native_profiler_file = GetEnvironmentValue(WStr("CORECLR_PROFILER_PATH_32")); - Debug("GenerateVoidILStartupMethod: Linux: CORECLR_PROFILER_PATH_32 defined as: ", native_profiler_file); - if (native_profiler_file == WStr("")) { - native_profiler_file = GetEnvironmentValue(WStr("CORECLR_PROFILER_PATH")); - Debug("GenerateVoidILStartupMethod: Linux: CORECLR_PROFILER_PATH defined as: ", native_profiler_file); - } + WSTRING native_profiler_file = GetEnvironmentValue(WStr("CORECLR_PROFILER_PATH_32")); + Debug("GenerateVoidILStartupMethod: Linux: CORECLR_PROFILER_PATH_32 defined as: ", native_profiler_file); + if (native_profiler_file == WStr("")) + { + native_profiler_file = GetEnvironmentValue(WStr("CORECLR_PROFILER_PATH")); + Debug("GenerateVoidILStartupMethod: Linux: CORECLR_PROFILER_PATH defined as: ", native_profiler_file); + } #endif // BIT64 -Debug("GenerateVoidILStartupMethod: Linux: Setting the PInvoke native profiler library path to ", native_profiler_file); + Debug("GenerateVoidILStartupMethod: Linux: Setting the PInvoke native profiler library path to ", + native_profiler_file); #endif // _WIN32 - mdModuleRef profiler_ref; - hr = metadata_emit->DefineModuleRef(native_profiler_file.c_str(), - &profiler_ref); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineModuleRef failed"); - return hr; - } + mdModuleRef profiler_ref; + hr = metadata_emit->DefineModuleRef(native_profiler_file.c_str(), &profiler_ref); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineModuleRef failed"); + return hr; + } - hr = metadata_emit->DefinePinvokeMap(pinvoke_method_def, - 0, - WStr("GetAssemblyAndSymbolsBytes"), - profiler_ref); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefinePinvokeMap failed"); - return hr; - } + hr = metadata_emit->DefinePinvokeMap(pinvoke_method_def, 0, WStr("GetAssemblyAndSymbolsBytes"), profiler_ref); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefinePinvokeMap failed"); + return hr; + } - // Get a TypeRef for System.Byte - mdTypeRef byte_type_ref; - hr = metadata_emit->DefineTypeRefByName(corlib_ref, - WStr("System.Byte"), - &byte_type_ref); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineTypeRefByName failed"); - return hr; - } + // Get a TypeRef for System.Byte + mdTypeRef byte_type_ref; + hr = metadata_emit->DefineTypeRefByName(corlib_ref, WStr("System.Byte"), &byte_type_ref); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineTypeRefByName failed"); + return hr; + } - // Get a TypeRef for System.Runtime.InteropServices.Marshal - mdTypeRef marshal_type_ref; - hr = metadata_emit->DefineTypeRefByName(corlib_ref, - WStr("System.Runtime.InteropServices.Marshal"), - &marshal_type_ref); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineTypeRefByName failed"); - return hr; - } + // Get a TypeRef for System.Runtime.InteropServices.Marshal + mdTypeRef marshal_type_ref; + hr = metadata_emit->DefineTypeRefByName(corlib_ref, WStr("System.Runtime.InteropServices.Marshal"), + &marshal_type_ref); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineTypeRefByName failed"); + return hr; + } - // Get a MemberRef for System.Runtime.InteropServices.Marshal.Copy(IntPtr, Byte[], int, int) - mdMemberRef marshal_copy_member_ref; - COR_SIGNATURE marshal_copy_signature[] = { - IMAGE_CEE_CS_CALLCONV_DEFAULT, // Calling convention - 4, // Number of parameters - ELEMENT_TYPE_VOID, // Return type - ELEMENT_TYPE_I, // List of parameter types - ELEMENT_TYPE_SZARRAY, - ELEMENT_TYPE_U1, - ELEMENT_TYPE_I4, - ELEMENT_TYPE_I4 - }; - hr = metadata_emit->DefineMemberRef( - marshal_type_ref, WStr("Copy"), marshal_copy_signature, - sizeof(marshal_copy_signature), &marshal_copy_member_ref); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineMemberRef failed"); - return hr; - } + // Get a MemberRef for System.Runtime.InteropServices.Marshal.Copy(IntPtr, Byte[], int, int) + mdMemberRef marshal_copy_member_ref; + COR_SIGNATURE marshal_copy_signature[] = {IMAGE_CEE_CS_CALLCONV_DEFAULT, // Calling convention + 4, // Number of parameters + ELEMENT_TYPE_VOID, // Return type + ELEMENT_TYPE_I, // List of parameter types + ELEMENT_TYPE_SZARRAY, + ELEMENT_TYPE_U1, + ELEMENT_TYPE_I4, + ELEMENT_TYPE_I4}; + hr = metadata_emit->DefineMemberRef(marshal_type_ref, WStr("Copy"), marshal_copy_signature, + sizeof(marshal_copy_signature), &marshal_copy_member_ref); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineMemberRef failed"); + return hr; + } - // Get a TypeRef for System.Reflection.Assembly - mdTypeRef system_reflection_assembly_type_ref; - hr = metadata_emit->DefineTypeRefByName(corlib_ref, - WStr("System.Reflection.Assembly"), - &system_reflection_assembly_type_ref); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineTypeRefByName failed"); - return hr; - } + // Get a TypeRef for System.Reflection.Assembly + mdTypeRef system_reflection_assembly_type_ref; + hr = metadata_emit->DefineTypeRefByName(corlib_ref, WStr("System.Reflection.Assembly"), + &system_reflection_assembly_type_ref); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineTypeRefByName failed"); + return hr; + } - // Get a MemberRef for System.Object.ToString() - mdTypeRef system_object_type_ref; - hr = metadata_emit->DefineTypeRefByName(corlib_ref, - WStr("System.Object"), - &system_object_type_ref); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineTypeRefByName failed"); - return hr; - } + // Get a MemberRef for System.Object.ToString() + mdTypeRef system_object_type_ref; + hr = metadata_emit->DefineTypeRefByName(corlib_ref, WStr("System.Object"), &system_object_type_ref); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineTypeRefByName failed"); + return hr; + } - // Create method signature for System.Reflection.Assembly.Load(byte[], byte[]) - COR_SIGNATURE appdomain_load_signature_start[] = { - IMAGE_CEE_CS_CALLCONV_DEFAULT, - 2, - ELEMENT_TYPE_CLASS // ret = System.Reflection.Assembly - // insert compressed token for System.Reflection.Assembly TypeRef here - }; - COR_SIGNATURE appdomain_load_signature_end[] = { - ELEMENT_TYPE_SZARRAY, - ELEMENT_TYPE_U1, - ELEMENT_TYPE_SZARRAY, - ELEMENT_TYPE_U1 - }; - ULONG start_length = sizeof(appdomain_load_signature_start); - ULONG end_length = sizeof(appdomain_load_signature_end); - - BYTE system_reflection_assembly_type_ref_compressed_token[4]; - ULONG token_length = CorSigCompressToken(system_reflection_assembly_type_ref, system_reflection_assembly_type_ref_compressed_token); - - const auto appdomain_load_signature_length = start_length + token_length + end_length; - COR_SIGNATURE appdomain_load_signature[250]; - memcpy(appdomain_load_signature, - appdomain_load_signature_start, - start_length); - memcpy(&appdomain_load_signature[start_length], - system_reflection_assembly_type_ref_compressed_token, - token_length); - memcpy(&appdomain_load_signature[start_length + token_length], - appdomain_load_signature_end, - end_length); - - mdMemberRef appdomain_load_member_ref; - hr = metadata_emit->DefineMemberRef( - system_reflection_assembly_type_ref, WStr("Load"), - appdomain_load_signature, - appdomain_load_signature_length, - &appdomain_load_member_ref); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineMemberRef failed"); - return hr; - } + // Create method signature for System.Reflection.Assembly.Load(byte[], byte[]) + COR_SIGNATURE appdomain_load_signature_start[] = { + IMAGE_CEE_CS_CALLCONV_DEFAULT, 2, + ELEMENT_TYPE_CLASS // ret = System.Reflection.Assembly + // insert compressed token for System.Reflection.Assembly TypeRef here + }; + COR_SIGNATURE appdomain_load_signature_end[] = {ELEMENT_TYPE_SZARRAY, ELEMENT_TYPE_U1, ELEMENT_TYPE_SZARRAY, + ELEMENT_TYPE_U1}; + ULONG start_length = sizeof(appdomain_load_signature_start); + ULONG end_length = sizeof(appdomain_load_signature_end); + + BYTE system_reflection_assembly_type_ref_compressed_token[4]; + ULONG token_length = + CorSigCompressToken(system_reflection_assembly_type_ref, system_reflection_assembly_type_ref_compressed_token); + + const auto appdomain_load_signature_length = start_length + token_length + end_length; + COR_SIGNATURE appdomain_load_signature[250]; + memcpy(appdomain_load_signature, appdomain_load_signature_start, start_length); + memcpy(&appdomain_load_signature[start_length], system_reflection_assembly_type_ref_compressed_token, token_length); + memcpy(&appdomain_load_signature[start_length + token_length], appdomain_load_signature_end, end_length); + + mdMemberRef appdomain_load_member_ref; + hr = metadata_emit->DefineMemberRef(system_reflection_assembly_type_ref, WStr("Load"), appdomain_load_signature, + appdomain_load_signature_length, &appdomain_load_member_ref); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineMemberRef failed"); + return hr; + } - // Create method signature for Assembly.CreateInstance(string) - COR_SIGNATURE assembly_create_instance_signature[] = { - IMAGE_CEE_CS_CALLCONV_HASTHIS, - 1, - ELEMENT_TYPE_OBJECT, // ret = System.Object - ELEMENT_TYPE_STRING - }; - - mdMemberRef assembly_create_instance_member_ref; - hr = metadata_emit->DefineMemberRef( - system_reflection_assembly_type_ref, WStr("CreateInstance"), - assembly_create_instance_signature, - sizeof(assembly_create_instance_signature), - &assembly_create_instance_member_ref); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineMemberRef failed"); - return hr; - } + // Create method signature for Assembly.CreateInstance(string) + COR_SIGNATURE assembly_create_instance_signature[] = {IMAGE_CEE_CS_CALLCONV_HASTHIS, 1, + ELEMENT_TYPE_OBJECT, // ret = System.Object + ELEMENT_TYPE_STRING}; + + mdMemberRef assembly_create_instance_member_ref; + hr = metadata_emit->DefineMemberRef(system_reflection_assembly_type_ref, WStr("CreateInstance"), + assembly_create_instance_signature, sizeof(assembly_create_instance_signature), + &assembly_create_instance_member_ref); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineMemberRef failed"); + return hr; + } - // Create a string representing "Datadog.Trace.ClrProfiler.Managed.Loader.Startup" - // Create OS-specific implementations because on Windows, creating the string via - // "Datadog.Trace.ClrProfiler.Managed.Loader.Startup"_W.c_str() does not create the - // proper string for CreateInstance to successfully call + // Create a string representing "Datadog.Trace.ClrProfiler.Managed.Loader.Startup" + // Create OS-specific implementations because on Windows, creating the string via + // "Datadog.Trace.ClrProfiler.Managed.Loader.Startup"_W.c_str() does not create the + // proper string for CreateInstance to successfully call #ifdef _WIN32 - LPCWSTR load_helper_str = - L"Datadog.Trace.ClrProfiler.Managed.Loader.Startup"; - auto load_helper_str_size = wcslen(load_helper_str); + LPCWSTR load_helper_str = L"Datadog.Trace.ClrProfiler.Managed.Loader.Startup"; + auto load_helper_str_size = wcslen(load_helper_str); #else - char16_t load_helper_str[] = - u"Datadog.Trace.ClrProfiler.Managed.Loader.Startup"; - auto load_helper_str_size = std::char_traits::length(load_helper_str); + char16_t load_helper_str[] = u"Datadog.Trace.ClrProfiler.Managed.Loader.Startup"; + auto load_helper_str_size = std::char_traits::length(load_helper_str); #endif - mdString load_helper_token; - hr = metadata_emit->DefineUserString(load_helper_str, (ULONG) load_helper_str_size, - &load_helper_token); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineUserString failed"); - return hr; - } + mdString load_helper_token; + hr = metadata_emit->DefineUserString(load_helper_str, (ULONG) load_helper_str_size, &load_helper_token); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineUserString failed"); + return hr; + } - // Generate a locals signature defined in the following way: - // [0] System.IntPtr ("assemblyPtr" - address of assembly bytes) - // [1] System.Int32 ("assemblySize" - size of assembly bytes) - // [2] System.IntPtr ("symbolsPtr" - address of symbols bytes) - // [3] System.Int32 ("symbolsSize" - size of symbols bytes) - // [4] System.Byte[] ("assemblyBytes" - managed byte array for assembly) - // [5] System.Byte[] ("symbolsBytes" - managed byte array for symbols) - // [6] class System.Reflection.Assembly ("loadedAssembly" - assembly instance to save loaded assembly) - mdSignature locals_signature_token; - COR_SIGNATURE locals_signature[15] = { - IMAGE_CEE_CS_CALLCONV_LOCAL_SIG, // Calling convention - 7, // Number of variables - ELEMENT_TYPE_I, // List of variable types - ELEMENT_TYPE_I4, - ELEMENT_TYPE_I, - ELEMENT_TYPE_I4, - ELEMENT_TYPE_SZARRAY, - ELEMENT_TYPE_U1, - ELEMENT_TYPE_SZARRAY, - ELEMENT_TYPE_U1, - ELEMENT_TYPE_CLASS - // insert compressed token for System.Reflection.Assembly TypeRef here - }; - CorSigCompressToken(system_reflection_assembly_type_ref, - &locals_signature[11]); - hr = metadata_emit->GetTokenFromSig(locals_signature, sizeof(locals_signature), - &locals_signature_token); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: Unable to generate locals signature. ModuleID=", module_id); - return hr; - } + // Generate a locals signature defined in the following way: + // [0] System.IntPtr ("assemblyPtr" - address of assembly bytes) + // [1] System.Int32 ("assemblySize" - size of assembly bytes) + // [2] System.IntPtr ("symbolsPtr" - address of symbols bytes) + // [3] System.Int32 ("symbolsSize" - size of symbols bytes) + // [4] System.Byte[] ("assemblyBytes" - managed byte array for assembly) + // [5] System.Byte[] ("symbolsBytes" - managed byte array for symbols) + // [6] class System.Reflection.Assembly ("loadedAssembly" - assembly instance to save loaded assembly) + mdSignature locals_signature_token; + COR_SIGNATURE locals_signature[15] = { + IMAGE_CEE_CS_CALLCONV_LOCAL_SIG, // Calling convention + 7, // Number of variables + ELEMENT_TYPE_I, // List of variable types + ELEMENT_TYPE_I4, + ELEMENT_TYPE_I, + ELEMENT_TYPE_I4, + ELEMENT_TYPE_SZARRAY, + ELEMENT_TYPE_U1, + ELEMENT_TYPE_SZARRAY, + ELEMENT_TYPE_U1, + ELEMENT_TYPE_CLASS + // insert compressed token for System.Reflection.Assembly TypeRef here + }; + CorSigCompressToken(system_reflection_assembly_type_ref, &locals_signature[11]); + hr = metadata_emit->GetTokenFromSig(locals_signature, sizeof(locals_signature), &locals_signature_token); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: Unable to generate locals signature. ModuleID=", module_id); + return hr; + } - ///////////////////////////////////////////// - // Add IL instructions into the void method - ILRewriter rewriter_void(this->info_, nullptr, module_id, *ret_method_token); - rewriter_void.InitializeTiny(); - rewriter_void.SetTkLocalVarSig(locals_signature_token); - - ILInstr* pFirstInstr = rewriter_void.GetILList()->m_pNext; - ILInstr* pNewInstr = NULL; - - // Step 0) Check if the assembly was already loaded - - // call bool IsAlreadyLoaded() - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_CALL; - pNewInstr->m_Arg32 = alreadyLoadedMethodToken; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // check if the return of the method call is true or false - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_BRFALSE_S; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - ILInstr* pBranchFalseInstr = pNewInstr; - - // return if IsAlreadyLoaded is true - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_RET; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // Step 1) Call void GetAssemblyAndSymbolsBytes(out IntPtr assemblyPtr, out int assemblySize, out IntPtr symbolsPtr, out int symbolsSize) - - // ldloca.s 0 : Load the address of the "assemblyPtr" variable (locals index 0) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOCA_S; - pNewInstr->m_Arg32 = 0; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // Set the false branch target - pBranchFalseInstr->m_pTarget = pNewInstr; - - // ldloca.s 1 : Load the address of the "assemblySize" variable (locals index 1) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOCA_S; - pNewInstr->m_Arg32 = 1; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // ldloca.s 2 : Load the address of the "symbolsPtr" variable (locals index 2) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOCA_S; - pNewInstr->m_Arg32 = 2; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // ldloca.s 3 : Load the address of the "symbolsSize" variable (locals index 3) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOCA_S; - pNewInstr->m_Arg32 = 3; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // call void GetAssemblyAndSymbolsBytes(out IntPtr assemblyPtr, out int assemblySize, out IntPtr symbolsPtr, out int symbolsSize) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_CALL; - pNewInstr->m_Arg32 = pinvoke_method_def; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // Step 2) Call void Marshal.Copy(IntPtr source, byte[] destination, int startIndex, int length) to populate the managed assembly bytes - - // ldloc.1 : Load the "assemblySize" variable (locals index 1) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOC_1; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // newarr System.Byte : Create a new Byte[] to hold a managed copy of the assembly data - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_NEWARR; - pNewInstr->m_Arg32 = byte_type_ref; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // stloc.s 4 : Assign the Byte[] to the "assemblyBytes" variable (locals index 4) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_STLOC_S; - pNewInstr->m_Arg8 = 4; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // ldloc.0 : Load the "assemblyPtr" variable (locals index 0) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOC_0; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // ldloc.s 4 : Load the "assemblyBytes" variable (locals index 4) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOC_S; - pNewInstr->m_Arg8 = 4; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // ldc.i4.0 : Load the integer 0 for the Marshal.Copy startIndex parameter - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDC_I4_0; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // ldloc.1 : Load the "assemblySize" variable (locals index 1) for the Marshal.Copy length parameter - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOC_1; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // call Marshal.Copy(IntPtr source, byte[] destination, int startIndex, int length) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_CALL; - pNewInstr->m_Arg32 = marshal_copy_member_ref; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // Step 3) Call void Marshal.Copy(IntPtr source, byte[] destination, int startIndex, int length) to populate the symbols bytes - - // ldloc.3 : Load the "symbolsSize" variable (locals index 3) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOC_3; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // newarr System.Byte : Create a new Byte[] to hold a managed copy of the symbols data - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_NEWARR; - pNewInstr->m_Arg32 = byte_type_ref; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // stloc.s 5 : Assign the Byte[] to the "symbolsBytes" variable (locals index 5) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_STLOC_S; - pNewInstr->m_Arg8 = 5; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // ldloc.2 : Load the "symbolsPtr" variables (locals index 2) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOC_2; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // ldloc.s 5 : Load the "symbolsBytes" variable (locals index 5) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOC_S; - pNewInstr->m_Arg8 = 5; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // ldc.i4.0 : Load the integer 0 for the Marshal.Copy startIndex parameter - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDC_I4_0; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // ldloc.3 : Load the "symbolsSize" variable (locals index 3) for the Marshal.Copy length parameter - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOC_3; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // call void Marshal.Copy(IntPtr source, byte[] destination, int startIndex, int length) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_CALL; - pNewInstr->m_Arg32 = marshal_copy_member_ref; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // Step 4) Call System.Reflection.Assembly System.Reflection.Assembly.Load(byte[], byte[])) - - // ldloc.s 4 : Load the "assemblyBytes" variable (locals index 4) for the first byte[] parameter of AppDomain.Load(byte[], byte[]) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOC_S; - pNewInstr->m_Arg8 = 4; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // ldloc.s 5 : Load the "symbolsBytes" variable (locals index 5) for the second byte[] parameter of AppDomain.Load(byte[], byte[]) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOC_S; - pNewInstr->m_Arg8 = 5; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // call System.Reflection.Assembly System.Reflection.Assembly.Load(uint8[], uint8[]) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_CALL; - pNewInstr->m_Arg32 = appdomain_load_member_ref; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // stloc.s 6 : Assign the System.Reflection.Assembly object to the "loadedAssembly" variable (locals index 6) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_STLOC_S; - pNewInstr->m_Arg8 = 6; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // Step 4) Call instance method Assembly.CreateInstance("Datadog.Trace.ClrProfiler.Managed.Loader.Startup") - - // ldloc.s 6 : Load the "loadedAssembly" variable (locals index 6) to call Assembly.CreateInstance - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDLOC_S; - pNewInstr->m_Arg8 = 6; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // ldstr "Datadog.Trace.ClrProfiler.Managed.Loader.Startup" - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_LDSTR; - pNewInstr->m_Arg32 = load_helper_token; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // callvirt System.Object System.Reflection.Assembly.CreateInstance(string) - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_CALLVIRT; - pNewInstr->m_Arg32 = assembly_create_instance_member_ref; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // pop the returned object - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_POP; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - // return - pNewInstr = rewriter_void.NewILInstr(); - pNewInstr->m_opcode = CEE_RET; - rewriter_void.InsertBefore(pFirstInstr, pNewInstr); - - hr = rewriter_void.Export(); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: Call to ILRewriter.Export() failed for ModuleID=", module_id); - return hr; - } + ///////////////////////////////////////////// + // Add IL instructions into the void method + ILRewriter rewriter_void(this->info_, nullptr, module_id, *ret_method_token); + rewriter_void.InitializeTiny(); + rewriter_void.SetTkLocalVarSig(locals_signature_token); + + ILInstr* pFirstInstr = rewriter_void.GetILList()->m_pNext; + ILInstr* pNewInstr = NULL; + + // Step 0) Check if the assembly was already loaded + + // call bool IsAlreadyLoaded() + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_CALL; + pNewInstr->m_Arg32 = alreadyLoadedMethodToken; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // check if the return of the method call is true or false + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_BRFALSE_S; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + ILInstr* pBranchFalseInstr = pNewInstr; + + // return if IsAlreadyLoaded is true + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_RET; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // Step 1) Call void GetAssemblyAndSymbolsBytes(out IntPtr assemblyPtr, out int assemblySize, out IntPtr symbolsPtr, + // out int symbolsSize) + + // ldloca.s 0 : Load the address of the "assemblyPtr" variable (locals index 0) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOCA_S; + pNewInstr->m_Arg32 = 0; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // Set the false branch target + pBranchFalseInstr->m_pTarget = pNewInstr; + + // ldloca.s 1 : Load the address of the "assemblySize" variable (locals index 1) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOCA_S; + pNewInstr->m_Arg32 = 1; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // ldloca.s 2 : Load the address of the "symbolsPtr" variable (locals index 2) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOCA_S; + pNewInstr->m_Arg32 = 2; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // ldloca.s 3 : Load the address of the "symbolsSize" variable (locals index 3) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOCA_S; + pNewInstr->m_Arg32 = 3; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // call void GetAssemblyAndSymbolsBytes(out IntPtr assemblyPtr, out int assemblySize, out IntPtr symbolsPtr, out int + // symbolsSize) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_CALL; + pNewInstr->m_Arg32 = pinvoke_method_def; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // Step 2) Call void Marshal.Copy(IntPtr source, byte[] destination, int startIndex, int length) to populate the + // managed assembly bytes + + // ldloc.1 : Load the "assemblySize" variable (locals index 1) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOC_1; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // newarr System.Byte : Create a new Byte[] to hold a managed copy of the assembly data + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_NEWARR; + pNewInstr->m_Arg32 = byte_type_ref; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // stloc.s 4 : Assign the Byte[] to the "assemblyBytes" variable (locals index 4) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_STLOC_S; + pNewInstr->m_Arg8 = 4; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // ldloc.0 : Load the "assemblyPtr" variable (locals index 0) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOC_0; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // ldloc.s 4 : Load the "assemblyBytes" variable (locals index 4) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOC_S; + pNewInstr->m_Arg8 = 4; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // ldc.i4.0 : Load the integer 0 for the Marshal.Copy startIndex parameter + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDC_I4_0; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // ldloc.1 : Load the "assemblySize" variable (locals index 1) for the Marshal.Copy length parameter + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOC_1; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // call Marshal.Copy(IntPtr source, byte[] destination, int startIndex, int length) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_CALL; + pNewInstr->m_Arg32 = marshal_copy_member_ref; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // Step 3) Call void Marshal.Copy(IntPtr source, byte[] destination, int startIndex, int length) to populate the + // symbols bytes + + // ldloc.3 : Load the "symbolsSize" variable (locals index 3) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOC_3; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // newarr System.Byte : Create a new Byte[] to hold a managed copy of the symbols data + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_NEWARR; + pNewInstr->m_Arg32 = byte_type_ref; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // stloc.s 5 : Assign the Byte[] to the "symbolsBytes" variable (locals index 5) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_STLOC_S; + pNewInstr->m_Arg8 = 5; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // ldloc.2 : Load the "symbolsPtr" variables (locals index 2) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOC_2; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // ldloc.s 5 : Load the "symbolsBytes" variable (locals index 5) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOC_S; + pNewInstr->m_Arg8 = 5; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // ldc.i4.0 : Load the integer 0 for the Marshal.Copy startIndex parameter + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDC_I4_0; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // ldloc.3 : Load the "symbolsSize" variable (locals index 3) for the Marshal.Copy length parameter + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOC_3; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // call void Marshal.Copy(IntPtr source, byte[] destination, int startIndex, int length) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_CALL; + pNewInstr->m_Arg32 = marshal_copy_member_ref; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // Step 4) Call System.Reflection.Assembly System.Reflection.Assembly.Load(byte[], byte[])) + + // ldloc.s 4 : Load the "assemblyBytes" variable (locals index 4) for the first byte[] parameter of + // AppDomain.Load(byte[], byte[]) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOC_S; + pNewInstr->m_Arg8 = 4; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // ldloc.s 5 : Load the "symbolsBytes" variable (locals index 5) for the second byte[] parameter of + // AppDomain.Load(byte[], byte[]) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOC_S; + pNewInstr->m_Arg8 = 5; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // call System.Reflection.Assembly System.Reflection.Assembly.Load(uint8[], uint8[]) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_CALL; + pNewInstr->m_Arg32 = appdomain_load_member_ref; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // stloc.s 6 : Assign the System.Reflection.Assembly object to the "loadedAssembly" variable (locals index 6) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_STLOC_S; + pNewInstr->m_Arg8 = 6; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // Step 4) Call instance method Assembly.CreateInstance("Datadog.Trace.ClrProfiler.Managed.Loader.Startup") + + // ldloc.s 6 : Load the "loadedAssembly" variable (locals index 6) to call Assembly.CreateInstance + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDLOC_S; + pNewInstr->m_Arg8 = 6; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // ldstr "Datadog.Trace.ClrProfiler.Managed.Loader.Startup" + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_LDSTR; + pNewInstr->m_Arg32 = load_helper_token; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // callvirt System.Object System.Reflection.Assembly.CreateInstance(string) + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_CALLVIRT; + pNewInstr->m_Arg32 = assembly_create_instance_member_ref; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // pop the returned object + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_POP; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + // return + pNewInstr = rewriter_void.NewILInstr(); + pNewInstr->m_opcode = CEE_RET; + rewriter_void.InsertBefore(pFirstInstr, pNewInstr); + + hr = rewriter_void.Export(); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: Call to ILRewriter.Export() failed for ModuleID=", module_id); + return hr; + } - return S_OK; + return S_OK; } -HRESULT CorProfiler::AddIISPreStartInitFlags( - const ModuleID module_id, - const mdToken function_token) { - ComPtr metadata_interfaces; - auto hr = this->info_->GetModuleMetaData(module_id, ofRead | ofWrite, - IID_IMetaDataImport2, - metadata_interfaces.GetAddressOf()); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: failed to get metadata interface for ", - module_id); - return hr; - } +HRESULT CorProfiler::AddIISPreStartInitFlags(const ModuleID module_id, const mdToken function_token) +{ + ComPtr metadata_interfaces; + auto hr = this->info_->GetModuleMetaData(module_id, ofRead | ofWrite, IID_IMetaDataImport2, + metadata_interfaces.GetAddressOf()); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: failed to get metadata interface for ", module_id); + return hr; + } - const auto metadata_import = - metadata_interfaces.As(IID_IMetaDataImport); - const auto metadata_emit = - metadata_interfaces.As(IID_IMetaDataEmit); - const auto assembly_import = metadata_interfaces.As( - IID_IMetaDataAssemblyImport); - const auto assembly_emit = - metadata_interfaces.As(IID_IMetaDataAssemblyEmit); - - ILRewriter rewriter(this->info_, nullptr, module_id, function_token); - hr = rewriter.Import(); - - if (FAILED(hr)) { - Warn("RunILStartupHook: Call to ILRewriter.Import() failed for ", module_id, - " ", function_token); - return hr; - } + const auto metadata_import = metadata_interfaces.As(IID_IMetaDataImport); + const auto metadata_emit = metadata_interfaces.As(IID_IMetaDataEmit); + const auto assembly_import = metadata_interfaces.As(IID_IMetaDataAssemblyImport); + const auto assembly_emit = metadata_interfaces.As(IID_IMetaDataAssemblyEmit); + + ILRewriter rewriter(this->info_, nullptr, module_id, function_token); + hr = rewriter.Import(); - ILRewriterWrapper rewriter_wrapper(&rewriter); + if (FAILED(hr)) + { + Warn("RunILStartupHook: Call to ILRewriter.Import() failed for ", module_id, " ", function_token); + return hr; + } - // Get corlib assembly ref - mdAssemblyRef corlib_ref; - hr = GetCorLibAssemblyRef(assembly_emit, corAssemblyProperty, &corlib_ref); + ILRewriterWrapper rewriter_wrapper(&rewriter); - // Get System.Boolean type token - mdToken boolToken; - metadata_emit->DefineTypeRefByName(corlib_ref, SystemBoolean, - &boolToken); + // Get corlib assembly ref + mdAssemblyRef corlib_ref; + hr = GetCorLibAssemblyRef(assembly_emit, corAssemblyProperty, &corlib_ref); - // Get System.AppDomain type ref - mdTypeRef system_appdomain_type_ref; - hr = metadata_emit->DefineTypeRefByName(corlib_ref, WStr("System.AppDomain"), - &system_appdomain_type_ref); - if (FAILED(hr)) { - Warn("Wrapper objectTypeRef could not be defined."); - return hr; - } + // Get System.Boolean type token + mdToken boolToken; + metadata_emit->DefineTypeRefByName(corlib_ref, SystemBoolean, &boolToken); + + // Get System.AppDomain type ref + mdTypeRef system_appdomain_type_ref; + hr = metadata_emit->DefineTypeRefByName(corlib_ref, WStr("System.AppDomain"), &system_appdomain_type_ref); + if (FAILED(hr)) + { + Warn("Wrapper objectTypeRef could not be defined."); + return hr; + } - // Get a MemberRef for System.AppDomain.get_CurrentDomain() - COR_SIGNATURE appdomain_get_current_domain_signature_start[] = { - IMAGE_CEE_CS_CALLCONV_DEFAULT, - 0, - ELEMENT_TYPE_CLASS, // ret = System.AppDomain - // insert compressed token for System.AppDomain TypeRef here - }; - ULONG start_length = sizeof(appdomain_get_current_domain_signature_start); - - BYTE system_appdomain_type_ref_compressed_token[4]; - ULONG token_length = CorSigCompressToken( - system_appdomain_type_ref, system_appdomain_type_ref_compressed_token); - - const auto appdomain_get_current_domain_signature_length = start_length + token_length; - COR_SIGNATURE appdomain_get_current_domain_signature[250]; - memcpy(appdomain_get_current_domain_signature, - appdomain_get_current_domain_signature_start, start_length); - memcpy(&appdomain_get_current_domain_signature[start_length], - system_appdomain_type_ref_compressed_token, token_length); - - mdMemberRef appdomain_get_current_domain_member_ref; - hr = metadata_emit->DefineMemberRef( - system_appdomain_type_ref, WStr("get_CurrentDomain"), - appdomain_get_current_domain_signature, - appdomain_get_current_domain_signature_length, - &appdomain_get_current_domain_member_ref); - - // Get AppDomain.SetData - COR_SIGNATURE appdomain_set_data_signature[] = { - IMAGE_CEE_CS_CALLCONV_DEFAULT | IMAGE_CEE_CS_CALLCONV_HASTHIS, // Calling convention - 2, // Number of parameters - ELEMENT_TYPE_VOID, // Return type - ELEMENT_TYPE_STRING, // List of parameter types - ELEMENT_TYPE_OBJECT - }; - mdMemberRef appdomain_set_data_member_ref; - hr = metadata_emit->DefineMemberRef( - system_appdomain_type_ref, WStr("SetData"), - appdomain_set_data_signature, - sizeof(appdomain_set_data_signature), - &appdomain_set_data_member_ref); - - // Define "Datadog_IISPreInitStart" string - // Create a string representing - // "Datadog.Trace.ClrProfiler.Managed.Loader.Startup" Create OS-specific - // implementations because on Windows, creating the string via - // "Datadog.Trace.ClrProfiler.Managed.Loader.Startup"_W.c_str() does not - // create the proper string for CreateInstance to successfully call + // Get a MemberRef for System.AppDomain.get_CurrentDomain() + COR_SIGNATURE appdomain_get_current_domain_signature_start[] = { + IMAGE_CEE_CS_CALLCONV_DEFAULT, 0, + ELEMENT_TYPE_CLASS, // ret = System.AppDomain + // insert compressed token for System.AppDomain TypeRef here + }; + ULONG start_length = sizeof(appdomain_get_current_domain_signature_start); + + BYTE system_appdomain_type_ref_compressed_token[4]; + ULONG token_length = CorSigCompressToken(system_appdomain_type_ref, system_appdomain_type_ref_compressed_token); + + const auto appdomain_get_current_domain_signature_length = start_length + token_length; + COR_SIGNATURE appdomain_get_current_domain_signature[250]; + memcpy(appdomain_get_current_domain_signature, appdomain_get_current_domain_signature_start, start_length); + memcpy(&appdomain_get_current_domain_signature[start_length], system_appdomain_type_ref_compressed_token, + token_length); + + mdMemberRef appdomain_get_current_domain_member_ref; + hr = metadata_emit->DefineMemberRef( + system_appdomain_type_ref, WStr("get_CurrentDomain"), appdomain_get_current_domain_signature, + appdomain_get_current_domain_signature_length, &appdomain_get_current_domain_member_ref); + + // Get AppDomain.SetData + COR_SIGNATURE appdomain_set_data_signature[] = {IMAGE_CEE_CS_CALLCONV_DEFAULT | + IMAGE_CEE_CS_CALLCONV_HASTHIS, // Calling convention + 2, // Number of parameters + ELEMENT_TYPE_VOID, // Return type + ELEMENT_TYPE_STRING, // List of parameter types + ELEMENT_TYPE_OBJECT}; + mdMemberRef appdomain_set_data_member_ref; + hr = metadata_emit->DefineMemberRef(system_appdomain_type_ref, WStr("SetData"), appdomain_set_data_signature, + sizeof(appdomain_set_data_signature), &appdomain_set_data_member_ref); + + // Define "Datadog_IISPreInitStart" string + // Create a string representing + // "Datadog.Trace.ClrProfiler.Managed.Loader.Startup" Create OS-specific + // implementations because on Windows, creating the string via + // "Datadog.Trace.ClrProfiler.Managed.Loader.Startup"_W.c_str() does not + // create the proper string for CreateInstance to successfully call #ifdef _WIN32 - LPCWSTR pre_init_start_str = L"Datadog_IISPreInitStart"; - auto pre_init_start_str_size = wcslen(pre_init_start_str); + LPCWSTR pre_init_start_str = L"Datadog_IISPreInitStart"; + auto pre_init_start_str_size = wcslen(pre_init_start_str); #else - char16_t pre_init_start_str[] = - u"Datadog_IISPreInitStart"; - auto pre_init_start_str_size = - std::char_traits::length(pre_init_start_str); + char16_t pre_init_start_str[] = u"Datadog_IISPreInitStart"; + auto pre_init_start_str_size = std::char_traits::length(pre_init_start_str); #endif - mdString pre_init_start_string_token; - hr = metadata_emit->DefineUserString(pre_init_start_str, - (ULONG)pre_init_start_str_size, - &pre_init_start_string_token); - if (FAILED(hr)) { - Warn("GenerateVoidILStartupMethod: DefineUserString failed"); - return hr; - } + mdString pre_init_start_string_token; + hr = metadata_emit->DefineUserString(pre_init_start_str, (ULONG) pre_init_start_str_size, + &pre_init_start_string_token); + if (FAILED(hr)) + { + Warn("GenerateVoidILStartupMethod: DefineUserString failed"); + return hr; + } - // Get first instruction and set the rewriter to that location - ILInstr* pInstr = rewriter.GetILList()->m_pNext; - rewriter_wrapper.SetILPosition(pInstr); - ILInstr* pCurrentInstr = NULL; - ILInstr* pNewInstr = NULL; - - ////////////////////////////////////////////////// - // At the beginning of the method, call - // AppDomain.CurrentDomain.SetData(string, true) - - // Call AppDomain.get_CurrentDomain - rewriter_wrapper.CallMember(appdomain_get_current_domain_member_ref, false); - - // ldstr "Datadog_IISPreInitStart" - pCurrentInstr = rewriter_wrapper.GetCurrentILInstr(); - pNewInstr = rewriter.NewILInstr(); - pNewInstr->m_opcode = CEE_LDSTR; - pNewInstr->m_Arg32 = pre_init_start_string_token; - rewriter.InsertBefore(pCurrentInstr, pNewInstr); - - // load a boxed version of the boolean true - rewriter_wrapper.LoadInt32(1); - rewriter_wrapper.Box(boolToken); - - // Call AppDomain.SetData(string, object) - rewriter_wrapper.CallMember(appdomain_set_data_member_ref, true); - - ////////////////////////////////////////////////// - // At the end of the method, call - // AppDomain.CurrentDomain.SetData(string, false) - pInstr = rewriter.GetILList()->m_pPrev; // The last instruction should be a 'ret' instruction - - // Append a ret instruction so we can use the existing ret as the first instruction for our rewriting - pNewInstr = rewriter.NewILInstr(); - pNewInstr->m_opcode = CEE_RET; - rewriter.InsertAfter(pInstr, pNewInstr); - rewriter_wrapper.SetILPosition(pNewInstr); - - // Call AppDomain.get_CurrentDomain - // Special case: rewrite the previous ret instruction with this call - pInstr->m_opcode = CEE_CALL; - pInstr->m_Arg32 = appdomain_get_current_domain_member_ref; - - // ldstr "Datadog_IISPreInitStart" - pCurrentInstr = rewriter_wrapper.GetCurrentILInstr(); - pNewInstr = rewriter.NewILInstr(); - pNewInstr->m_opcode = CEE_LDSTR; - pNewInstr->m_Arg32 = pre_init_start_string_token; - rewriter.InsertBefore(pCurrentInstr, pNewInstr); - - // load a boxed version of the boolean false - rewriter_wrapper.LoadInt32(0); - rewriter_wrapper.Box(boolToken); - - // Call AppDomain.SetData(string, object) - rewriter_wrapper.CallMember(appdomain_set_data_member_ref, true); - - ////////////////////////////////////////////////// - // Finished with the IL rewriting, save the result - hr = rewriter.Export(); - - if (FAILED(hr)) { - Warn("RunILStartupHook: Call to ILRewriter.Export() failed for ModuleID=", - module_id, " ", function_token); - return hr; - } + // Get first instruction and set the rewriter to that location + ILInstr* pInstr = rewriter.GetILList()->m_pNext; + rewriter_wrapper.SetILPosition(pInstr); + ILInstr* pCurrentInstr = NULL; + ILInstr* pNewInstr = NULL; + + ////////////////////////////////////////////////// + // At the beginning of the method, call + // AppDomain.CurrentDomain.SetData(string, true) + + // Call AppDomain.get_CurrentDomain + rewriter_wrapper.CallMember(appdomain_get_current_domain_member_ref, false); + + // ldstr "Datadog_IISPreInitStart" + pCurrentInstr = rewriter_wrapper.GetCurrentILInstr(); + pNewInstr = rewriter.NewILInstr(); + pNewInstr->m_opcode = CEE_LDSTR; + pNewInstr->m_Arg32 = pre_init_start_string_token; + rewriter.InsertBefore(pCurrentInstr, pNewInstr); + + // load a boxed version of the boolean true + rewriter_wrapper.LoadInt32(1); + rewriter_wrapper.Box(boolToken); + + // Call AppDomain.SetData(string, object) + rewriter_wrapper.CallMember(appdomain_set_data_member_ref, true); + + ////////////////////////////////////////////////// + // At the end of the method, call + // AppDomain.CurrentDomain.SetData(string, false) + pInstr = rewriter.GetILList()->m_pPrev; // The last instruction should be a 'ret' instruction + + // Append a ret instruction so we can use the existing ret as the first instruction for our rewriting + pNewInstr = rewriter.NewILInstr(); + pNewInstr->m_opcode = CEE_RET; + rewriter.InsertAfter(pInstr, pNewInstr); + rewriter_wrapper.SetILPosition(pNewInstr); + + // Call AppDomain.get_CurrentDomain + // Special case: rewrite the previous ret instruction with this call + pInstr->m_opcode = CEE_CALL; + pInstr->m_Arg32 = appdomain_get_current_domain_member_ref; + + // ldstr "Datadog_IISPreInitStart" + pCurrentInstr = rewriter_wrapper.GetCurrentILInstr(); + pNewInstr = rewriter.NewILInstr(); + pNewInstr->m_opcode = CEE_LDSTR; + pNewInstr->m_Arg32 = pre_init_start_string_token; + rewriter.InsertBefore(pCurrentInstr, pNewInstr); + + // load a boxed version of the boolean false + rewriter_wrapper.LoadInt32(0); + rewriter_wrapper.Box(boolToken); + + // Call AppDomain.SetData(string, object) + rewriter_wrapper.CallMember(appdomain_set_data_member_ref, true); + + ////////////////////////////////////////////////// + // Finished with the IL rewriting, save the result + hr = rewriter.Export(); + + if (FAILED(hr)) + { + Warn("RunILStartupHook: Call to ILRewriter.Export() failed for ModuleID=", module_id, " ", function_token); + return hr; + } - return S_OK; + return S_OK; } #ifdef LINUX @@ -2592,112 +2699,136 @@ extern uint8_t pdb_start[] asm("_binary_Datadog_Trace_ClrProfiler_Managed_Loader extern uint8_t pdb_end[] asm("_binary_Datadog_Trace_ClrProfiler_Managed_Loader_pdb_end"); #endif -void CorProfiler::GetAssemblyAndSymbolsBytes(BYTE** pAssemblyArray, int* assemblySize, BYTE** pSymbolsArray, int* symbolsSize) const { +void CorProfiler::GetAssemblyAndSymbolsBytes(BYTE** pAssemblyArray, int* assemblySize, BYTE** pSymbolsArray, + int* symbolsSize) const +{ #ifdef _WIN32 - HINSTANCE hInstance = DllHandle; - LPCWSTR dllLpName; - LPCWSTR symbolsLpName; - - if (runtime_information_.is_desktop()) { - dllLpName = MAKEINTRESOURCE(NET45_MANAGED_ENTRYPOINT_DLL); - symbolsLpName = MAKEINTRESOURCE(NET45_MANAGED_ENTRYPOINT_SYMBOLS); - } else { - dllLpName = MAKEINTRESOURCE(NETCOREAPP20_MANAGED_ENTRYPOINT_DLL); - symbolsLpName = MAKEINTRESOURCE(NETCOREAPP20_MANAGED_ENTRYPOINT_SYMBOLS); - } + HINSTANCE hInstance = DllHandle; + LPCWSTR dllLpName; + LPCWSTR symbolsLpName; + + if (runtime_information_.is_desktop()) + { + dllLpName = MAKEINTRESOURCE(NET45_MANAGED_ENTRYPOINT_DLL); + symbolsLpName = MAKEINTRESOURCE(NET45_MANAGED_ENTRYPOINT_SYMBOLS); + } + else + { + dllLpName = MAKEINTRESOURCE(NETCOREAPP20_MANAGED_ENTRYPOINT_DLL); + symbolsLpName = MAKEINTRESOURCE(NETCOREAPP20_MANAGED_ENTRYPOINT_SYMBOLS); + } - HRSRC hResAssemblyInfo = FindResource(hInstance, dllLpName, L"ASSEMBLY"); - HGLOBAL hResAssembly = LoadResource(hInstance, hResAssemblyInfo); - *assemblySize = SizeofResource(hInstance, hResAssemblyInfo); - *pAssemblyArray = (LPBYTE)LockResource(hResAssembly); + HRSRC hResAssemblyInfo = FindResource(hInstance, dllLpName, L"ASSEMBLY"); + HGLOBAL hResAssembly = LoadResource(hInstance, hResAssemblyInfo); + *assemblySize = SizeofResource(hInstance, hResAssemblyInfo); + *pAssemblyArray = (LPBYTE) LockResource(hResAssembly); - HRSRC hResSymbolsInfo = FindResource(hInstance, symbolsLpName, L"SYMBOLS"); - HGLOBAL hResSymbols = LoadResource(hInstance, hResSymbolsInfo); - *symbolsSize = SizeofResource(hInstance, hResSymbolsInfo); - *pSymbolsArray = (LPBYTE)LockResource(hResSymbols); + HRSRC hResSymbolsInfo = FindResource(hInstance, symbolsLpName, L"SYMBOLS"); + HGLOBAL hResSymbols = LoadResource(hInstance, hResSymbolsInfo); + *symbolsSize = SizeofResource(hInstance, hResSymbolsInfo); + *pSymbolsArray = (LPBYTE) LockResource(hResSymbols); #elif LINUX - *assemblySize = dll_end - dll_start; - *pAssemblyArray = (BYTE*)dll_start; + *assemblySize = dll_end - dll_start; + *pAssemblyArray = (BYTE*) dll_start; - *symbolsSize = pdb_end - pdb_start; - *pSymbolsArray = (BYTE*)pdb_start; + *symbolsSize = pdb_end - pdb_start; + *pSymbolsArray = (BYTE*) pdb_start; #else const unsigned int imgCount = _dyld_image_count(); - for(auto i = 0; i < imgCount; i++) { + for (auto i = 0; i < imgCount; i++) + { const std::string name = std::string(_dyld_get_image_name(i)); - if (name.rfind("OpenTelemetry.AutoInstrumentation.ClrProfiler.Native.dylib") != std::string::npos) { - const mach_header_64* header = (const struct mach_header_64 *) _dyld_get_image_header(i); + if (name.rfind("OpenTelemetry.AutoInstrumentation.ClrProfiler.Native.dylib") != std::string::npos) + { + const mach_header_64* header = (const struct mach_header_64*) _dyld_get_image_header(i); unsigned long dllSize; const auto dllData = getsectiondata(header, "binary", "dll", &dllSize); *assemblySize = dllSize; - *pAssemblyArray = (BYTE*)dllData; + *pAssemblyArray = (BYTE*) dllData; unsigned long pdbSize; const auto pdbData = getsectiondata(header, "binary", "pdb", &pdbSize); *symbolsSize = pdbSize; - *pSymbolsArray = (BYTE*)pdbData; + *pSymbolsArray = (BYTE*) pdbData; break; } } #endif } - // *** // * ReJIT Methods // *** -HRESULT STDMETHODCALLTYPE CorProfiler::ReJITCompilationStarted(FunctionID functionId, ReJITID rejitId, BOOL fIsSafeToBlock) { - if (!is_attached_) { - return S_OK; - } - Debug("ReJITCompilationStarted: [functionId: ", functionId, ", rejitId: ", rejitId, ", safeToBlock: ", fIsSafeToBlock, "]"); - // we notify the reJIT handler of this event - return rejit_handler->NotifyReJITCompilationStarted(functionId, rejitId); +HRESULT STDMETHODCALLTYPE CorProfiler::ReJITCompilationStarted(FunctionID functionId, ReJITID rejitId, + BOOL fIsSafeToBlock) +{ + if (!is_attached_) + { + return S_OK; + } + Debug("ReJITCompilationStarted: [functionId: ", functionId, ", rejitId: ", rejitId, + ", safeToBlock: ", fIsSafeToBlock, "]"); + // we notify the reJIT handler of this event + return rejit_handler->NotifyReJITCompilationStarted(functionId, rejitId); } -HRESULT STDMETHODCALLTYPE CorProfiler::GetReJITParameters(ModuleID moduleId, mdMethodDef methodId, ICorProfilerFunctionControl* pFunctionControl) { - if (!is_attached_) { - return S_OK; - } +HRESULT STDMETHODCALLTYPE CorProfiler::GetReJITParameters(ModuleID moduleId, mdMethodDef methodId, + ICorProfilerFunctionControl* pFunctionControl) +{ + if (!is_attached_) + { + return S_OK; + } - Debug("GetReJITParameters: [moduleId: ", moduleId, ", methodId: ", methodId, "]"); + Debug("GetReJITParameters: [moduleId: ", moduleId, ", methodId: ", methodId, "]"); - // we get the module_metadata from the moduleId. - ModuleMetadata* module_metadata = nullptr; - { - std::lock_guard guard(module_id_to_info_map_lock_); - auto findRes = module_id_to_info_map_.find(moduleId); - if (findRes != module_id_to_info_map_.end()) { - module_metadata = findRes->second; - } else { - return S_FALSE; + // we get the module_metadata from the moduleId. + ModuleMetadata* module_metadata = nullptr; + { + std::lock_guard guard(module_id_to_info_map_lock_); + auto findRes = module_id_to_info_map_.find(moduleId); + if (findRes != module_id_to_info_map_.end()) + { + module_metadata = findRes->second; + } + else + { + return S_FALSE; + } } - } - // we notify the reJIT handler of this event and pass the module_metadata. - return rejit_handler->NotifyReJITParameters(moduleId, methodId, pFunctionControl, module_metadata); + // we notify the reJIT handler of this event and pass the module_metadata. + return rejit_handler->NotifyReJITParameters(moduleId, methodId, pFunctionControl, module_metadata); } -HRESULT STDMETHODCALLTYPE CorProfiler::ReJITCompilationFinished(FunctionID functionId, ReJITID rejitId, HRESULT hrStatus, BOOL fIsSafeToBlock) { - if (!is_attached_) { - return S_OK; - } +HRESULT STDMETHODCALLTYPE CorProfiler::ReJITCompilationFinished(FunctionID functionId, ReJITID rejitId, + HRESULT hrStatus, BOOL fIsSafeToBlock) +{ + if (!is_attached_) + { + return S_OK; + } - Debug("ReJITCompilationFinished: [functionId: ", functionId, ", rejitId: ", rejitId, ", hrStatus: ", hrStatus, ", safeToBlock: ", fIsSafeToBlock, "]"); - return S_OK; + Debug("ReJITCompilationFinished: [functionId: ", functionId, ", rejitId: ", rejitId, ", hrStatus: ", hrStatus, + ", safeToBlock: ", fIsSafeToBlock, "]"); + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfiler::ReJITError(ModuleID moduleId, mdMethodDef methodId, FunctionID functionId, HRESULT hrStatus) { - if (!is_attached_) { - return S_OK; - } +HRESULT STDMETHODCALLTYPE CorProfiler::ReJITError(ModuleID moduleId, mdMethodDef methodId, FunctionID functionId, + HRESULT hrStatus) +{ + if (!is_attached_) + { + return S_OK; + } - Warn("ReJITError: [functionId: ", functionId, ", moduleId: ", moduleId, ", methodId: ", methodId, ", hrStatus: ", hrStatus, "]"); - return S_OK; + Warn("ReJITError: [functionId: ", functionId, ", moduleId: ", moduleId, ", methodId: ", methodId, + ", hrStatus: ", hrStatus, "]"); + return S_OK; } // *** @@ -2711,147 +2842,163 @@ HRESULT STDMETHODCALLTYPE CorProfiler::ReJITError(ModuleID moduleId, mdMethodDef /// Module metadata for the module /// Filtered vector of integrations to be applied /// Number of ReJIT requests made -size_t CorProfiler::CallTarget_RequestRejitForModule(ModuleID module_id, ModuleMetadata* module_metadata, const std::vector &filtered_integrations) { - auto _ = trace::Stats::Instance()->CallTargetRequestRejitMeasure(); - - auto metadata_import = module_metadata->metadata_import; - const auto assembly_metadata = GetAssemblyImportMetadata(module_metadata->assembly_import); - - std::vector vtModules; - std::vector vtMethodDefs; - - for (const IntegrationMethod& integration : filtered_integrations) { - - // If the integration is not for the current assembly we skip. - if (integration.replacement.target_method.assembly.name != module_metadata->assemblyName) { - continue; - } - - // If the integration mode is not CallTarget we skip. - if (integration.replacement.wrapper_method.action != calltarget_modification_action) { - continue; - } - - // Check min version - if (integration.replacement.target_method.min_version > assembly_metadata.version) { - continue; - } - - // Check max version - if (integration.replacement.target_method.max_version < assembly_metadata.version) { - continue; - } - - // We are in the right module, so we try to load the mdTypeDef from the integration target type name. - mdTypeDef typeDef = mdTypeDefNil; - auto foundType = FindTypeDefByName( - integration.replacement.target_method.type_name, - module_metadata->assemblyName, metadata_import, typeDef); - - if (!foundType) { - continue; - } - - // Now we enumerate all methods with the same target method name. (All overloads of the method) - auto enumMethods = Enumerator( - [metadata_import, integration, typeDef](HCORENUM* ptr, mdMethodDef arr[], ULONG max, ULONG* cnt) -> HRESULT { - return metadata_import->EnumMethodsWithName(ptr, typeDef, integration.replacement.target_method.method_name.c_str(), arr, max, cnt); - }, - [metadata_import](HCORENUM ptr) -> void { - metadata_import->CloseEnum(ptr); - }); - - auto enumIterator = enumMethods.begin(); - while (enumIterator != enumMethods.end()) { - auto methodDef = *enumIterator; - - // Extract the function info from the mdMethodDef - const auto caller = GetFunctionInfo(module_metadata->metadata_import, methodDef); - if (!caller.IsValid()) { - Warn("The caller for the methoddef: ", TokenStr(&methodDef), " is not valid!"); - enumIterator = ++enumIterator; - continue; - } - - // We create a new function info into the heap from the caller functionInfo in the stack, to be used later in the ReJIT process - auto functionInfo = new FunctionInfo(caller); - auto hr = functionInfo->method_signature.TryParse(); - if (FAILED(hr)) { - Warn("The method signature: ", functionInfo->method_signature.str(), " cannot be parsed."); - delete functionInfo; - enumIterator = ++enumIterator; - continue; - } - - // Compare if the current mdMethodDef contains the same number of arguments as the instrumentation target - const auto numOfArgs = functionInfo->method_signature.NumberOfArguments(); - if (numOfArgs != integration.replacement.target_method.signature_types.size() - 1) { - Debug("The caller for the methoddef: ", integration.replacement.target_method.method_name, " doesn't have the right number of arguments."); - delete functionInfo; - enumIterator = ++enumIterator; - continue; - } - - // Compare each mdMethodDef argument type to the instrumentation target - bool argumentsMismatch = false; - const auto methodArguments = functionInfo->method_signature.GetMethodArguments(); - Debug("Comparing signature for method: ", integration.replacement.target_method.type_name, ".", integration.replacement.target_method.method_name); - for (unsigned int i = 0; i < numOfArgs; i++) { - const auto argumentTypeName = methodArguments[i].GetTypeTokName(metadata_import); - const auto integrationArgumentTypeName = integration.replacement.target_method.signature_types[i + 1]; - Debug(" -> ", argumentTypeName, " = ", integrationArgumentTypeName); - if (argumentTypeName != integrationArgumentTypeName && integrationArgumentTypeName != WStr("_")) { - argumentsMismatch = true; - break; - } - } - if (argumentsMismatch) { - Debug("The caller for the methoddef: ", integration.replacement.target_method.method_name, " doesn't have the right type of arguments."); - delete functionInfo; - enumIterator = ++enumIterator; - continue; - } - - // As we are in the right method, we gather all information we need and stored it in to the ReJIT handler. - auto moduleHandler = rejit_handler->GetOrAddModule(module_id); - moduleHandler->SetModuleMetadata(module_metadata); - auto methodHandler = moduleHandler->GetOrAddMethod(methodDef); - methodHandler->SetFunctionInfo(functionInfo); - methodHandler->SetMethodReplacement(new MethodReplacement(integration.replacement)); - - // Store module_id and methodDef to request the ReJIT after analyzing all integrations. - vtModules.push_back(module_id); - vtMethodDefs.push_back(methodDef); - - bool caller_assembly_is_domain_neutral = runtime_information_.is_desktop() && corlib_module_loaded && module_metadata->app_domain_id == corlib_app_domain_id; - - Info("Enqueue for ReJIT [ModuleId=", module_id, - ", MethodDef=", TokenStr(&methodDef), - ", AppDomainId=", module_metadata->app_domain_id, - ", IsDomainNeutral=", caller_assembly_is_domain_neutral, - ", Assembly=", module_metadata->assemblyName, - ", Type=", caller.type.name, - ", Method=", caller.name, - ", Signature=", caller.signature.str(), - "]"); - enumIterator = ++enumIterator; +size_t CorProfiler::CallTarget_RequestRejitForModule(ModuleID module_id, ModuleMetadata* module_metadata, + const std::vector& filtered_integrations) +{ + auto _ = trace::Stats::Instance()->CallTargetRequestRejitMeasure(); + + auto metadata_import = module_metadata->metadata_import; + const auto assembly_metadata = GetAssemblyImportMetadata(module_metadata->assembly_import); + + std::vector vtModules; + std::vector vtMethodDefs; + + for (const IntegrationMethod& integration : filtered_integrations) + { + + // If the integration is not for the current assembly we skip. + if (integration.replacement.target_method.assembly.name != module_metadata->assemblyName) + { + continue; + } + + // If the integration mode is not CallTarget we skip. + if (integration.replacement.wrapper_method.action != calltarget_modification_action) + { + continue; + } + + // Check min version + if (integration.replacement.target_method.min_version > assembly_metadata.version) + { + continue; + } + + // Check max version + if (integration.replacement.target_method.max_version < assembly_metadata.version) + { + continue; + } + + // We are in the right module, so we try to load the mdTypeDef from the integration target type name. + mdTypeDef typeDef = mdTypeDefNil; + auto foundType = FindTypeDefByName(integration.replacement.target_method.type_name, + module_metadata->assemblyName, metadata_import, typeDef); + + if (!foundType) + { + continue; + } + + // Now we enumerate all methods with the same target method name. (All overloads of the method) + auto enumMethods = Enumerator( + [metadata_import, integration, typeDef](HCORENUM* ptr, mdMethodDef arr[], ULONG max, + ULONG* cnt) -> HRESULT { + return metadata_import->EnumMethodsWithName( + ptr, typeDef, integration.replacement.target_method.method_name.c_str(), arr, max, cnt); + }, + [metadata_import](HCORENUM ptr) -> void { metadata_import->CloseEnum(ptr); }); + + auto enumIterator = enumMethods.begin(); + while (enumIterator != enumMethods.end()) + { + auto methodDef = *enumIterator; + + // Extract the function info from the mdMethodDef + const auto caller = GetFunctionInfo(module_metadata->metadata_import, methodDef); + if (!caller.IsValid()) + { + Warn("The caller for the methoddef: ", TokenStr(&methodDef), " is not valid!"); + enumIterator = ++enumIterator; + continue; + } + + // We create a new function info into the heap from the caller functionInfo in the stack, to be used later + // in the ReJIT process + auto functionInfo = new FunctionInfo(caller); + auto hr = functionInfo->method_signature.TryParse(); + if (FAILED(hr)) + { + Warn("The method signature: ", functionInfo->method_signature.str(), " cannot be parsed."); + delete functionInfo; + enumIterator = ++enumIterator; + continue; + } + + // Compare if the current mdMethodDef contains the same number of arguments as the instrumentation target + const auto numOfArgs = functionInfo->method_signature.NumberOfArguments(); + if (numOfArgs != integration.replacement.target_method.signature_types.size() - 1) + { + Debug("The caller for the methoddef: ", integration.replacement.target_method.method_name, + " doesn't have the right number of arguments."); + delete functionInfo; + enumIterator = ++enumIterator; + continue; + } + + // Compare each mdMethodDef argument type to the instrumentation target + bool argumentsMismatch = false; + const auto methodArguments = functionInfo->method_signature.GetMethodArguments(); + Debug("Comparing signature for method: ", integration.replacement.target_method.type_name, ".", + integration.replacement.target_method.method_name); + for (unsigned int i = 0; i < numOfArgs; i++) + { + const auto argumentTypeName = methodArguments[i].GetTypeTokName(metadata_import); + const auto integrationArgumentTypeName = integration.replacement.target_method.signature_types[i + 1]; + Debug(" -> ", argumentTypeName, " = ", integrationArgumentTypeName); + if (argumentTypeName != integrationArgumentTypeName && integrationArgumentTypeName != WStr("_")) + { + argumentsMismatch = true; + break; + } + } + if (argumentsMismatch) + { + Debug("The caller for the methoddef: ", integration.replacement.target_method.method_name, + " doesn't have the right type of arguments."); + delete functionInfo; + enumIterator = ++enumIterator; + continue; + } + + // As we are in the right method, we gather all information we need and stored it in to the ReJIT handler. + auto moduleHandler = rejit_handler->GetOrAddModule(module_id); + moduleHandler->SetModuleMetadata(module_metadata); + auto methodHandler = moduleHandler->GetOrAddMethod(methodDef); + methodHandler->SetFunctionInfo(functionInfo); + methodHandler->SetMethodReplacement(new MethodReplacement(integration.replacement)); + + // Store module_id and methodDef to request the ReJIT after analyzing all integrations. + vtModules.push_back(module_id); + vtMethodDefs.push_back(methodDef); + + bool caller_assembly_is_domain_neutral = runtime_information_.is_desktop() && corlib_module_loaded && + module_metadata->app_domain_id == corlib_app_domain_id; + + Info("Enqueue for ReJIT [ModuleId=", module_id, ", MethodDef=", TokenStr(&methodDef), + ", AppDomainId=", module_metadata->app_domain_id, + ", IsDomainNeutral=", caller_assembly_is_domain_neutral, ", Assembly=", module_metadata->assemblyName, + ", Type=", caller.type.name, ", Method=", caller.name, ", Signature=", caller.signature.str(), "]"); + enumIterator = ++enumIterator; + } } - } - // Request the ReJIT for all integrations found in the module. - if (!vtMethodDefs.empty()) { - this->rejit_handler->EnqueueForRejit(vtMethodDefs.size(), vtModules.data(), vtMethodDefs.data()); - } + // Request the ReJIT for all integrations found in the module. + if (!vtMethodDefs.empty()) + { + this->rejit_handler->EnqueueForRejit(vtMethodDefs.size(), vtModules.data(), vtMethodDefs.data()); + } - // We return the number of ReJIT requests - return vtMethodDefs.size(); + // We return the number of ReJIT requests + return vtMethodDefs.size(); } /// -/// Rewrite the target method body with the calltarget implementation. (This is function is triggered by the ReJIT handler) -/// Resulting code structure: +/// Rewrite the target method body with the calltarget implementation. (This is function is triggered by the ReJIT +/// handler) Resulting code structure: /// -/// - Add locals for TReturn (if non-void method), CallTargetState, CallTargetReturn/CallTargetReturn, Exception +/// - Add locals for TReturn (if non-void method), CallTargetState, CallTargetReturn/CallTargetReturn, +/// Exception /// - Initialize locals /// /// try @@ -2869,7 +3016,8 @@ size_t CorProfiler::CallTarget_RequestRejitForModule(ModuleID module_id, ModuleM /// } /// /// - Execute original method instructions -/// * All RET instructions are replaced with a LEAVE_S. If non-void method, the value on the stack is first stored in the TReturn local. +/// * All RET instructions are replaced with a LEAVE_S. If non-void method, the value on the stack is first stored +/// in the TReturn local. /// } /// catch (Exception) /// { @@ -2881,7 +3029,8 @@ size_t CorProfiler::CallTarget_RequestRejitForModule(ModuleID module_id, ModuleM /// { /// try /// { -/// - Invoke EndMethod with object instance (or null if static method), TReturn local (if non-void method), CallTargetState local, and Exception local +/// - Invoke EndMethod with object instance (or null if static method), TReturn local (if non-void method), +/// CallTargetState local, and Exception local /// - Store result into CallTargetReturn/CallTargetReturn local /// - If non-void method, store CallTargetReturn.GetReturnValue() into TReturn local /// } @@ -2897,410 +3046,451 @@ size_t CorProfiler::CallTarget_RequestRejitForModule(ModuleID module_id, ModuleM /// Module ReJIT handler representation /// Method ReJIT handler representation /// Result of the rewriting -HRESULT CorProfiler::CallTarget_RewriterCallback(RejitHandlerModule* moduleHandler, RejitHandlerModuleMethod* methodHandler) { - auto _ = trace::Stats::Instance()->CallTargetRewriterCallbackMeasure(); - - ModuleID module_id = moduleHandler->GetModuleId(); - ModuleMetadata* module_metadata = moduleHandler->GetModuleMetadata(); - FunctionInfo* caller = methodHandler->GetFunctionInfo(); - CallTargetTokens* callTargetTokens = module_metadata->GetCallTargetTokens(); - mdToken function_token = caller->id; - FunctionMethodArgument retFuncArg = caller->method_signature.GetRet(); - MethodReplacement* method_replacement = methodHandler->GetMethodReplacement(); - unsigned int retFuncElementType; - int retTypeFlags = retFuncArg.GetTypeFlags(retFuncElementType); - bool isVoid = (retTypeFlags & TypeFlagVoid) > 0; - bool isStatic = !(caller->method_signature.CallingConvention() & IMAGE_CEE_CS_CALLCONV_HASTHIS); - std::vector methodArguments = caller->method_signature.GetMethodArguments(); - int numArgs = caller->method_signature.NumberOfArguments(); - auto metaEmit = module_metadata->metadata_emit; - auto metaImport = module_metadata->metadata_import; - - // *** Get all references to the wrapper type - mdMemberRef wrapper_method_ref = mdMemberRefNil; - mdTypeRef wrapper_type_ref = mdTypeRefNil; - GetWrapperMethodRef(module_metadata, module_id, *method_replacement, wrapper_method_ref, wrapper_type_ref); - - Debug("*** CallTarget_RewriterCallback() Start: ", caller->type.name, ".", caller->name, - "() [IsVoid=", isVoid, - ", IsStatic=", isStatic, - ", IntegrationType=", method_replacement->wrapper_method.type_name, - ", Arguments=", numArgs, - "]"); - - // First we check if the managed profiler has not been loaded yet - if (!ProfilerAssemblyIsLoadedIntoAppDomain(module_metadata->app_domain_id)) { - Warn("*** CallTarget_RewriterCallback() skipping method: Method replacement found but the managed profiler has not yet been loaded into AppDomain with id=", - module_metadata->app_domain_id, " token=", function_token, " caller_name=", caller->type.name, ".", caller->name, "()"); - return S_FALSE; - } +HRESULT CorProfiler::CallTarget_RewriterCallback(RejitHandlerModule* moduleHandler, + RejitHandlerModuleMethod* methodHandler) +{ + auto _ = trace::Stats::Instance()->CallTargetRewriterCallbackMeasure(); + + ModuleID module_id = moduleHandler->GetModuleId(); + ModuleMetadata* module_metadata = moduleHandler->GetModuleMetadata(); + FunctionInfo* caller = methodHandler->GetFunctionInfo(); + CallTargetTokens* callTargetTokens = module_metadata->GetCallTargetTokens(); + mdToken function_token = caller->id; + FunctionMethodArgument retFuncArg = caller->method_signature.GetRet(); + MethodReplacement* method_replacement = methodHandler->GetMethodReplacement(); + unsigned int retFuncElementType; + int retTypeFlags = retFuncArg.GetTypeFlags(retFuncElementType); + bool isVoid = (retTypeFlags & TypeFlagVoid) > 0; + bool isStatic = !(caller->method_signature.CallingConvention() & IMAGE_CEE_CS_CALLCONV_HASTHIS); + std::vector methodArguments = caller->method_signature.GetMethodArguments(); + int numArgs = caller->method_signature.NumberOfArguments(); + auto metaEmit = module_metadata->metadata_emit; + auto metaImport = module_metadata->metadata_import; + + // *** Get all references to the wrapper type + mdMemberRef wrapper_method_ref = mdMemberRefNil; + mdTypeRef wrapper_type_ref = mdTypeRefNil; + GetWrapperMethodRef(module_metadata, module_id, *method_replacement, wrapper_method_ref, wrapper_type_ref); + + Debug("*** CallTarget_RewriterCallback() Start: ", caller->type.name, ".", caller->name, "() [IsVoid=", isVoid, + ", IsStatic=", isStatic, ", IntegrationType=", method_replacement->wrapper_method.type_name, + ", Arguments=", numArgs, "]"); + + // First we check if the managed profiler has not been loaded yet + if (!ProfilerAssemblyIsLoadedIntoAppDomain(module_metadata->app_domain_id)) + { + Warn("*** CallTarget_RewriterCallback() skipping method: Method replacement found but the managed profiler has " + "not yet been loaded into AppDomain with id=", + module_metadata->app_domain_id, " token=", function_token, " caller_name=", caller->type.name, ".", + caller->name, "()"); + return S_FALSE; + } - // *** Create rewriter - ILRewriter rewriter(this->info_, methodHandler->GetFunctionControl(), module_id, function_token); - bool modified = false; - auto hr = rewriter.Import(); - if (FAILED(hr)) { - Warn("*** CallTarget_RewriterCallback(): Call to ILRewriter.Import() failed for ", module_id, " ", function_token); - return S_FALSE; - } + // *** Create rewriter + ILRewriter rewriter(this->info_, methodHandler->GetFunctionControl(), module_id, function_token); + bool modified = false; + auto hr = rewriter.Import(); + if (FAILED(hr)) + { + Warn("*** CallTarget_RewriterCallback(): Call to ILRewriter.Import() failed for ", module_id, " ", + function_token); + return S_FALSE; + } - // *** Store the original il code text if the dump_il option is enabled. - std::string original_code; - if (dump_il_rewrite_enabled) { - original_code = GetILCodes( - "*** CallTarget_RewriterCallback(): Original Code: ", &rewriter, - *caller, module_metadata); - } + // *** Store the original il code text if the dump_il option is enabled. + std::string original_code; + if (dump_il_rewrite_enabled) + { + original_code = + GetILCodes("*** CallTarget_RewriterCallback(): Original Code: ", &rewriter, *caller, module_metadata); + } - // *** Create the rewriter wrapper helper - ILRewriterWrapper reWriterWrapper(&rewriter); - reWriterWrapper.SetILPosition(rewriter.GetILList()->m_pNext); - - // *** Modify the Local Var Signature of the method and initialize the new local vars - ULONG callTargetStateIndex = static_cast(ULONG_MAX); - ULONG exceptionIndex = static_cast(ULONG_MAX); - ULONG callTargetReturnIndex = static_cast(ULONG_MAX); - ULONG returnValueIndex = static_cast(ULONG_MAX); - mdToken callTargetStateToken = mdTokenNil; - mdToken exceptionToken = mdTokenNil; - mdToken callTargetReturnToken = mdTokenNil; - ILInstr* firstInstruction; - callTargetTokens->ModifyLocalSigAndInitialize(&reWriterWrapper, caller, - &callTargetStateIndex, &exceptionIndex, - &callTargetReturnIndex, &returnValueIndex, - &callTargetStateToken, - &exceptionToken, &callTargetReturnToken, &firstInstruction); - - // *** - // BEGIN METHOD PART - // *** - - // *** Load instance into the stack (if not static) - if (isStatic) { - if (caller->type.valueType) { - // Static methods in a ValueType can't be instrumented. - // In the future this can be supported by adding a local for the valuetype and initialize it to the default value. - // After the signature modification we need to emit the following IL to initialize and load into the stack. - // ldloca.s [localIndex] - // initobj [valueType] - // ldloc.s [localIndex] - Warn("*** CallTarget_RewriterCallback(): Static methods in a ValueType cannot be instrumented. "); - return S_FALSE; - } - reWriterWrapper.LoadNull(); - } else { - reWriterWrapper.LoadArgument(0); - if (caller->type.valueType) { - if (caller->type.type_spec != mdTypeSpecNil) { - reWriterWrapper.LoadObj(caller->type.type_spec); - } - else if (!caller->type.isGeneric) { - reWriterWrapper.LoadObj(caller->type.id); - } else { - // Generic struct instrumentation is not supported - // IMetaDataImport::GetMemberProps and IMetaDataImport::GetMemberRefProps returns - // The parent token as mdTypeDef and not as a mdTypeSpec - // that's because the method definition is stored in the mdTypeDef - // The problem is that we don't have the exact Spec of that generic - // We can't emit LoadObj or Box because that would result in an invalid IL. - // This problem doesn't occur on a class type because we can always relay in the - // object type. - return S_FALSE; - } + // *** Create the rewriter wrapper helper + ILRewriterWrapper reWriterWrapper(&rewriter); + reWriterWrapper.SetILPosition(rewriter.GetILList()->m_pNext); + + // *** Modify the Local Var Signature of the method and initialize the new local vars + ULONG callTargetStateIndex = static_cast(ULONG_MAX); + ULONG exceptionIndex = static_cast(ULONG_MAX); + ULONG callTargetReturnIndex = static_cast(ULONG_MAX); + ULONG returnValueIndex = static_cast(ULONG_MAX); + mdToken callTargetStateToken = mdTokenNil; + mdToken exceptionToken = mdTokenNil; + mdToken callTargetReturnToken = mdTokenNil; + ILInstr* firstInstruction; + callTargetTokens->ModifyLocalSigAndInitialize(&reWriterWrapper, caller, &callTargetStateIndex, &exceptionIndex, + &callTargetReturnIndex, &returnValueIndex, &callTargetStateToken, + &exceptionToken, &callTargetReturnToken, &firstInstruction); + + // *** + // BEGIN METHOD PART + // *** + + // *** Load instance into the stack (if not static) + if (isStatic) + { + if (caller->type.valueType) + { + // Static methods in a ValueType can't be instrumented. + // In the future this can be supported by adding a local for the valuetype and initialize it to the default + // value. After the signature modification we need to emit the following IL to initialize and load into the + // stack. + // ldloca.s [localIndex] + // initobj [valueType] + // ldloc.s [localIndex] + Warn("*** CallTarget_RewriterCallback(): Static methods in a ValueType cannot be instrumented. "); + return S_FALSE; + } + reWriterWrapper.LoadNull(); + } + else + { + reWriterWrapper.LoadArgument(0); + if (caller->type.valueType) + { + if (caller->type.type_spec != mdTypeSpecNil) + { + reWriterWrapper.LoadObj(caller->type.type_spec); + } + else if (!caller->type.isGeneric) + { + reWriterWrapper.LoadObj(caller->type.id); + } + else + { + // Generic struct instrumentation is not supported + // IMetaDataImport::GetMemberProps and IMetaDataImport::GetMemberRefProps returns + // The parent token as mdTypeDef and not as a mdTypeSpec + // that's because the method definition is stored in the mdTypeDef + // The problem is that we don't have the exact Spec of that generic + // We can't emit LoadObj or Box because that would result in an invalid IL. + // This problem doesn't occur on a class type because we can always relay in the + // object type. + return S_FALSE; + } + } } - } - // *** Load the method arguments to the stack - unsigned elementType; - if (numArgs < FASTPATH_COUNT) { - // Load the arguments directly (FastPath) - for (int i = 0; i < numArgs; i++) { - reWriterWrapper.LoadArgument(i + (isStatic ? 0 : 1)); - auto argTypeFlags = methodArguments[i].GetTypeFlags(elementType); - if (argTypeFlags & TypeFlagByRef) { - Warn( - "*** CallTarget_RewriterCallback(): Methods with ref parameters " - "cannot be instrumented. "); - return S_FALSE; - } - } - } else { - // Load the arguments inside an object array (SlowPath) - reWriterWrapper.CreateArray(callTargetTokens->GetObjectTypeRef(), numArgs); - for (int i = 0; i < numArgs; i++) { - reWriterWrapper.BeginLoadValueIntoArray(i); - reWriterWrapper.LoadArgument(i + (isStatic ? 0 : 1)); - auto argTypeFlags = methodArguments[i].GetTypeFlags(elementType); - if (argTypeFlags & TypeFlagByRef) { - Warn( - "*** CallTarget_RewriterCallback(): Methods with ref parameters " - "cannot be instrumented. "); - return S_FALSE; - } - if (argTypeFlags & TypeFlagBoxedType) { - auto tok = methodArguments[i].GetTypeTok( - metaEmit, callTargetTokens->GetCorLibAssemblyRef()); - if (tok == mdTokenNil) { - return S_FALSE; + // *** Load the method arguments to the stack + unsigned elementType; + if (numArgs < FASTPATH_COUNT) + { + // Load the arguments directly (FastPath) + for (int i = 0; i < numArgs; i++) + { + reWriterWrapper.LoadArgument(i + (isStatic ? 0 : 1)); + auto argTypeFlags = methodArguments[i].GetTypeFlags(elementType); + if (argTypeFlags & TypeFlagByRef) + { + Warn("*** CallTarget_RewriterCallback(): Methods with ref parameters " + "cannot be instrumented. "); + return S_FALSE; + } + } + } + else + { + // Load the arguments inside an object array (SlowPath) + reWriterWrapper.CreateArray(callTargetTokens->GetObjectTypeRef(), numArgs); + for (int i = 0; i < numArgs; i++) + { + reWriterWrapper.BeginLoadValueIntoArray(i); + reWriterWrapper.LoadArgument(i + (isStatic ? 0 : 1)); + auto argTypeFlags = methodArguments[i].GetTypeFlags(elementType); + if (argTypeFlags & TypeFlagByRef) + { + Warn("*** CallTarget_RewriterCallback(): Methods with ref parameters " + "cannot be instrumented. "); + return S_FALSE; + } + if (argTypeFlags & TypeFlagBoxedType) + { + auto tok = methodArguments[i].GetTypeTok(metaEmit, callTargetTokens->GetCorLibAssemblyRef()); + if (tok == mdTokenNil) + { + return S_FALSE; + } + reWriterWrapper.Box(tok); + } + reWriterWrapper.EndLoadValueIntoArray(); } - reWriterWrapper.Box(tok); - } - reWriterWrapper.EndLoadValueIntoArray(); } - } - // *** Emit BeginMethod call - if (debug_logging_enabled) { - Debug("Caller Type.Id: ", HexStr(&caller->type.id, sizeof(mdToken))); - Debug("Caller Type.IsGeneric: ", caller->type.isGeneric); - Debug("Caller Type.IsValid: ", caller->type.IsValid()); - Debug("Caller Type.Name: ", caller->type.name); - Debug("Caller Type.TokenType: ", caller->type.token_type); - Debug("Caller Type.Spec: ", HexStr(&caller->type.type_spec, sizeof(mdTypeSpec))); - Debug("Caller Type.ValueType: ", caller->type.valueType); - // - if (caller->type.extend_from != nullptr) { - Debug("Caller Type Extend From.Id: ", HexStr(&caller->type.extend_from->id, sizeof(mdToken))); - Debug("Caller Type Extend From.IsGeneric: ", caller->type.extend_from->isGeneric); - Debug("Caller Type Extend From.IsValid: ", caller->type.extend_from->IsValid()); - Debug("Caller Type Extend From.Name: ", caller->type.extend_from->name); - Debug("Caller Type Extend From.TokenType: ", caller->type.extend_from->token_type); - Debug("Caller Type Extend From.Spec: ", HexStr(&caller->type.extend_from->type_spec, sizeof(mdTypeSpec))); - Debug("Caller Type Extend From.ValueType: ", caller->type.extend_from->valueType); - } - // - if (caller->type.parent_type != nullptr) { - Debug("Caller ParentType.Id: ", HexStr(&caller->type.parent_type->id, sizeof(mdToken))); - Debug("Caller ParentType.IsGeneric: ", caller->type.parent_type->isGeneric); - Debug("Caller ParentType.IsValid: ", caller->type.parent_type->IsValid()); - Debug("Caller ParentType.Name: ", caller->type.parent_type->name); - Debug("Caller ParentType.TokenType: ", caller->type.parent_type->token_type); - Debug("Caller ParentType.Spec: ", HexStr(&caller->type.parent_type->type_spec, sizeof(mdTypeSpec))); - Debug("Caller ParentType.ValueType: ", caller->type.parent_type->valueType); - } - } + // *** Emit BeginMethod call + if (debug_logging_enabled) + { + Debug("Caller Type.Id: ", HexStr(&caller->type.id, sizeof(mdToken))); + Debug("Caller Type.IsGeneric: ", caller->type.isGeneric); + Debug("Caller Type.IsValid: ", caller->type.IsValid()); + Debug("Caller Type.Name: ", caller->type.name); + Debug("Caller Type.TokenType: ", caller->type.token_type); + Debug("Caller Type.Spec: ", HexStr(&caller->type.type_spec, sizeof(mdTypeSpec))); + Debug("Caller Type.ValueType: ", caller->type.valueType); + // + if (caller->type.extend_from != nullptr) + { + Debug("Caller Type Extend From.Id: ", HexStr(&caller->type.extend_from->id, sizeof(mdToken))); + Debug("Caller Type Extend From.IsGeneric: ", caller->type.extend_from->isGeneric); + Debug("Caller Type Extend From.IsValid: ", caller->type.extend_from->IsValid()); + Debug("Caller Type Extend From.Name: ", caller->type.extend_from->name); + Debug("Caller Type Extend From.TokenType: ", caller->type.extend_from->token_type); + Debug("Caller Type Extend From.Spec: ", HexStr(&caller->type.extend_from->type_spec, sizeof(mdTypeSpec))); + Debug("Caller Type Extend From.ValueType: ", caller->type.extend_from->valueType); + } + // + if (caller->type.parent_type != nullptr) + { + Debug("Caller ParentType.Id: ", HexStr(&caller->type.parent_type->id, sizeof(mdToken))); + Debug("Caller ParentType.IsGeneric: ", caller->type.parent_type->isGeneric); + Debug("Caller ParentType.IsValid: ", caller->type.parent_type->IsValid()); + Debug("Caller ParentType.Name: ", caller->type.parent_type->name); + Debug("Caller ParentType.TokenType: ", caller->type.parent_type->token_type); + Debug("Caller ParentType.Spec: ", HexStr(&caller->type.parent_type->type_spec, sizeof(mdTypeSpec))); + Debug("Caller ParentType.ValueType: ", caller->type.parent_type->valueType); + } + } - ILInstr* beginCallInstruction; - hr = callTargetTokens->WriteBeginMethod(&reWriterWrapper, wrapper_type_ref, &caller->type, methodArguments, &beginCallInstruction); - if (FAILED(hr)) { - // Error message is written to the log in WriteBeginMethod. - return S_FALSE; - } - reWriterWrapper.StLocal(callTargetStateIndex); - ILInstr* pStateLeaveToBeginOriginalMethodInstr = reWriterWrapper.CreateInstr(CEE_LEAVE_S); - - // *** BeginMethod call catch - ILInstr* beginMethodCatchFirstInstr = nullptr; - callTargetTokens->WriteLogException(&reWriterWrapper, wrapper_type_ref, &caller->type, &beginMethodCatchFirstInstr); - ILInstr* beginMethodCatchLeaveInstr = reWriterWrapper.CreateInstr(CEE_LEAVE_S); - - // *** BeginMethod exception handling clause - EHClause beginMethodExClause{}; - beginMethodExClause.m_Flags = COR_ILEXCEPTION_CLAUSE_NONE; - beginMethodExClause.m_pTryBegin = firstInstruction; - beginMethodExClause.m_pTryEnd = beginMethodCatchFirstInstr; - beginMethodExClause.m_pHandlerBegin = beginMethodCatchFirstInstr; - beginMethodExClause.m_pHandlerEnd = beginMethodCatchLeaveInstr; - beginMethodExClause.m_ClassToken = callTargetTokens->GetExceptionTypeRef(); - - // *** - // METHOD EXECUTION - // *** - ILInstr* beginOriginalMethodInstr = reWriterWrapper.GetCurrentILInstr(); - pStateLeaveToBeginOriginalMethodInstr->m_pTarget = beginOriginalMethodInstr; - beginMethodCatchLeaveInstr->m_pTarget = beginOriginalMethodInstr; - - // *** - // ENDING OF THE METHOD EXECUTION - // *** - - // *** Create return instruction and insert it at the end - ILInstr* methodReturnInstr = rewriter.NewILInstr(); - methodReturnInstr->m_opcode = CEE_RET; - rewriter.InsertAfter(rewriter.GetILList()->m_pPrev, methodReturnInstr); - reWriterWrapper.SetILPosition(methodReturnInstr); - - // *** - // EXCEPTION CATCH - // *** - ILInstr* startExceptionCatch = reWriterWrapper.StLocal(exceptionIndex); - reWriterWrapper.SetILPosition(methodReturnInstr); - ILInstr* rethrowInstr = reWriterWrapper.Rethrow(); - - // *** - // EXCEPTION FINALLY / END METHOD PART - // *** - ILInstr* endMethodTryStartInstr; - - // *** Load instance into the stack (if not static) - if (isStatic) { - if (caller->type.valueType) { - // Static methods in a ValueType can't be instrumented. - // In the future this can be supported by adding a local for the valuetype - // and initialize it to the default value. After the signature - // modification we need to emit the following IL to initialize and load - // into the stack. - // ldloca.s [localIndex] - // initobj [valueType] - // ldloc.s [localIndex] - Warn( - "CallTarget_RewriterCallback: Static methods in a ValueType cannot " - "be instrumented. "); - return S_FALSE; - } - endMethodTryStartInstr = reWriterWrapper.LoadNull(); - } else { - endMethodTryStartInstr = reWriterWrapper.LoadArgument(0); - if (caller->type.valueType) { - if (caller->type.type_spec != mdTypeSpecNil) { - reWriterWrapper.LoadObj(caller->type.type_spec); - } else if (!caller->type.isGeneric) { - reWriterWrapper.LoadObj(caller->type.id); - } else { - // Generic struct instrumentation is not supported - // IMetaDataImport::GetMemberProps and IMetaDataImport::GetMemberRefProps returns - // The parent token as mdTypeDef and not as a mdTypeSpec - // that's because the method definition is stored in the mdTypeDef - // The problem is that we don't have the exact Spec of that generic - // We can't emit LoadObj or Box because that would result in an invalid IL. - // This problem doesn't occur on a class type because we can always relay in the - // object type. + ILInstr* beginCallInstruction; + hr = callTargetTokens->WriteBeginMethod(&reWriterWrapper, wrapper_type_ref, &caller->type, methodArguments, + &beginCallInstruction); + if (FAILED(hr)) + { + // Error message is written to the log in WriteBeginMethod. return S_FALSE; - } } - } + reWriterWrapper.StLocal(callTargetStateIndex); + ILInstr* pStateLeaveToBeginOriginalMethodInstr = reWriterWrapper.CreateInstr(CEE_LEAVE_S); + + // *** BeginMethod call catch + ILInstr* beginMethodCatchFirstInstr = nullptr; + callTargetTokens->WriteLogException(&reWriterWrapper, wrapper_type_ref, &caller->type, &beginMethodCatchFirstInstr); + ILInstr* beginMethodCatchLeaveInstr = reWriterWrapper.CreateInstr(CEE_LEAVE_S); + + // *** BeginMethod exception handling clause + EHClause beginMethodExClause{}; + beginMethodExClause.m_Flags = COR_ILEXCEPTION_CLAUSE_NONE; + beginMethodExClause.m_pTryBegin = firstInstruction; + beginMethodExClause.m_pTryEnd = beginMethodCatchFirstInstr; + beginMethodExClause.m_pHandlerBegin = beginMethodCatchFirstInstr; + beginMethodExClause.m_pHandlerEnd = beginMethodCatchLeaveInstr; + beginMethodExClause.m_ClassToken = callTargetTokens->GetExceptionTypeRef(); + + // *** + // METHOD EXECUTION + // *** + ILInstr* beginOriginalMethodInstr = reWriterWrapper.GetCurrentILInstr(); + pStateLeaveToBeginOriginalMethodInstr->m_pTarget = beginOriginalMethodInstr; + beginMethodCatchLeaveInstr->m_pTarget = beginOriginalMethodInstr; + + // *** + // ENDING OF THE METHOD EXECUTION + // *** + + // *** Create return instruction and insert it at the end + ILInstr* methodReturnInstr = rewriter.NewILInstr(); + methodReturnInstr->m_opcode = CEE_RET; + rewriter.InsertAfter(rewriter.GetILList()->m_pPrev, methodReturnInstr); + reWriterWrapper.SetILPosition(methodReturnInstr); + + // *** + // EXCEPTION CATCH + // *** + ILInstr* startExceptionCatch = reWriterWrapper.StLocal(exceptionIndex); + reWriterWrapper.SetILPosition(methodReturnInstr); + ILInstr* rethrowInstr = reWriterWrapper.Rethrow(); + + // *** + // EXCEPTION FINALLY / END METHOD PART + // *** + ILInstr* endMethodTryStartInstr; + + // *** Load instance into the stack (if not static) + if (isStatic) + { + if (caller->type.valueType) + { + // Static methods in a ValueType can't be instrumented. + // In the future this can be supported by adding a local for the valuetype + // and initialize it to the default value. After the signature + // modification we need to emit the following IL to initialize and load + // into the stack. + // ldloca.s [localIndex] + // initobj [valueType] + // ldloc.s [localIndex] + Warn("CallTarget_RewriterCallback: Static methods in a ValueType cannot " + "be instrumented. "); + return S_FALSE; + } + endMethodTryStartInstr = reWriterWrapper.LoadNull(); + } + else + { + endMethodTryStartInstr = reWriterWrapper.LoadArgument(0); + if (caller->type.valueType) + { + if (caller->type.type_spec != mdTypeSpecNil) + { + reWriterWrapper.LoadObj(caller->type.type_spec); + } + else if (!caller->type.isGeneric) + { + reWriterWrapper.LoadObj(caller->type.id); + } + else + { + // Generic struct instrumentation is not supported + // IMetaDataImport::GetMemberProps and IMetaDataImport::GetMemberRefProps returns + // The parent token as mdTypeDef and not as a mdTypeSpec + // that's because the method definition is stored in the mdTypeDef + // The problem is that we don't have the exact Spec of that generic + // We can't emit LoadObj or Box because that would result in an invalid IL. + // This problem doesn't occur on a class type because we can always relay in the + // object type. + return S_FALSE; + } + } + } - // *** Load the return value is is not void - if (!isVoid) { - reWriterWrapper.LoadLocal(returnValueIndex); - } + // *** Load the return value is is not void + if (!isVoid) + { + reWriterWrapper.LoadLocal(returnValueIndex); + } - reWriterWrapper.LoadLocal(exceptionIndex); - reWriterWrapper.LoadLocal(callTargetStateIndex); - - ILInstr* endMethodCallInstr; - if (isVoid) { - callTargetTokens->WriteEndVoidReturnMemberRef( - &reWriterWrapper, wrapper_type_ref, &caller->type, &endMethodCallInstr); - } else { - callTargetTokens->WriteEndReturnMemberRef(&reWriterWrapper, - wrapper_type_ref, &caller->type, - &retFuncArg, &endMethodCallInstr); - } - reWriterWrapper.StLocal(callTargetReturnIndex); + reWriterWrapper.LoadLocal(exceptionIndex); + reWriterWrapper.LoadLocal(callTargetStateIndex); - if (!isVoid) { - ILInstr* callTargetReturnGetReturnInstr; - reWriterWrapper.LoadLocalAddress(callTargetReturnIndex); - callTargetTokens->WriteCallTargetReturnGetReturnValue(&reWriterWrapper, callTargetReturnToken, &callTargetReturnGetReturnInstr); - reWriterWrapper.StLocal(returnValueIndex); - } + ILInstr* endMethodCallInstr; + if (isVoid) + { + callTargetTokens->WriteEndVoidReturnMemberRef(&reWriterWrapper, wrapper_type_ref, &caller->type, + &endMethodCallInstr); + } + else + { + callTargetTokens->WriteEndReturnMemberRef(&reWriterWrapper, wrapper_type_ref, &caller->type, &retFuncArg, + &endMethodCallInstr); + } + reWriterWrapper.StLocal(callTargetReturnIndex); + + if (!isVoid) + { + ILInstr* callTargetReturnGetReturnInstr; + reWriterWrapper.LoadLocalAddress(callTargetReturnIndex); + callTargetTokens->WriteCallTargetReturnGetReturnValue(&reWriterWrapper, callTargetReturnToken, + &callTargetReturnGetReturnInstr); + reWriterWrapper.StLocal(returnValueIndex); + } - ILInstr* endMethodTryLeave = reWriterWrapper.CreateInstr(CEE_LEAVE_S); - - // *** EndMethod call catch - ILInstr* endMethodCatchFirstInstr = nullptr; - callTargetTokens->WriteLogException(&reWriterWrapper, wrapper_type_ref, - &caller->type, &endMethodCatchFirstInstr); - ILInstr* endMethodCatchLeaveInstr = reWriterWrapper.CreateInstr(CEE_LEAVE_S); - - // *** EndMethod exception handling clause - EHClause endMethodExClause{}; - endMethodExClause.m_Flags = COR_ILEXCEPTION_CLAUSE_NONE; - endMethodExClause.m_pTryBegin = endMethodTryStartInstr; - endMethodExClause.m_pTryEnd = endMethodCatchFirstInstr; - endMethodExClause.m_pHandlerBegin = endMethodCatchFirstInstr; - endMethodExClause.m_pHandlerEnd = endMethodCatchLeaveInstr; - endMethodExClause.m_ClassToken = callTargetTokens->GetExceptionTypeRef(); - - // *** EndMethod leave to finally - ILInstr* endFinallyInstr = reWriterWrapper.EndFinally(); - endMethodTryLeave->m_pTarget = endFinallyInstr; - endMethodCatchLeaveInstr->m_pTarget = endFinallyInstr; - - // *** - // METHOD RETURN - // *** - - // Load the current return value from the local var - if (!isVoid) { - reWriterWrapper.LoadLocal(returnValueIndex); - } + ILInstr* endMethodTryLeave = reWriterWrapper.CreateInstr(CEE_LEAVE_S); + + // *** EndMethod call catch + ILInstr* endMethodCatchFirstInstr = nullptr; + callTargetTokens->WriteLogException(&reWriterWrapper, wrapper_type_ref, &caller->type, &endMethodCatchFirstInstr); + ILInstr* endMethodCatchLeaveInstr = reWriterWrapper.CreateInstr(CEE_LEAVE_S); + + // *** EndMethod exception handling clause + EHClause endMethodExClause{}; + endMethodExClause.m_Flags = COR_ILEXCEPTION_CLAUSE_NONE; + endMethodExClause.m_pTryBegin = endMethodTryStartInstr; + endMethodExClause.m_pTryEnd = endMethodCatchFirstInstr; + endMethodExClause.m_pHandlerBegin = endMethodCatchFirstInstr; + endMethodExClause.m_pHandlerEnd = endMethodCatchLeaveInstr; + endMethodExClause.m_ClassToken = callTargetTokens->GetExceptionTypeRef(); + + // *** EndMethod leave to finally + ILInstr* endFinallyInstr = reWriterWrapper.EndFinally(); + endMethodTryLeave->m_pTarget = endFinallyInstr; + endMethodCatchLeaveInstr->m_pTarget = endFinallyInstr; + + // *** + // METHOD RETURN + // *** + + // Load the current return value from the local var + if (!isVoid) + { + reWriterWrapper.LoadLocal(returnValueIndex); + } - // Changes all returns to a LEAVE.S - for (ILInstr* pInstr = rewriter.GetILList()->m_pNext; - pInstr != rewriter.GetILList(); pInstr = pInstr->m_pNext) { - switch (pInstr->m_opcode) { - case CEE_RET: { - if (pInstr != methodReturnInstr) { - if (!isVoid) { - reWriterWrapper.SetILPosition(pInstr); - reWriterWrapper.StLocal(returnValueIndex); - } - pInstr->m_opcode = CEE_LEAVE_S; - pInstr->m_pTarget = endFinallyInstr->m_pNext; - } - break; - } - default: - break; + // Changes all returns to a LEAVE.S + for (ILInstr* pInstr = rewriter.GetILList()->m_pNext; pInstr != rewriter.GetILList(); pInstr = pInstr->m_pNext) + { + switch (pInstr->m_opcode) + { + case CEE_RET: + { + if (pInstr != methodReturnInstr) + { + if (!isVoid) + { + reWriterWrapper.SetILPosition(pInstr); + reWriterWrapper.StLocal(returnValueIndex); + } + pInstr->m_opcode = CEE_LEAVE_S; + pInstr->m_pTarget = endFinallyInstr->m_pNext; + } + break; + } + default: + break; + } } - } - // Exception handling clauses - EHClause exClause{}; - exClause.m_Flags = COR_ILEXCEPTION_CLAUSE_NONE; - exClause.m_pTryBegin = firstInstruction; - exClause.m_pTryEnd = startExceptionCatch; - exClause.m_pHandlerBegin = startExceptionCatch; - exClause.m_pHandlerEnd = rethrowInstr; - exClause.m_ClassToken = callTargetTokens->GetExceptionTypeRef(); - - EHClause finallyClause{}; - finallyClause.m_Flags = COR_ILEXCEPTION_CLAUSE_FINALLY; - finallyClause.m_pTryBegin = firstInstruction; - finallyClause.m_pTryEnd = rethrowInstr->m_pNext; - finallyClause.m_pHandlerBegin = rethrowInstr->m_pNext; - finallyClause.m_pHandlerEnd = endFinallyInstr; - - // *** - // Update and Add exception clauses - // *** - auto ehCount = rewriter.GetEHCount(); - auto newEHClauses = new EHClause[ehCount + 4]; - for (unsigned i = 0; i < ehCount; i++) { - newEHClauses[i] = rewriter.GetEHPointer()[i]; - } + // Exception handling clauses + EHClause exClause{}; + exClause.m_Flags = COR_ILEXCEPTION_CLAUSE_NONE; + exClause.m_pTryBegin = firstInstruction; + exClause.m_pTryEnd = startExceptionCatch; + exClause.m_pHandlerBegin = startExceptionCatch; + exClause.m_pHandlerEnd = rethrowInstr; + exClause.m_ClassToken = callTargetTokens->GetExceptionTypeRef(); + + EHClause finallyClause{}; + finallyClause.m_Flags = COR_ILEXCEPTION_CLAUSE_FINALLY; + finallyClause.m_pTryBegin = firstInstruction; + finallyClause.m_pTryEnd = rethrowInstr->m_pNext; + finallyClause.m_pHandlerBegin = rethrowInstr->m_pNext; + finallyClause.m_pHandlerEnd = endFinallyInstr; + + // *** + // Update and Add exception clauses + // *** + auto ehCount = rewriter.GetEHCount(); + auto newEHClauses = new EHClause[ehCount + 4]; + for (unsigned i = 0; i < ehCount; i++) + { + newEHClauses[i] = rewriter.GetEHPointer()[i]; + } - // *** Add the new EH clauses - ehCount += 4; - newEHClauses[ehCount - 4] = beginMethodExClause; - newEHClauses[ehCount - 3] = endMethodExClause; - newEHClauses[ehCount - 2] = exClause; - newEHClauses[ehCount - 1] = finallyClause; - rewriter.SetEHClause(newEHClauses, ehCount); - - if (dump_il_rewrite_enabled) { - Info(original_code); - Info(GetILCodes("*** CallTarget_RewriterCallback(): Modified Code: ", - &rewriter, *caller, module_metadata)); - } + // *** Add the new EH clauses + ehCount += 4; + newEHClauses[ehCount - 4] = beginMethodExClause; + newEHClauses[ehCount - 3] = endMethodExClause; + newEHClauses[ehCount - 2] = exClause; + newEHClauses[ehCount - 1] = finallyClause; + rewriter.SetEHClause(newEHClauses, ehCount); + + if (dump_il_rewrite_enabled) + { + Info(original_code); + Info(GetILCodes("*** CallTarget_RewriterCallback(): Modified Code: ", &rewriter, *caller, module_metadata)); + } - hr = rewriter.Export(); + hr = rewriter.Export(); - if (FAILED(hr)) { - Warn( - "*** CallTarget_RewriterCallback(): Call to ILRewriter.Export() failed for " - "ModuleID=", - module_id, " ", function_token); - return S_FALSE; - } + if (FAILED(hr)) + { + Warn("*** CallTarget_RewriterCallback(): Call to ILRewriter.Export() failed for " + "ModuleID=", + module_id, " ", function_token); + return S_FALSE; + } - Info("*** CallTarget_RewriterCallback() Finished: ", caller->type.name, ".", - caller->name, "() [IsVoid=", isVoid, ", IsStatic=", isStatic, - ", IntegrationType=", method_replacement->wrapper_method.type_name, - ", Arguments=", numArgs, "]"); - return S_OK; + Info("*** CallTarget_RewriterCallback() Finished: ", caller->type.name, ".", caller->name, "() [IsVoid=", isVoid, + ", IsStatic=", isStatic, ", IntegrationType=", method_replacement->wrapper_method.type_name, + ", Arguments=", numArgs, "]"); + return S_OK; } -} // namespace trace +} // namespace trace diff --git a/src/Datadog.Trace.ClrProfiler.Native/cor_profiler.h b/src/Datadog.Trace.ClrProfiler.Native/cor_profiler.h index 4582620097..f89a4acaee 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/cor_profiler.h +++ b/src/Datadog.Trace.ClrProfiler.Native/cor_profiler.h @@ -1,162 +1,140 @@ #ifndef DD_CLR_PROFILER_COR_PROFILER_H_ #define DD_CLR_PROFILER_COR_PROFILER_H_ +#include "cor.h" +#include "corprof.h" #include #include -#include #include #include -#include "cor.h" -#include "corprof.h" +#include #include "cor_profiler_base.h" #include "environment_variables.h" +#include "il_rewriter.h" #include "integration.h" #include "module_metadata.h" #include "pal.h" -#include "il_rewriter.h" #include "rejit_handler.h" -namespace trace { - -class CorProfiler : public CorProfilerBase { - private: - std::atomic_bool is_attached_ = {false}; - RuntimeInformation runtime_information_; - std::vector integration_methods_; - - // Startup helper variables - bool first_jit_compilation_completed = false; - - bool instrument_domain_neutral_assemblies = false; - bool corlib_module_loaded = false; - AppDomainID corlib_app_domain_id = 0; - bool managed_profiler_loaded_domain_neutral = false; - std::unordered_set managed_profiler_loaded_app_domains; - std::unordered_set first_jit_compilation_app_domains; - bool in_azure_app_services = false; - bool is_desktop_iis = false; - bool is_net46_or_greater = false; - - // - // CallTarget Members - // - RejitHandler* rejit_handler = nullptr; - - // Cor assembly properties - AssemblyProperty corAssemblyProperty{}; - - // - // OpCodes helper - // - std::vector opcodes_names; - - // - // Module helper variables - // - std::mutex module_id_to_info_map_lock_; - std::unordered_map module_id_to_info_map_; - - // - // Helper methods - // - bool GetWrapperMethodRef(ModuleMetadata* module_metadata, - ModuleID module_id, - const MethodReplacement& method_replacement, - mdMemberRef& wrapper_method_ref, - mdTypeRef& wrapper_type_ref); - HRESULT ProcessReplacementCalls(ModuleMetadata* module_metadata, - const FunctionID function_id, - const ModuleID module_id, - const mdToken function_token, - const FunctionInfo& caller, - const std::vector method_replacements); - HRESULT ProcessInsertionCalls(ModuleMetadata* module_metadata, - const FunctionID function_id, - const ModuleID module_id, - const mdToken function_token, - const FunctionInfo& caller, - const std::vector method_replacements); - bool ProfilerAssemblyIsLoadedIntoAppDomain(AppDomainID app_domain_id); - std::string GetILCodes(const std::string& title, ILRewriter* rewriter, - const FunctionInfo& caller, - ModuleMetadata* module_metadata); - // - // Startup methods - // - HRESULT RunILStartupHook(const ComPtr&, - const ModuleID module_id, - const mdToken function_token); - HRESULT GenerateVoidILStartupMethod(const ModuleID module_id, - mdMethodDef* ret_method_token); - HRESULT AddIISPreStartInitFlags(const ModuleID module_id, - const mdToken function_token); - - // - // CallTarget Methods - // - size_t CallTarget_RequestRejitForModule( - ModuleID module_id, ModuleMetadata* module_metadata, - const std::vector& filtered_integrations); - HRESULT CallTarget_RewriterCallback(RejitHandlerModule* moduleHandler, RejitHandlerModuleMethod* methodHandler); - - public: - CorProfiler() = default; - - bool IsAttached() const; - - void GetAssemblyAndSymbolsBytes(BYTE** pAssemblyArray, int* assemblySize, - BYTE** pSymbolsArray, int* symbolsSize) const; - - // - // ICorProfilerCallback methods - // - HRESULT STDMETHODCALLTYPE - Initialize(IUnknown* cor_profiler_info_unknown) override; - - HRESULT STDMETHODCALLTYPE AssemblyLoadFinished(AssemblyID assembly_id, - HRESULT hr_status) override; - - HRESULT STDMETHODCALLTYPE ModuleLoadFinished(ModuleID module_id, - HRESULT hr_status) override; - - HRESULT STDMETHODCALLTYPE ModuleUnloadStarted(ModuleID module_id) override; - - HRESULT STDMETHODCALLTYPE - JITCompilationStarted(FunctionID function_id, BOOL is_safe_to_block) override; - - HRESULT STDMETHODCALLTYPE Shutdown() override; - - HRESULT STDMETHODCALLTYPE ProfilerDetachSucceeded() override; - - HRESULT STDMETHODCALLTYPE JITInlining(FunctionID callerId, - FunctionID calleeId, - BOOL* pfShouldInline) override; - // - // ReJIT Methods - // - - HRESULT STDMETHODCALLTYPE ReJITCompilationStarted( - FunctionID functionId, ReJITID rejitId, BOOL fIsSafeToBlock) override; - - HRESULT STDMETHODCALLTYPE - GetReJITParameters(ModuleID moduleId, mdMethodDef methodId, - ICorProfilerFunctionControl* pFunctionControl) override; - - HRESULT STDMETHODCALLTYPE ReJITCompilationFinished( - FunctionID functionId, ReJITID rejitId, HRESULT hrStatus, - BOOL fIsSafeToBlock) override; - - HRESULT STDMETHODCALLTYPE ReJITError(ModuleID moduleId, mdMethodDef methodId, - FunctionID functionId, - HRESULT hrStatus) override; - - // - // ICorProfilerCallback6 methods - // - HRESULT STDMETHODCALLTYPE GetAssemblyReferences( - const WCHAR* wszAssemblyPath, - ICorProfilerAssemblyReferenceProvider* pAsmRefProvider) override; +namespace trace +{ + +class CorProfiler : public CorProfilerBase +{ +private: + std::atomic_bool is_attached_ = {false}; + RuntimeInformation runtime_information_; + std::vector integration_methods_; + + // Startup helper variables + bool first_jit_compilation_completed = false; + + bool instrument_domain_neutral_assemblies = false; + bool corlib_module_loaded = false; + AppDomainID corlib_app_domain_id = 0; + bool managed_profiler_loaded_domain_neutral = false; + std::unordered_set managed_profiler_loaded_app_domains; + std::unordered_set first_jit_compilation_app_domains; + bool in_azure_app_services = false; + bool is_desktop_iis = false; + bool is_net46_or_greater = false; + + // + // CallTarget Members + // + RejitHandler* rejit_handler = nullptr; + + // Cor assembly properties + AssemblyProperty corAssemblyProperty{}; + + // + // OpCodes helper + // + std::vector opcodes_names; + + // + // Module helper variables + // + std::mutex module_id_to_info_map_lock_; + std::unordered_map module_id_to_info_map_; + + // + // Helper methods + // + bool GetWrapperMethodRef(ModuleMetadata* module_metadata, ModuleID module_id, + const MethodReplacement& method_replacement, mdMemberRef& wrapper_method_ref, + mdTypeRef& wrapper_type_ref); + HRESULT ProcessReplacementCalls(ModuleMetadata* module_metadata, const FunctionID function_id, + const ModuleID module_id, const mdToken function_token, const FunctionInfo& caller, + const std::vector method_replacements); + HRESULT ProcessInsertionCalls(ModuleMetadata* module_metadata, const FunctionID function_id, + const ModuleID module_id, const mdToken function_token, const FunctionInfo& caller, + const std::vector method_replacements); + bool ProfilerAssemblyIsLoadedIntoAppDomain(AppDomainID app_domain_id); + std::string GetILCodes(const std::string& title, ILRewriter* rewriter, const FunctionInfo& caller, + ModuleMetadata* module_metadata); + // + // Startup methods + // + HRESULT RunILStartupHook(const ComPtr&, const ModuleID module_id, const mdToken function_token); + HRESULT GenerateVoidILStartupMethod(const ModuleID module_id, mdMethodDef* ret_method_token); + HRESULT AddIISPreStartInitFlags(const ModuleID module_id, const mdToken function_token); + + // + // CallTarget Methods + // + size_t CallTarget_RequestRejitForModule(ModuleID module_id, ModuleMetadata* module_metadata, + const std::vector& filtered_integrations); + HRESULT CallTarget_RewriterCallback(RejitHandlerModule* moduleHandler, RejitHandlerModuleMethod* methodHandler); + +public: + CorProfiler() = default; + + bool IsAttached() const; + + void GetAssemblyAndSymbolsBytes(BYTE** pAssemblyArray, int* assemblySize, BYTE** pSymbolsArray, + int* symbolsSize) const; + + // + // ICorProfilerCallback methods + // + HRESULT STDMETHODCALLTYPE Initialize(IUnknown* cor_profiler_info_unknown) override; + + HRESULT STDMETHODCALLTYPE AssemblyLoadFinished(AssemblyID assembly_id, HRESULT hr_status) override; + + HRESULT STDMETHODCALLTYPE ModuleLoadFinished(ModuleID module_id, HRESULT hr_status) override; + + HRESULT STDMETHODCALLTYPE ModuleUnloadStarted(ModuleID module_id) override; + + HRESULT STDMETHODCALLTYPE JITCompilationStarted(FunctionID function_id, BOOL is_safe_to_block) override; + + HRESULT STDMETHODCALLTYPE Shutdown() override; + + HRESULT STDMETHODCALLTYPE ProfilerDetachSucceeded() override; + + HRESULT STDMETHODCALLTYPE JITInlining(FunctionID callerId, FunctionID calleeId, BOOL* pfShouldInline) override; + // + // ReJIT Methods + // + + HRESULT STDMETHODCALLTYPE ReJITCompilationStarted(FunctionID functionId, ReJITID rejitId, + BOOL fIsSafeToBlock) override; + + HRESULT STDMETHODCALLTYPE GetReJITParameters(ModuleID moduleId, mdMethodDef methodId, + ICorProfilerFunctionControl* pFunctionControl) override; + + HRESULT STDMETHODCALLTYPE ReJITCompilationFinished(FunctionID functionId, ReJITID rejitId, HRESULT hrStatus, + BOOL fIsSafeToBlock) override; + + HRESULT STDMETHODCALLTYPE ReJITError(ModuleID moduleId, mdMethodDef methodId, FunctionID functionId, + HRESULT hrStatus) override; + + // + // ICorProfilerCallback6 methods + // + HRESULT STDMETHODCALLTYPE GetAssemblyReferences(const WCHAR* wszAssemblyPath, + ICorProfilerAssemblyReferenceProvider* pAsmRefProvider) override; }; // Note: Generally you should not have a single, global callback implementation, @@ -165,8 +143,8 @@ class CorProfiler : public CorProfilerBase { // alternative of dealing with multiple in-process side-by-side CLR instances. // First CLR to try to load us into this process wins; so there can only be one // callback implementation created. (See ProfilerCallback::CreateObject.) -extern CorProfiler* profiler; // global reference to callback object +extern CorProfiler* profiler; // global reference to callback object -} // namespace trace +} // namespace trace -#endif // DD_CLR_PROFILER_COR_PROFILER_H_ +#endif // DD_CLR_PROFILER_COR_PROFILER_H_ diff --git a/src/Datadog.Trace.ClrProfiler.Native/cor_profiler_base.cpp b/src/Datadog.Trace.ClrProfiler.Native/cor_profiler_base.cpp index ec2f9e76aa..47001ddfca 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/cor_profiler_base.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/cor_profiler_base.cpp @@ -1,494 +1,540 @@ #include "cor_profiler_base.h" #include "logging.h" -namespace trace { +namespace trace +{ -CorProfilerBase::CorProfilerBase() : ref_count_(0), info_(nullptr) {} +CorProfilerBase::CorProfilerBase() : ref_count_(0), info_(nullptr) +{ +} -CorProfilerBase::~CorProfilerBase() { - if (this->info_ != nullptr) { - this->info_->Release(); - this->info_ = nullptr; - } +CorProfilerBase::~CorProfilerBase() +{ + if (this->info_ != nullptr) + { + this->info_->Release(); + this->info_ = nullptr; + } } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::Initialize(IUnknown *pICorProfilerInfoUnk) { - Debug("Initialize"); - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::Initialize(IUnknown* pICorProfilerInfoUnk) +{ + Debug("Initialize"); + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::Shutdown() { - Debug("Shutdown"); - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::Shutdown() +{ + Debug("Shutdown"); + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::AppDomainCreationStarted(AppDomainID appDomainId) { - Debug("AppDomainCreationStarted: ", appDomainId); - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::AppDomainCreationStarted(AppDomainID appDomainId) +{ + Debug("AppDomainCreationStarted: ", appDomainId); + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::AppDomainCreationFinished( - AppDomainID appDomainId, HRESULT hrStatus) { - Debug("AppDomainCreationFinished: ", appDomainId, " hrStatus=", hrStatus); - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::AppDomainCreationFinished(AppDomainID appDomainId, HRESULT hrStatus) +{ + Debug("AppDomainCreationFinished: ", appDomainId, " hrStatus=", hrStatus); + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::AppDomainShutdownStarted(AppDomainID appDomainId) { - Debug("AppDomainShutdownStarted: ", appDomainId); - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::AppDomainShutdownStarted(AppDomainID appDomainId) +{ + Debug("AppDomainShutdownStarted: ", appDomainId); + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::AppDomainShutdownFinished( - AppDomainID appDomainId, HRESULT hrStatus) { - Debug("AppDomainShutdownFinished: ", appDomainId, " ", hrStatus); - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::AppDomainShutdownFinished(AppDomainID appDomainId, HRESULT hrStatus) +{ + Debug("AppDomainShutdownFinished: ", appDomainId, " ", hrStatus); + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::AssemblyLoadStarted(AssemblyID assemblyId) { - Debug("AssemblyLoadStarted: ", assemblyId); - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::AssemblyLoadStarted(AssemblyID assemblyId) +{ + Debug("AssemblyLoadStarted: ", assemblyId); + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::AssemblyLoadFinished(AssemblyID assemblyId, HRESULT hrStatus) { - Debug("AssemblyLoadFinished: ", assemblyId, " ", hrStatus); - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::AssemblyLoadFinished(AssemblyID assemblyId, HRESULT hrStatus) +{ + Debug("AssemblyLoadFinished: ", assemblyId, " ", hrStatus); + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::AssemblyUnloadStarted(AssemblyID assemblyId) { - Debug("AssemblyUnloadStarted: ", assemblyId); - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::AssemblyUnloadStarted(AssemblyID assemblyId) +{ + Debug("AssemblyUnloadStarted: ", assemblyId); + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::AssemblyUnloadFinished( - AssemblyID assemblyId, HRESULT hrStatus) { - Debug("AssemblyUnloadFinished: ", assemblyId, " ", hrStatus); - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::AssemblyUnloadFinished(AssemblyID assemblyId, HRESULT hrStatus) +{ + Debug("AssemblyUnloadFinished: ", assemblyId, " ", hrStatus); + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ModuleLoadStarted(ModuleID moduleId) { - Debug("ModuleLoadStarted: ", moduleId); - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ModuleLoadStarted(ModuleID moduleId) +{ + Debug("ModuleLoadStarted: ", moduleId); + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ModuleLoadFinished(ModuleID moduleId, HRESULT hrStatus) { - Debug("ModuleLoadFinished: ", moduleId, " ", hrStatus); - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ModuleLoadFinished(ModuleID moduleId, HRESULT hrStatus) +{ + Debug("ModuleLoadFinished: ", moduleId, " ", hrStatus); + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ModuleUnloadStarted(ModuleID moduleId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ModuleUnloadStarted(ModuleID moduleId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ModuleUnloadFinished(ModuleID moduleId, HRESULT hrStatus) { - Debug("ModuleUnloadFinished: ", moduleId, " ", hrStatus); - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ModuleUnloadFinished(ModuleID moduleId, HRESULT hrStatus) +{ + Debug("ModuleUnloadFinished: ", moduleId, " ", hrStatus); + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ModuleAttachedToAssembly( - ModuleID moduleId, AssemblyID AssemblyId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ModuleAttachedToAssembly(ModuleID moduleId, AssemblyID AssemblyId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ClassLoadStarted(ClassID classId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ClassLoadStarted(ClassID classId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ClassLoadFinished(ClassID classId, - HRESULT hrStatus) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ClassLoadFinished(ClassID classId, HRESULT hrStatus) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ClassUnloadStarted(ClassID classId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ClassUnloadStarted(ClassID classId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ClassUnloadFinished(ClassID classId, HRESULT hrStatus) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ClassUnloadFinished(ClassID classId, HRESULT hrStatus) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::FunctionUnloadStarted(FunctionID functionId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::FunctionUnloadStarted(FunctionID functionId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::JITCompilationStarted( - FunctionID functionId, BOOL fIsSafeToBlock) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::JITCompilationStarted(FunctionID functionId, BOOL fIsSafeToBlock) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::JITCompilationFinished( - FunctionID functionId, HRESULT hrStatus, BOOL fIsSafeToBlock) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::JITCompilationFinished(FunctionID functionId, HRESULT hrStatus, + BOOL fIsSafeToBlock) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::JITCachedFunctionSearchStarted( - FunctionID functionId, BOOL *pbUseCachedFunction) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::JITCachedFunctionSearchStarted(FunctionID functionId, + BOOL* pbUseCachedFunction) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::JITCachedFunctionSearchFinished( - FunctionID functionId, COR_PRF_JIT_CACHE result) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::JITCachedFunctionSearchFinished(FunctionID functionId, + COR_PRF_JIT_CACHE result) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::JITFunctionPitched(FunctionID functionId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::JITFunctionPitched(FunctionID functionId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::JITInlining(FunctionID callerId, - FunctionID calleeId, - BOOL *pfShouldInline) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::JITInlining(FunctionID callerId, FunctionID calleeId, BOOL* pfShouldInline) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ThreadCreated(ThreadID threadId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ThreadCreated(ThreadID threadId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ThreadDestroyed(ThreadID threadId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ThreadDestroyed(ThreadID threadId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ThreadAssignedToOSThread( - ThreadID managedThreadId, DWORD osThreadId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ThreadAssignedToOSThread(ThreadID managedThreadId, DWORD osThreadId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::RemotingClientInvocationStarted() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RemotingClientInvocationStarted() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::RemotingClientSendingMessage(GUID *pCookie, BOOL fIsAsync) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RemotingClientSendingMessage(GUID* pCookie, BOOL fIsAsync) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::RemotingClientReceivingReply(GUID *pCookie, BOOL fIsAsync) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RemotingClientReceivingReply(GUID* pCookie, BOOL fIsAsync) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::RemotingClientInvocationFinished() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RemotingClientInvocationFinished() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::RemotingServerReceivingMessage(GUID *pCookie, BOOL fIsAsync) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RemotingServerReceivingMessage(GUID* pCookie, BOOL fIsAsync) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::RemotingServerInvocationStarted() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RemotingServerInvocationStarted() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::RemotingServerInvocationReturned() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RemotingServerInvocationReturned() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::RemotingServerSendingReply(GUID *pCookie, BOOL fIsAsync) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RemotingServerSendingReply(GUID* pCookie, BOOL fIsAsync) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::UnmanagedToManagedTransition( - FunctionID functionId, COR_PRF_TRANSITION_REASON reason) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::UnmanagedToManagedTransition(FunctionID functionId, + COR_PRF_TRANSITION_REASON reason) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ManagedToUnmanagedTransition( - FunctionID functionId, COR_PRF_TRANSITION_REASON reason) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ManagedToUnmanagedTransition(FunctionID functionId, + COR_PRF_TRANSITION_REASON reason) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::RuntimeSuspendStarted(COR_PRF_SUSPEND_REASON suspendReason) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RuntimeSuspendStarted(COR_PRF_SUSPEND_REASON suspendReason) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::RuntimeSuspendFinished() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RuntimeSuspendFinished() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::RuntimeSuspendAborted() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RuntimeSuspendAborted() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::RuntimeResumeStarted() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RuntimeResumeStarted() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::RuntimeResumeFinished() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RuntimeResumeFinished() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::RuntimeThreadSuspended(ThreadID threadId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RuntimeThreadSuspended(ThreadID threadId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::RuntimeThreadResumed(ThreadID threadId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RuntimeThreadResumed(ThreadID threadId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::MovedReferences( - ULONG cMovedObjectIDRanges, ObjectID oldObjectIDRangeStart[], - ObjectID newObjectIDRangeStart[], ULONG cObjectIDRangeLength[]) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::MovedReferences(ULONG cMovedObjectIDRanges, ObjectID oldObjectIDRangeStart[], + ObjectID newObjectIDRangeStart[], + ULONG cObjectIDRangeLength[]) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ObjectAllocated(ObjectID objectId, - ClassID classId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ObjectAllocated(ObjectID objectId, ClassID classId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ObjectsAllocatedByClass( - ULONG cClassCount, ClassID classIds[], ULONG cObjects[]) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ObjectsAllocatedByClass(ULONG cClassCount, ClassID classIds[], + ULONG cObjects[]) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ObjectReferences(ObjectID objectId, ClassID classId, - ULONG cObjectRefs, ObjectID objectRefIds[]) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ObjectReferences(ObjectID objectId, ClassID classId, ULONG cObjectRefs, + ObjectID objectRefIds[]) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::RootReferences(ULONG cRootRefs, ObjectID rootRefIds[]) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RootReferences(ULONG cRootRefs, ObjectID rootRefIds[]) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ExceptionThrown(ObjectID thrownObjectId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionThrown(ObjectID thrownObjectId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ExceptionSearchFunctionEnter(FunctionID functionId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionSearchFunctionEnter(FunctionID functionId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionSearchFunctionLeave() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionSearchFunctionLeave() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ExceptionSearchFilterEnter(FunctionID functionId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionSearchFilterEnter(FunctionID functionId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionSearchFilterLeave() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionSearchFilterLeave() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ExceptionSearchCatcherFound(FunctionID functionId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionSearchCatcherFound(FunctionID functionId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ExceptionOSHandlerEnter(UINT_PTR __unused) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionOSHandlerEnter(UINT_PTR __unused) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ExceptionOSHandlerLeave(UINT_PTR __unused) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionOSHandlerLeave(UINT_PTR __unused) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ExceptionUnwindFunctionEnter(FunctionID functionId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionUnwindFunctionEnter(FunctionID functionId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionUnwindFunctionLeave() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionUnwindFunctionLeave() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ExceptionUnwindFinallyEnter(FunctionID functionId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionUnwindFinallyEnter(FunctionID functionId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionUnwindFinallyLeave() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionUnwindFinallyLeave() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionCatcherEnter( - FunctionID functionId, ObjectID objectId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionCatcherEnter(FunctionID functionId, ObjectID objectId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionCatcherLeave() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionCatcherLeave() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::COMClassicVTableCreated( - ClassID wrappedClassId, REFGUID implementedIID, void *pVTable, - ULONG cSlots) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::COMClassicVTableCreated(ClassID wrappedClassId, REFGUID implementedIID, + void* pVTable, ULONG cSlots) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::COMClassicVTableDestroyed( - ClassID wrappedClassId, REFGUID implementedIID, void *pVTable) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::COMClassicVTableDestroyed(ClassID wrappedClassId, REFGUID implementedIID, + void* pVTable) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionCLRCatcherFound() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionCLRCatcherFound() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionCLRCatcherExecute() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ExceptionCLRCatcherExecute() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ThreadNameChanged(ThreadID threadId, - ULONG cchName, - WCHAR name[]) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ThreadNameChanged(ThreadID threadId, ULONG cchName, WCHAR name[]) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::GarbageCollectionStarted( - int cGenerations, BOOL generationCollected[], COR_PRF_GC_REASON reason) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::GarbageCollectionStarted(int cGenerations, BOOL generationCollected[], + COR_PRF_GC_REASON reason) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::SurvivingReferences( - ULONG cSurvivingObjectIDRanges, ObjectID objectIDRangeStart[], - ULONG cObjectIDRangeLength[]) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::SurvivingReferences(ULONG cSurvivingObjectIDRanges, + ObjectID objectIDRangeStart[], + ULONG cObjectIDRangeLength[]) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::GarbageCollectionFinished() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::GarbageCollectionFinished() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::FinalizeableObjectQueued( - DWORD finalizerFlags, ObjectID objectID) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::FinalizeableObjectQueued(DWORD finalizerFlags, ObjectID objectID) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::RootReferences2( - ULONG cRootRefs, ObjectID rootRefIds[], COR_PRF_GC_ROOT_KIND rootKinds[], - COR_PRF_GC_ROOT_FLAGS rootFlags[], UINT_PTR rootIds[]) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::RootReferences2(ULONG cRootRefs, ObjectID rootRefIds[], + COR_PRF_GC_ROOT_KIND rootKinds[], + COR_PRF_GC_ROOT_FLAGS rootFlags[], UINT_PTR rootIds[]) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::HandleCreated(GCHandleID handleId, ObjectID initialObjectId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::HandleCreated(GCHandleID handleId, ObjectID initialObjectId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::HandleDestroyed(GCHandleID handleId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::HandleDestroyed(GCHandleID handleId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::InitializeForAttach( - IUnknown *pCorProfilerInfoUnk, void *pvClientData, UINT cbClientData) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::InitializeForAttach(IUnknown* pCorProfilerInfoUnk, void* pvClientData, + UINT cbClientData) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ProfilerAttachComplete() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ProfilerAttachComplete() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ProfilerDetachSucceeded() { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ProfilerDetachSucceeded() +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ReJITCompilationStarted( - FunctionID functionId, ReJITID rejitId, BOOL fIsSafeToBlock) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ReJITCompilationStarted(FunctionID functionId, ReJITID rejitId, + BOOL fIsSafeToBlock) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::GetReJITParameters( - ModuleID moduleId, mdMethodDef methodId, - ICorProfilerFunctionControl *pFunctionControl) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::GetReJITParameters(ModuleID moduleId, mdMethodDef methodId, + ICorProfilerFunctionControl* pFunctionControl) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ReJITCompilationFinished( - FunctionID functionId, ReJITID rejitId, HRESULT hrStatus, - BOOL fIsSafeToBlock) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ReJITCompilationFinished(FunctionID functionId, ReJITID rejitId, + HRESULT hrStatus, BOOL fIsSafeToBlock) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::ReJITError(ModuleID moduleId, - mdMethodDef methodId, - FunctionID functionId, - HRESULT hrStatus) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ReJITError(ModuleID moduleId, mdMethodDef methodId, FunctionID functionId, + HRESULT hrStatus) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::MovedReferences2( - ULONG cMovedObjectIDRanges, ObjectID oldObjectIDRangeStart[], - ObjectID newObjectIDRangeStart[], SIZE_T cObjectIDRangeLength[]) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::MovedReferences2(ULONG cMovedObjectIDRanges, + ObjectID oldObjectIDRangeStart[], + ObjectID newObjectIDRangeStart[], + SIZE_T cObjectIDRangeLength[]) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::SurvivingReferences2( - ULONG cSurvivingObjectIDRanges, ObjectID objectIDRangeStart[], - SIZE_T cObjectIDRangeLength[]) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::SurvivingReferences2(ULONG cSurvivingObjectIDRanges, + ObjectID objectIDRangeStart[], + SIZE_T cObjectIDRangeLength[]) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ConditionalWeakTableElementReferences(ULONG cRootRefs, - ObjectID keyRefIds[], - ObjectID valueRefIds[], - GCHandleID rootIds[]) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ConditionalWeakTableElementReferences(ULONG cRootRefs, ObjectID keyRefIds[], + ObjectID valueRefIds[], + GCHandleID rootIds[]) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::GetAssemblyReferences( - const WCHAR *wszAssemblyPath, - ICorProfilerAssemblyReferenceProvider *pAsmRefProvider) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::GetAssemblyReferences(const WCHAR* wszAssemblyPath, + ICorProfilerAssemblyReferenceProvider* pAsmRefProvider) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE -CorProfilerBase::ModuleInMemorySymbolsUpdated(ModuleID moduleId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::ModuleInMemorySymbolsUpdated(ModuleID moduleId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::DynamicMethodJITCompilationStarted( - FunctionID functionId, BOOL fIsSafeToBlock, LPCBYTE ilHeader, - ULONG cbILHeader) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::DynamicMethodJITCompilationStarted(FunctionID functionId, + BOOL fIsSafeToBlock, LPCBYTE ilHeader, + ULONG cbILHeader) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::DynamicMethodJITCompilationFinished( - FunctionID functionId, HRESULT hrStatus, BOOL fIsSafeToBlock) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::DynamicMethodJITCompilationFinished(FunctionID functionId, HRESULT hrStatus, + BOOL fIsSafeToBlock) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::DynamicMethodUnloaded(FunctionID functionId) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::DynamicMethodUnloaded(FunctionID functionId) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::EventPipeEventDelivered( - EVENTPIPE_PROVIDER provider, DWORD eventId, DWORD eventVersion, - ULONG cbMetadataBlob, LPCBYTE metadataBlob, ULONG cbEventData, - LPCBYTE eventData, LPCGUID pActivityId, LPCGUID pRelatedActivityId, - ThreadID eventThread, ULONG numStackFrames, UINT_PTR stackFrames[]) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::EventPipeEventDelivered(EVENTPIPE_PROVIDER provider, DWORD eventId, + DWORD eventVersion, ULONG cbMetadataBlob, + LPCBYTE metadataBlob, ULONG cbEventData, + LPCBYTE eventData, LPCGUID pActivityId, + LPCGUID pRelatedActivityId, ThreadID eventThread, + ULONG numStackFrames, UINT_PTR stackFrames[]) +{ + return S_OK; } -HRESULT STDMETHODCALLTYPE CorProfilerBase::EventPipeProviderCreated(EVENTPIPE_PROVIDER provider) { - return S_OK; +HRESULT STDMETHODCALLTYPE CorProfilerBase::EventPipeProviderCreated(EVENTPIPE_PROVIDER provider) +{ + return S_OK; } -} // namespace trace +} // namespace trace diff --git a/src/Datadog.Trace.ClrProfiler.Native/cor_profiler_base.h b/src/Datadog.Trace.ClrProfiler.Native/cor_profiler_base.h index c48fa4972e..11d54cd30e 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/cor_profiler_base.h +++ b/src/Datadog.Trace.ClrProfiler.Native/cor_profiler_base.h @@ -1,261 +1,204 @@ #ifndef DD_CLR_PROFILER_COR_PROFILER_BASE_H_ #define DD_CLR_PROFILER_COR_PROFILER_BASE_H_ +#include #include #include -#include - -namespace trace { - -class CorProfilerBase : public ICorProfilerCallback10 { - private: - std::atomic ref_count_; - - protected: - ICorProfilerInfo4* info_; - - public: - CorProfilerBase(); - virtual ~CorProfilerBase(); - - HRESULT STDMETHODCALLTYPE Initialize(IUnknown* pICorProfilerInfoUnk) override; - HRESULT STDMETHODCALLTYPE Shutdown() override; - HRESULT STDMETHODCALLTYPE - AppDomainCreationStarted(AppDomainID appDomainId) override; - HRESULT STDMETHODCALLTYPE - AppDomainCreationFinished(AppDomainID appDomainId, HRESULT hrStatus) override; - HRESULT STDMETHODCALLTYPE - AppDomainShutdownStarted(AppDomainID appDomainId) override; - HRESULT STDMETHODCALLTYPE - AppDomainShutdownFinished(AppDomainID appDomainId, HRESULT hrStatus) override; - HRESULT STDMETHODCALLTYPE AssemblyLoadStarted(AssemblyID assemblyId) override; - HRESULT STDMETHODCALLTYPE AssemblyLoadFinished(AssemblyID assemblyId, - HRESULT hrStatus) override; - HRESULT STDMETHODCALLTYPE - AssemblyUnloadStarted(AssemblyID assemblyId) override; - HRESULT STDMETHODCALLTYPE AssemblyUnloadFinished(AssemblyID assemblyId, - HRESULT hrStatus) override; - HRESULT STDMETHODCALLTYPE ModuleLoadStarted(ModuleID moduleId) override; - HRESULT STDMETHODCALLTYPE ModuleLoadFinished(ModuleID moduleId, - HRESULT hrStatus) override; - HRESULT STDMETHODCALLTYPE ModuleUnloadStarted(ModuleID moduleId) override; - HRESULT STDMETHODCALLTYPE ModuleUnloadFinished(ModuleID moduleId, - HRESULT hrStatus) override; - HRESULT STDMETHODCALLTYPE - ModuleAttachedToAssembly(ModuleID moduleId, AssemblyID AssemblyId) override; - HRESULT STDMETHODCALLTYPE ClassLoadStarted(ClassID classId) override; - HRESULT STDMETHODCALLTYPE ClassLoadFinished(ClassID classId, - HRESULT hrStatus) override; - HRESULT STDMETHODCALLTYPE ClassUnloadStarted(ClassID classId) override; - HRESULT STDMETHODCALLTYPE ClassUnloadFinished(ClassID classId, - HRESULT hrStatus) override; - HRESULT STDMETHODCALLTYPE - FunctionUnloadStarted(FunctionID functionId) override; - HRESULT STDMETHODCALLTYPE JITCompilationStarted(FunctionID functionId, - BOOL fIsSafeToBlock) override; - HRESULT STDMETHODCALLTYPE JITCompilationFinished( - FunctionID functionId, HRESULT hrStatus, BOOL fIsSafeToBlock) override; - HRESULT STDMETHODCALLTYPE JITCachedFunctionSearchStarted( - FunctionID functionId, BOOL* pbUseCachedFunction) override; - HRESULT STDMETHODCALLTYPE JITCachedFunctionSearchFinished( - FunctionID functionId, COR_PRF_JIT_CACHE result) override; - HRESULT STDMETHODCALLTYPE JITFunctionPitched(FunctionID functionId) override; - HRESULT STDMETHODCALLTYPE JITInlining(FunctionID callerId, - FunctionID calleeId, - BOOL* pfShouldInline) override; - HRESULT STDMETHODCALLTYPE ThreadCreated(ThreadID threadId) override; - HRESULT STDMETHODCALLTYPE ThreadDestroyed(ThreadID threadId) override; - HRESULT STDMETHODCALLTYPE ThreadAssignedToOSThread(ThreadID managedThreadId, - DWORD osThreadId) override; - HRESULT STDMETHODCALLTYPE RemotingClientInvocationStarted() override; - HRESULT STDMETHODCALLTYPE - RemotingClientSendingMessage(GUID* pCookie, BOOL fIsAsync) override; - HRESULT STDMETHODCALLTYPE - RemotingClientReceivingReply(GUID* pCookie, BOOL fIsAsync) override; - HRESULT STDMETHODCALLTYPE RemotingClientInvocationFinished() override; - HRESULT STDMETHODCALLTYPE - RemotingServerReceivingMessage(GUID* pCookie, BOOL fIsAsync) override; - HRESULT STDMETHODCALLTYPE RemotingServerInvocationStarted() override; - HRESULT STDMETHODCALLTYPE RemotingServerInvocationReturned() override; - HRESULT STDMETHODCALLTYPE RemotingServerSendingReply(GUID* pCookie, - BOOL fIsAsync) override; - HRESULT STDMETHODCALLTYPE UnmanagedToManagedTransition( - FunctionID functionId, COR_PRF_TRANSITION_REASON reason) override; - HRESULT STDMETHODCALLTYPE ManagedToUnmanagedTransition( - FunctionID functionId, COR_PRF_TRANSITION_REASON reason) override; - HRESULT STDMETHODCALLTYPE - RuntimeSuspendStarted(COR_PRF_SUSPEND_REASON suspendReason) override; - HRESULT STDMETHODCALLTYPE RuntimeSuspendFinished() override; - HRESULT STDMETHODCALLTYPE RuntimeSuspendAborted() override; - HRESULT STDMETHODCALLTYPE RuntimeResumeStarted() override; - HRESULT STDMETHODCALLTYPE RuntimeResumeFinished() override; - HRESULT STDMETHODCALLTYPE RuntimeThreadSuspended(ThreadID threadId) override; - HRESULT STDMETHODCALLTYPE RuntimeThreadResumed(ThreadID threadId) override; - HRESULT STDMETHODCALLTYPE MovedReferences( - ULONG cMovedObjectIDRanges, ObjectID oldObjectIDRangeStart[], - ObjectID newObjectIDRangeStart[], ULONG cObjectIDRangeLength[]) override; - HRESULT STDMETHODCALLTYPE ObjectAllocated(ObjectID objectId, - ClassID classId) override; - HRESULT STDMETHODCALLTYPE ObjectsAllocatedByClass(ULONG cClassCount, - ClassID classIds[], - ULONG cObjects[]) override; - HRESULT STDMETHODCALLTYPE ObjectReferences(ObjectID objectId, ClassID classId, - ULONG cObjectRefs, - ObjectID objectRefIds[]) override; - HRESULT STDMETHODCALLTYPE RootReferences(ULONG cRootRefs, - ObjectID rootRefIds[]) override; - HRESULT STDMETHODCALLTYPE ExceptionThrown(ObjectID thrownObjectId) override; - HRESULT STDMETHODCALLTYPE - ExceptionSearchFunctionEnter(FunctionID functionId) override; - HRESULT STDMETHODCALLTYPE ExceptionSearchFunctionLeave() override; - HRESULT STDMETHODCALLTYPE - ExceptionSearchFilterEnter(FunctionID functionId) override; - HRESULT STDMETHODCALLTYPE ExceptionSearchFilterLeave() override; - HRESULT STDMETHODCALLTYPE - ExceptionSearchCatcherFound(FunctionID functionId) override; - HRESULT STDMETHODCALLTYPE ExceptionOSHandlerEnter(UINT_PTR __unused) override; - HRESULT STDMETHODCALLTYPE ExceptionOSHandlerLeave(UINT_PTR __unused) override; - HRESULT STDMETHODCALLTYPE - ExceptionUnwindFunctionEnter(FunctionID functionId) override; - HRESULT STDMETHODCALLTYPE ExceptionUnwindFunctionLeave() override; - HRESULT STDMETHODCALLTYPE - ExceptionUnwindFinallyEnter(FunctionID functionId) override; - HRESULT STDMETHODCALLTYPE ExceptionUnwindFinallyLeave() override; - HRESULT STDMETHODCALLTYPE ExceptionCatcherEnter(FunctionID functionId, - ObjectID objectId) override; - HRESULT STDMETHODCALLTYPE ExceptionCatcherLeave() override; - HRESULT STDMETHODCALLTYPE COMClassicVTableCreated(ClassID wrappedClassId, - REFGUID implementedIID, - void* pVTable, - ULONG cSlots) override; - HRESULT STDMETHODCALLTYPE COMClassicVTableDestroyed(ClassID wrappedClassId, - REFGUID implementedIID, - void* pVTable) override; - HRESULT STDMETHODCALLTYPE ExceptionCLRCatcherFound() override; - HRESULT STDMETHODCALLTYPE ExceptionCLRCatcherExecute() override; - HRESULT STDMETHODCALLTYPE ThreadNameChanged(ThreadID threadId, ULONG cchName, - WCHAR name[]) override; - HRESULT STDMETHODCALLTYPE - GarbageCollectionStarted(int cGenerations, BOOL generationCollected[], - COR_PRF_GC_REASON reason) override; - HRESULT STDMETHODCALLTYPE SurvivingReferences( - ULONG cSurvivingObjectIDRanges, ObjectID objectIDRangeStart[], - ULONG cObjectIDRangeLength[]) override; - HRESULT STDMETHODCALLTYPE GarbageCollectionFinished() override; - HRESULT STDMETHODCALLTYPE - FinalizeableObjectQueued(DWORD finalizerFlags, ObjectID objectID) override; - HRESULT STDMETHODCALLTYPE RootReferences2(ULONG cRootRefs, - ObjectID rootRefIds[], - COR_PRF_GC_ROOT_KIND rootKinds[], - COR_PRF_GC_ROOT_FLAGS rootFlags[], - UINT_PTR rootIds[]) override; - HRESULT STDMETHODCALLTYPE HandleCreated(GCHandleID handleId, - ObjectID initialObjectId) override; - HRESULT STDMETHODCALLTYPE HandleDestroyed(GCHandleID handleId) override; - HRESULT STDMETHODCALLTYPE InitializeForAttach(IUnknown* pCorProfilerInfoUnk, - void* pvClientData, - UINT cbClientData) override; - HRESULT STDMETHODCALLTYPE ProfilerAttachComplete() override; - HRESULT STDMETHODCALLTYPE ProfilerDetachSucceeded() override; - HRESULT STDMETHODCALLTYPE ReJITCompilationStarted( - FunctionID functionId, ReJITID rejitId, BOOL fIsSafeToBlock) override; - HRESULT STDMETHODCALLTYPE - GetReJITParameters(ModuleID moduleId, mdMethodDef methodId, - ICorProfilerFunctionControl* pFunctionControl) override; - HRESULT STDMETHODCALLTYPE - ReJITCompilationFinished(FunctionID functionId, ReJITID rejitId, - HRESULT hrStatus, BOOL fIsSafeToBlock) override; - HRESULT STDMETHODCALLTYPE ReJITError(ModuleID moduleId, mdMethodDef methodId, - FunctionID functionId, - HRESULT hrStatus) override; - HRESULT STDMETHODCALLTYPE MovedReferences2( - ULONG cMovedObjectIDRanges, ObjectID oldObjectIDRangeStart[], - ObjectID newObjectIDRangeStart[], SIZE_T cObjectIDRangeLength[]) override; - HRESULT STDMETHODCALLTYPE SurvivingReferences2( - ULONG cSurvivingObjectIDRanges, ObjectID objectIDRangeStart[], - SIZE_T cObjectIDRangeLength[]) override; - HRESULT STDMETHODCALLTYPE ConditionalWeakTableElementReferences( - ULONG cRootRefs, ObjectID keyRefIds[], ObjectID valueRefIds[], - GCHandleID rootIds[]) override; - HRESULT STDMETHODCALLTYPE GetAssemblyReferences( - const WCHAR* wszAssemblyPath, - ICorProfilerAssemblyReferenceProvider* pAsmRefProvider) override; - HRESULT STDMETHODCALLTYPE - ModuleInMemorySymbolsUpdated(ModuleID moduleId) override; - - HRESULT STDMETHODCALLTYPE DynamicMethodJITCompilationStarted( - FunctionID functionId, BOOL fIsSafeToBlock, LPCBYTE ilHeader, - ULONG cbILHeader) override; - HRESULT STDMETHODCALLTYPE DynamicMethodJITCompilationFinished( - FunctionID functionId, HRESULT hrStatus, BOOL fIsSafeToBlock) override; - - HRESULT STDMETHODCALLTYPE DynamicMethodUnloaded(FunctionID functionId) override; - HRESULT STDMETHODCALLTYPE EventPipeEventDelivered( - EVENTPIPE_PROVIDER provider, DWORD eventId, DWORD eventVersion, - ULONG cbMetadataBlob, LPCBYTE metadataBlob, ULONG cbEventData, - LPCBYTE eventData, LPCGUID pActivityId, LPCGUID pRelatedActivityId, - ThreadID eventThread, ULONG numStackFrames, - UINT_PTR stackFrames[]) override; - - HRESULT STDMETHODCALLTYPE EventPipeProviderCreated(EVENTPIPE_PROVIDER provider) override; - - HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, - void** ppvObject) override { - if (riid == __uuidof(ICorProfilerCallback10) || - riid == __uuidof(ICorProfilerCallback9) || - riid == __uuidof(ICorProfilerCallback8) || - riid == __uuidof(ICorProfilerCallback7) || - riid == __uuidof(ICorProfilerCallback6) || - riid == __uuidof(ICorProfilerCallback5) || - riid == __uuidof(ICorProfilerCallback4) || - riid == __uuidof(ICorProfilerCallback3) || - riid == __uuidof(ICorProfilerCallback2) || - riid == __uuidof(ICorProfilerCallback) || - riid == IID_IUnknown) { - *ppvObject = this; - this->AddRef(); - return S_OK; +namespace trace +{ + +class CorProfilerBase : public ICorProfilerCallback10 +{ +private: + std::atomic ref_count_; + +protected: + ICorProfilerInfo4* info_; + +public: + CorProfilerBase(); + virtual ~CorProfilerBase(); + + HRESULT STDMETHODCALLTYPE Initialize(IUnknown* pICorProfilerInfoUnk) override; + HRESULT STDMETHODCALLTYPE Shutdown() override; + HRESULT STDMETHODCALLTYPE AppDomainCreationStarted(AppDomainID appDomainId) override; + HRESULT STDMETHODCALLTYPE AppDomainCreationFinished(AppDomainID appDomainId, HRESULT hrStatus) override; + HRESULT STDMETHODCALLTYPE AppDomainShutdownStarted(AppDomainID appDomainId) override; + HRESULT STDMETHODCALLTYPE AppDomainShutdownFinished(AppDomainID appDomainId, HRESULT hrStatus) override; + HRESULT STDMETHODCALLTYPE AssemblyLoadStarted(AssemblyID assemblyId) override; + HRESULT STDMETHODCALLTYPE AssemblyLoadFinished(AssemblyID assemblyId, HRESULT hrStatus) override; + HRESULT STDMETHODCALLTYPE AssemblyUnloadStarted(AssemblyID assemblyId) override; + HRESULT STDMETHODCALLTYPE AssemblyUnloadFinished(AssemblyID assemblyId, HRESULT hrStatus) override; + HRESULT STDMETHODCALLTYPE ModuleLoadStarted(ModuleID moduleId) override; + HRESULT STDMETHODCALLTYPE ModuleLoadFinished(ModuleID moduleId, HRESULT hrStatus) override; + HRESULT STDMETHODCALLTYPE ModuleUnloadStarted(ModuleID moduleId) override; + HRESULT STDMETHODCALLTYPE ModuleUnloadFinished(ModuleID moduleId, HRESULT hrStatus) override; + HRESULT STDMETHODCALLTYPE ModuleAttachedToAssembly(ModuleID moduleId, AssemblyID AssemblyId) override; + HRESULT STDMETHODCALLTYPE ClassLoadStarted(ClassID classId) override; + HRESULT STDMETHODCALLTYPE ClassLoadFinished(ClassID classId, HRESULT hrStatus) override; + HRESULT STDMETHODCALLTYPE ClassUnloadStarted(ClassID classId) override; + HRESULT STDMETHODCALLTYPE ClassUnloadFinished(ClassID classId, HRESULT hrStatus) override; + HRESULT STDMETHODCALLTYPE FunctionUnloadStarted(FunctionID functionId) override; + HRESULT STDMETHODCALLTYPE JITCompilationStarted(FunctionID functionId, BOOL fIsSafeToBlock) override; + HRESULT STDMETHODCALLTYPE JITCompilationFinished(FunctionID functionId, HRESULT hrStatus, + BOOL fIsSafeToBlock) override; + HRESULT STDMETHODCALLTYPE JITCachedFunctionSearchStarted(FunctionID functionId, BOOL* pbUseCachedFunction) override; + HRESULT STDMETHODCALLTYPE JITCachedFunctionSearchFinished(FunctionID functionId, COR_PRF_JIT_CACHE result) override; + HRESULT STDMETHODCALLTYPE JITFunctionPitched(FunctionID functionId) override; + HRESULT STDMETHODCALLTYPE JITInlining(FunctionID callerId, FunctionID calleeId, BOOL* pfShouldInline) override; + HRESULT STDMETHODCALLTYPE ThreadCreated(ThreadID threadId) override; + HRESULT STDMETHODCALLTYPE ThreadDestroyed(ThreadID threadId) override; + HRESULT STDMETHODCALLTYPE ThreadAssignedToOSThread(ThreadID managedThreadId, DWORD osThreadId) override; + HRESULT STDMETHODCALLTYPE RemotingClientInvocationStarted() override; + HRESULT STDMETHODCALLTYPE RemotingClientSendingMessage(GUID* pCookie, BOOL fIsAsync) override; + HRESULT STDMETHODCALLTYPE RemotingClientReceivingReply(GUID* pCookie, BOOL fIsAsync) override; + HRESULT STDMETHODCALLTYPE RemotingClientInvocationFinished() override; + HRESULT STDMETHODCALLTYPE RemotingServerReceivingMessage(GUID* pCookie, BOOL fIsAsync) override; + HRESULT STDMETHODCALLTYPE RemotingServerInvocationStarted() override; + HRESULT STDMETHODCALLTYPE RemotingServerInvocationReturned() override; + HRESULT STDMETHODCALLTYPE RemotingServerSendingReply(GUID* pCookie, BOOL fIsAsync) override; + HRESULT STDMETHODCALLTYPE UnmanagedToManagedTransition(FunctionID functionId, + COR_PRF_TRANSITION_REASON reason) override; + HRESULT STDMETHODCALLTYPE ManagedToUnmanagedTransition(FunctionID functionId, + COR_PRF_TRANSITION_REASON reason) override; + HRESULT STDMETHODCALLTYPE RuntimeSuspendStarted(COR_PRF_SUSPEND_REASON suspendReason) override; + HRESULT STDMETHODCALLTYPE RuntimeSuspendFinished() override; + HRESULT STDMETHODCALLTYPE RuntimeSuspendAborted() override; + HRESULT STDMETHODCALLTYPE RuntimeResumeStarted() override; + HRESULT STDMETHODCALLTYPE RuntimeResumeFinished() override; + HRESULT STDMETHODCALLTYPE RuntimeThreadSuspended(ThreadID threadId) override; + HRESULT STDMETHODCALLTYPE RuntimeThreadResumed(ThreadID threadId) override; + HRESULT STDMETHODCALLTYPE MovedReferences(ULONG cMovedObjectIDRanges, ObjectID oldObjectIDRangeStart[], + ObjectID newObjectIDRangeStart[], ULONG cObjectIDRangeLength[]) override; + HRESULT STDMETHODCALLTYPE ObjectAllocated(ObjectID objectId, ClassID classId) override; + HRESULT STDMETHODCALLTYPE ObjectsAllocatedByClass(ULONG cClassCount, ClassID classIds[], ULONG cObjects[]) override; + HRESULT STDMETHODCALLTYPE ObjectReferences(ObjectID objectId, ClassID classId, ULONG cObjectRefs, + ObjectID objectRefIds[]) override; + HRESULT STDMETHODCALLTYPE RootReferences(ULONG cRootRefs, ObjectID rootRefIds[]) override; + HRESULT STDMETHODCALLTYPE ExceptionThrown(ObjectID thrownObjectId) override; + HRESULT STDMETHODCALLTYPE ExceptionSearchFunctionEnter(FunctionID functionId) override; + HRESULT STDMETHODCALLTYPE ExceptionSearchFunctionLeave() override; + HRESULT STDMETHODCALLTYPE ExceptionSearchFilterEnter(FunctionID functionId) override; + HRESULT STDMETHODCALLTYPE ExceptionSearchFilterLeave() override; + HRESULT STDMETHODCALLTYPE ExceptionSearchCatcherFound(FunctionID functionId) override; + HRESULT STDMETHODCALLTYPE ExceptionOSHandlerEnter(UINT_PTR __unused) override; + HRESULT STDMETHODCALLTYPE ExceptionOSHandlerLeave(UINT_PTR __unused) override; + HRESULT STDMETHODCALLTYPE ExceptionUnwindFunctionEnter(FunctionID functionId) override; + HRESULT STDMETHODCALLTYPE ExceptionUnwindFunctionLeave() override; + HRESULT STDMETHODCALLTYPE ExceptionUnwindFinallyEnter(FunctionID functionId) override; + HRESULT STDMETHODCALLTYPE ExceptionUnwindFinallyLeave() override; + HRESULT STDMETHODCALLTYPE ExceptionCatcherEnter(FunctionID functionId, ObjectID objectId) override; + HRESULT STDMETHODCALLTYPE ExceptionCatcherLeave() override; + HRESULT STDMETHODCALLTYPE COMClassicVTableCreated(ClassID wrappedClassId, REFGUID implementedIID, void* pVTable, + ULONG cSlots) override; + HRESULT STDMETHODCALLTYPE COMClassicVTableDestroyed(ClassID wrappedClassId, REFGUID implementedIID, + void* pVTable) override; + HRESULT STDMETHODCALLTYPE ExceptionCLRCatcherFound() override; + HRESULT STDMETHODCALLTYPE ExceptionCLRCatcherExecute() override; + HRESULT STDMETHODCALLTYPE ThreadNameChanged(ThreadID threadId, ULONG cchName, WCHAR name[]) override; + HRESULT STDMETHODCALLTYPE GarbageCollectionStarted(int cGenerations, BOOL generationCollected[], + COR_PRF_GC_REASON reason) override; + HRESULT STDMETHODCALLTYPE SurvivingReferences(ULONG cSurvivingObjectIDRanges, ObjectID objectIDRangeStart[], + ULONG cObjectIDRangeLength[]) override; + HRESULT STDMETHODCALLTYPE GarbageCollectionFinished() override; + HRESULT STDMETHODCALLTYPE FinalizeableObjectQueued(DWORD finalizerFlags, ObjectID objectID) override; + HRESULT STDMETHODCALLTYPE RootReferences2(ULONG cRootRefs, ObjectID rootRefIds[], COR_PRF_GC_ROOT_KIND rootKinds[], + COR_PRF_GC_ROOT_FLAGS rootFlags[], UINT_PTR rootIds[]) override; + HRESULT STDMETHODCALLTYPE HandleCreated(GCHandleID handleId, ObjectID initialObjectId) override; + HRESULT STDMETHODCALLTYPE HandleDestroyed(GCHandleID handleId) override; + HRESULT STDMETHODCALLTYPE InitializeForAttach(IUnknown* pCorProfilerInfoUnk, void* pvClientData, + UINT cbClientData) override; + HRESULT STDMETHODCALLTYPE ProfilerAttachComplete() override; + HRESULT STDMETHODCALLTYPE ProfilerDetachSucceeded() override; + HRESULT STDMETHODCALLTYPE ReJITCompilationStarted(FunctionID functionId, ReJITID rejitId, + BOOL fIsSafeToBlock) override; + HRESULT STDMETHODCALLTYPE GetReJITParameters(ModuleID moduleId, mdMethodDef methodId, + ICorProfilerFunctionControl* pFunctionControl) override; + HRESULT STDMETHODCALLTYPE ReJITCompilationFinished(FunctionID functionId, ReJITID rejitId, HRESULT hrStatus, + BOOL fIsSafeToBlock) override; + HRESULT STDMETHODCALLTYPE ReJITError(ModuleID moduleId, mdMethodDef methodId, FunctionID functionId, + HRESULT hrStatus) override; + HRESULT STDMETHODCALLTYPE MovedReferences2(ULONG cMovedObjectIDRanges, ObjectID oldObjectIDRangeStart[], + ObjectID newObjectIDRangeStart[], + SIZE_T cObjectIDRangeLength[]) override; + HRESULT STDMETHODCALLTYPE SurvivingReferences2(ULONG cSurvivingObjectIDRanges, ObjectID objectIDRangeStart[], + SIZE_T cObjectIDRangeLength[]) override; + HRESULT STDMETHODCALLTYPE ConditionalWeakTableElementReferences(ULONG cRootRefs, ObjectID keyRefIds[], + ObjectID valueRefIds[], + GCHandleID rootIds[]) override; + HRESULT STDMETHODCALLTYPE GetAssemblyReferences(const WCHAR* wszAssemblyPath, + ICorProfilerAssemblyReferenceProvider* pAsmRefProvider) override; + HRESULT STDMETHODCALLTYPE ModuleInMemorySymbolsUpdated(ModuleID moduleId) override; + + HRESULT STDMETHODCALLTYPE DynamicMethodJITCompilationStarted(FunctionID functionId, BOOL fIsSafeToBlock, + LPCBYTE ilHeader, ULONG cbILHeader) override; + HRESULT STDMETHODCALLTYPE DynamicMethodJITCompilationFinished(FunctionID functionId, HRESULT hrStatus, + BOOL fIsSafeToBlock) override; + + HRESULT STDMETHODCALLTYPE DynamicMethodUnloaded(FunctionID functionId) override; + + HRESULT STDMETHODCALLTYPE EventPipeEventDelivered(EVENTPIPE_PROVIDER provider, DWORD eventId, DWORD eventVersion, + ULONG cbMetadataBlob, LPCBYTE metadataBlob, ULONG cbEventData, + LPCBYTE eventData, LPCGUID pActivityId, + LPCGUID pRelatedActivityId, ThreadID eventThread, + ULONG numStackFrames, UINT_PTR stackFrames[]) override; + + HRESULT STDMETHODCALLTYPE EventPipeProviderCreated(EVENTPIPE_PROVIDER provider) override; + + HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject) override + { + if (riid == __uuidof(ICorProfilerCallback10) || riid == __uuidof(ICorProfilerCallback9) || + riid == __uuidof(ICorProfilerCallback8) || riid == __uuidof(ICorProfilerCallback7) || + riid == __uuidof(ICorProfilerCallback6) || riid == __uuidof(ICorProfilerCallback5) || + riid == __uuidof(ICorProfilerCallback4) || riid == __uuidof(ICorProfilerCallback3) || + riid == __uuidof(ICorProfilerCallback2) || riid == __uuidof(ICorProfilerCallback) || riid == IID_IUnknown) + { + *ppvObject = this; + this->AddRef(); + return S_OK; + } + + *ppvObject = nullptr; + return E_NOINTERFACE; } - *ppvObject = nullptr; - return E_NOINTERFACE; - } - - ULONG STDMETHODCALLTYPE AddRef(void) override { - return std::atomic_fetch_add(&this->ref_count_, 1) + 1; - } - - ULONG STDMETHODCALLTYPE Release(void) override { - int count = std::atomic_fetch_sub(&this->ref_count_, 1) - 1; - - /* - * Running netcoreapp2.x we get in similar scenarios as the one described in: - * https://github.com/dotnet/runtime/issues/11885 - * - * A crash while profiler is shutting down because one thread can be deleting the - * profiler instance while another thread can be trying to call - * `EEToProfInterfaceImpl::JITCompilationFinished` - * and crashing here https://github.com/dotnet/coreclr/blob/release/2.1/src/vm/eetoprofinterfaceimpl.cpp#L3220 as - * seen in several memory dumps. - * - * One way to avoid the crash is by skipping the deletion of the profiler, - * so the pointer doesn't get invalidated. So we are commenting the `delete this;` line. - * - * This behavior appears to be fixed in netcoreapp3.x as seen in the commit: - * https://github.com/dotnet/coreclr/commit/671772c20a27c050df3d7d11391ea4f7de05165c - * PR: - * https://github.com/dotnet/coreclr/pull/22712 - */ - - //if (count <= 0) { - // delete this; - //} + ULONG STDMETHODCALLTYPE AddRef(void) override + { + return std::atomic_fetch_add(&this->ref_count_, 1) + 1; + } - return count; - } + ULONG STDMETHODCALLTYPE Release(void) override + { + int count = std::atomic_fetch_sub(&this->ref_count_, 1) - 1; + + /* + * Running netcoreapp2.x we get in similar scenarios as the one described in: + * https://github.com/dotnet/runtime/issues/11885 + * + * A crash while profiler is shutting down because one thread can be deleting the + * profiler instance while another thread can be trying to call + * `EEToProfInterfaceImpl::JITCompilationFinished` + * and crashing here https://github.com/dotnet/coreclr/blob/release/2.1/src/vm/eetoprofinterfaceimpl.cpp#L3220 + * as seen in several memory dumps. + * + * One way to avoid the crash is by skipping the deletion of the profiler, + * so the pointer doesn't get invalidated. So we are commenting the `delete this;` line. + * + * This behavior appears to be fixed in netcoreapp3.x as seen in the commit: + * https://github.com/dotnet/coreclr/commit/671772c20a27c050df3d7d11391ea4f7de05165c + * PR: + * https://github.com/dotnet/coreclr/pull/22712 + */ + + // if (count <= 0) { + // delete this; + //} + + return count; + } }; -} // namespace trace +} // namespace trace -#endif // DD_CLR_PROFILER_PROFILER_BASE_H_ +#endif // DD_CLR_PROFILER_PROFILER_BASE_H_ diff --git a/src/Datadog.Trace.ClrProfiler.Native/dd_profiler_constants.h b/src/Datadog.Trace.ClrProfiler.Native/dd_profiler_constants.h index 0e90baacec..2735611526 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/dd_profiler_constants.h +++ b/src/Datadog.Trace.ClrProfiler.Native/dd_profiler_constants.h @@ -6,34 +6,34 @@ #include "environment_variables.h" #include "logging.h" -namespace trace { +namespace trace +{ - inline WSTRING env_vars_to_display[]{ - environment::tracing_enabled, - environment::debug_enabled, - environment::calltarget_enabled, - environment::profiler_home_path, - environment::integrations_path, - environment::include_process_names, - environment::exclude_process_names, - environment::agent_host, - environment::agent_port, - environment::env, - environment::service_name, - environment::service_version, - environment::disabled_integrations, - environment::log_path, - environment::log_directory, - environment::clr_disable_optimizations, - environment::clr_enable_inlining, - environment::domain_neutral_instrumentation, - environment::dump_il_rewrite_enabled, - environment::netstandard_enabled, - environment::azure_app_services, - environment::azure_app_services_app_pool_id, - environment::azure_app_services_cli_telemetry_profile_value}; +const WSTRING env_vars_to_display[]{environment::tracing_enabled, + environment::debug_enabled, + environment::calltarget_enabled, + environment::profiler_home_path, + environment::integrations_path, + environment::include_process_names, + environment::exclude_process_names, + environment::agent_host, + environment::agent_port, + environment::env, + environment::service_name, + environment::service_version, + environment::disabled_integrations, + environment::log_path, + environment::log_directory, + environment::clr_disable_optimizations, + environment::clr_enable_inlining, + environment::domain_neutral_instrumentation, + environment::dump_il_rewrite_enabled, + environment::netstandard_enabled, + environment::azure_app_services, + environment::azure_app_services_app_pool_id, + environment::azure_app_services_cli_telemetry_profile_value}; - inline WSTRING skip_assembly_prefixes[]{ +const WSTRING skip_assembly_prefixes[]{ WStr("Datadog.Trace"), WStr("OpenTelemetry.AutoInstrumentation"), WStr("MessagePack"), @@ -57,22 +57,21 @@ namespace trace { WStr("System.Threading"), WStr("System.Xml"), WStr("Newtonsoft"), - }; +}; - inline WSTRING skip_assemblies[]{ - WStr("mscorlib"), - WStr("netstandard"), - WStr("System.Configuration"), - WStr("Microsoft.AspNetCore.Razor.Language"), - WStr("Microsoft.AspNetCore.Mvc.RazorPages"), - WStr("Anonymously Hosted DynamicMethods Assembly"), - WStr("ISymWrapper") - }; +const WSTRING skip_assemblies[]{WStr("mscorlib"), + WStr("netstandard"), + WStr("System.Configuration"), + WStr("Microsoft.AspNetCore.Razor.Language"), + WStr("Microsoft.AspNetCore.Mvc.RazorPages"), + WStr("Anonymously Hosted DynamicMethods Assembly"), + WStr("ISymWrapper")}; - inline WSTRING managed_profiler_full_assembly_version = WStr("OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429"); +inline WSTRING managed_profiler_full_assembly_version = + WStr("OpenTelemetry.AutoInstrumentation.ClrProfiler.Managed, Version=0.0.1.0, Culture=neutral, PublicKeyToken=34b8972644a12429"); - inline WSTRING calltarget_modification_action = WStr("CallTargetModification"); +const WSTRING calltarget_modification_action = WStr("CallTargetModification"); -} // namespace trace +} // namespace trace -#endif // DD_PROFILER_CONSTANTS_H \ No newline at end of file +#endif // DD_PROFILER_CONSTANTS_H \ No newline at end of file diff --git a/src/Datadog.Trace.ClrProfiler.Native/dllmain.cpp b/src/Datadog.Trace.ClrProfiler.Native/dllmain.cpp index 5be492bf0e..4a044aef01 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/dllmain.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/dllmain.cpp @@ -5,47 +5,41 @@ #include "dllmain.h" #include "class_factory.h" -const IID IID_IUnknown = {0x00000000, - 0x0000, - 0x0000, - {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}; +const IID IID_IUnknown = {0x00000000, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}; -const IID IID_IClassFactory = { - 0x00000001, - 0x0000, - 0x0000, - {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}; +const IID IID_IClassFactory = {0x00000001, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}; HINSTANCE DllHandle; -extern "C" { -BOOL STDMETHODCALLTYPE DllMain(HMODULE hModule, DWORD ul_reason_for_call, - LPVOID lpReserved) { - DllHandle = hModule; - return TRUE; -} - -HRESULT STDMETHODCALLTYPE DllGetClassObject(REFCLSID rclsid, REFIID riid, - LPVOID* ppv) { - // {918728DD-259F-4A6A-AC2B-B85E1B658318} - const GUID CLSID_CorProfiler = { - 0x918728dd, - 0x259f, - 0x4a6a, - {0xac, 0x2b, 0xb8, 0x5e, 0x1b, 0x65, 0x83, 0x18}}; - - if (ppv == NULL || rclsid != CLSID_CorProfiler) { - return E_FAIL; - } - - auto factory = new ClassFactory; - - if (factory == NULL) { - return E_FAIL; - } - - return factory->QueryInterface(riid, ppv); -} - -HRESULT STDMETHODCALLTYPE DllCanUnloadNow() { return S_OK; } +extern "C" +{ + BOOL STDMETHODCALLTYPE DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) + { + DllHandle = hModule; + return TRUE; + } + + HRESULT STDMETHODCALLTYPE DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) { + // {918728DD-259F-4A6A-AC2B-B85E1B658318} + const GUID CLSID_CorProfiler = {0x918728dd, 0x259f, 0x4a6a, {0xac, 0x2b, 0xb8, 0x5e, 0x1b, 0x65, 0x83, 0x18}}; + + if (ppv == NULL || rclsid != CLSID_CorProfiler) + { + return E_FAIL; + } + + auto factory = new ClassFactory; + + if (factory == NULL) + { + return E_FAIL; + } + + return factory->QueryInterface(riid, ppv); + } + + HRESULT STDMETHODCALLTYPE DllCanUnloadNow() + { + return S_OK; + } } diff --git a/src/Datadog.Trace.ClrProfiler.Native/dllmain.h b/src/Datadog.Trace.ClrProfiler.Native/dllmain.h index 7c4dce2d6c..4b93af9c11 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/dllmain.h +++ b/src/Datadog.Trace.ClrProfiler.Native/dllmain.h @@ -5,4 +5,4 @@ extern HINSTANCE DllHandle; -#endif // DD_CLR_PROFILER_DLLMAIN_H_ \ No newline at end of file +#endif // DD_CLR_PROFILER_DLLMAIN_H_ \ No newline at end of file diff --git a/src/Datadog.Trace.ClrProfiler.Native/environment_variables.h b/src/Datadog.Trace.ClrProfiler.Native/environment_variables.h index 3070524b17..fe0d988011 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/environment_variables.h +++ b/src/Datadog.Trace.ClrProfiler.Native/environment_variables.h @@ -1,110 +1,110 @@ #ifndef OTEL_CLR_PROFILER_ENVIRONMENT_VARIABLES_H_ #define OTEL_CLR_PROFILER_ENVIRONMENT_VARIABLES_H_ -#include "string.h" // NOLINT +#include "string.h" // NOLINT namespace trace { namespace environment { -// Sets whether the profiler is enabled. Default is true. -// Setting this to false disabled the profiler entirely. -const WSTRING tracing_enabled = WStr("OTEL_TRACE_ENABLED"); - -// Sets whether debug mode is enabled. Default is false. -const WSTRING debug_enabled = WStr("OTEL_TRACE_DEBUG"); - -// Sets the paths to integration definition JSON files. -// Supports multiple values separated with comma, for example: -// "C:\Program Files\OpenTelemetry .NET AutoInstrumentation\integrations.json,D:\temp\test_integrations.json" -const WSTRING integrations_path = WStr("OTEL_INTEGRATIONS"); - -// Sets the path to the profiler's home directory, for example: -// "C:\Program Files\OpenTelemetry .NET AutoInstrumentation\" or "/opt/datadog/" -const WSTRING profiler_home_path = WStr("OTEL_DOTNET_TRACER_HOME"); - -// Sets the filename of executables the profiler can attach to. -// If not defined (default), the profiler will attach to any process. -// Supports multiple values separated with comma, for example: -// "MyApp.exe,dotnet.exe" -const WSTRING include_process_names = WStr("OTEL_PROFILER_PROCESSES"); - -// Sets the filename of executables the profiler cannot attach to. -// If not defined (default), the profiler will attach to any process. -// Supports multiple values separated with comma, for example: -// "MyApp.exe,dotnet.exe" -const WSTRING exclude_process_names = WStr("OTEL_PROFILER_EXCLUDE_PROCESSES"); - -// Sets the Agent's host. Default is localhost. -const WSTRING agent_host = WStr("OTEL_AGENT_HOST"); - -// Sets the Agent's port. Default is 8126. -const WSTRING agent_port = WStr("OTEL_TRACE_AGENT_PORT"); - -// Sets the "env" tag for every span. -const WSTRING env = WStr("OTEL_ENV"); - -// Sets the default service name for every span. -// If not set, Tracer will try to determine service name automatically -// from application name (e.g. entry assembly or IIS application name). -const WSTRING service_name = WStr("OTEL_SERVICE"); - -// Sets the "service_version" tag for every span that belong to the root service (and not an external service). -const WSTRING service_version = WStr("OTEL_VERSION"); - -// Sets a list of integrations to disable. All other integrations will remain -// enabled. If not set (default), all integrations are enabled. Supports -// multiple values separated with comma, for example: -// "ElasticsearchNet,AspNetWebApi2" -const WSTRING disabled_integrations = WStr("OTEL_DISABLED_INTEGRATIONS"); - -// Sets the path for the profiler's log file. -// Environment variable OTEL_TRACE_LOG_DIRECTORY takes precedence over this setting, if set. -const WSTRING log_path = WStr("OTEL_TRACE_LOG_PATH"); - -// Sets the directory for the profiler's log file. -// If set, this setting takes precedence over environment variable OTEL_TRACE_LOG_PATH. -// If not set, default is -// "%ProgramData%"\OpenTelemetry .NET AutoInstrumentation\logs\" on Windows or -// "/var/log/opentelemetry/dotnet/" on Linux. -const WSTRING log_directory = WStr("OTEL_TRACE_LOG_DIRECTORY"); - -// Sets whether to disable all JIT optimizations. -// Default value is false (do not disable all optimizations). -// https://github.com/dotnet/coreclr/issues/24676 -// https://github.com/dotnet/coreclr/issues/12468 -const WSTRING clr_disable_optimizations = WStr("OTEL_CLR_DISABLE_OPTIMIZATIONS"); - -// Sets whether to intercept method calls when the caller method is inside a -// domain-neutral assembly. This is dangerous because the integration assembly -// the user can guarantee that all Application Pools on the system have at most -// Default is false. Only used in .NET Framework 4.5 and 4.5.1. -// https://github.com/DataDog/dd-trace-dotnet/pull/671 -const WSTRING domain_neutral_instrumentation = WStr("OTEL_TRACE_DOMAIN_NEUTRAL_INSTRUMENTATION"); - -// Indicates whether the profiler is running in the context -// of Azure App Services -const WSTRING azure_app_services = WStr("OTEL_AZURE_APP_SERVICES"); - -// The app_pool_id in the context of azure app services -const WSTRING azure_app_services_app_pool_id = WStr("APP_POOL_ID"); - -// The DOTNET_CLI_TELEMETRY_PROFILE in the context of azure app services -const WSTRING azure_app_services_cli_telemetry_profile_value = WStr("DOTNET_CLI_TELEMETRY_PROFILE"); - -// Determine whether to instrument calls into netstandard.dll. -// Default to false for now to avoid the unexpected overhead of additional spans. -const WSTRING netstandard_enabled = WStr("OTEL_TRACE_NETSTANDARD_ENABLED"); - -// Enable the profiler to dump the IL original code and modification to the log. -const WSTRING dump_il_rewrite_enabled = WStr("OTEL_DUMP_ILREWRITE_ENABLED"); - -// Sets whether to enable JIT inlining -const WSTRING clr_enable_inlining = WStr("OTEL_CLR_ENABLE_INLINING"); - -// Sets whether to enable the CallTarget instrumentation mode -const WSTRING calltarget_enabled = WStr("OTEL_TRACE_CALLTARGET_ENABLED"); - -} // namespace environment -} // namespace trace + // Sets whether the profiler is enabled. Default is true. + // Setting this to false disabled the profiler entirely. + const WSTRING tracing_enabled = WStr("OTEL_TRACE_ENABLED"); + + // Sets whether debug mode is enabled. Default is false. + const WSTRING debug_enabled = WStr("OTEL_TRACE_DEBUG"); + + // Sets the paths to integration definition JSON files. + // Supports multiple values separated with comma, for example: + // "C:\Program Files\OpenTelemetry .NET AutoInstrumentation\integrations.json,D:\temp\test_integrations.json" + const WSTRING integrations_path = WStr("OTEL_INTEGRATIONS"); + + // Sets the path to the profiler's home directory, for example: + // "C:\Program Files\OpenTelemetry .NET AutoInstrumentation\" or "/opt/datadog/" + const WSTRING profiler_home_path = WStr("OTEL_DOTNET_TRACER_HOME"); + + // Sets the filename of executables the profiler can attach to. + // If not defined (default), the profiler will attach to any process. + // Supports multiple values separated with comma, for example: + // "MyApp.exe,dotnet.exe" + const WSTRING include_process_names = WStr("OTEL_PROFILER_PROCESSES"); + + // Sets the filename of executables the profiler cannot attach to. + // If not defined (default), the profiler will attach to any process. + // Supports multiple values separated with comma, for example: + // "MyApp.exe,dotnet.exe" + const WSTRING exclude_process_names = WStr("OTEL_PROFILER_EXCLUDE_PROCESSES"); + + // Sets the Agent's host. Default is localhost. + const WSTRING agent_host = WStr("OTEL_AGENT_HOST"); + + // Sets the Agent's port. Default is 8126. + const WSTRING agent_port = WStr("OTEL_TRACE_AGENT_PORT"); + + // Sets the "env" tag for every span. + const WSTRING env = WStr("OTEL_ENV"); + + // Sets the default service name for every span. + // If not set, Tracer will try to determine service name automatically + // from application name (e.g. entry assembly or IIS application name). + const WSTRING service_name = WStr("OTEL_SERVICE"); + + // Sets the "service_version" tag for every span that belong to the root service (and not an external service). + const WSTRING service_version = WStr("OTEL_VERSION"); + + // Sets a list of integrations to disable. All other integrations will remain + // enabled. If not set (default), all integrations are enabled. Supports + // multiple values separated with comma, for example: + // "ElasticsearchNet,AspNetWebApi2" + const WSTRING disabled_integrations = WStr("OTEL_DISABLED_INTEGRATIONS"); + + // Sets the path for the profiler's log file. + // Environment variable OTEL_TRACE_LOG_DIRECTORY takes precedence over this setting, if set. + const WSTRING log_path = WStr("OTEL_TRACE_LOG_PATH"); + + // Sets the directory for the profiler's log file. + // If set, this setting takes precedence over environment variable OTEL_TRACE_LOG_PATH. + // If not set, default is + // "%ProgramData%"\OpenTelemetry .NET AutoInstrumentation\logs\" on Windows or + // "/var/log/opentelemetry/dotnet/" on Linux. + const WSTRING log_directory = WStr("OTEL_TRACE_LOG_DIRECTORY"); + + // Sets whether to disable all JIT optimizations. + // Default value is false (do not disable all optimizations). + // https://github.com/dotnet/coreclr/issues/24676 + // https://github.com/dotnet/coreclr/issues/12468 + const WSTRING clr_disable_optimizations = WStr("OTEL_CLR_DISABLE_OPTIMIZATIONS"); + + // Sets whether to intercept method calls when the caller method is inside a + // domain-neutral assembly. This is dangerous because the integration assembly + // the user can guarantee that all Application Pools on the system have at most + // Default is false. Only used in .NET Framework 4.5 and 4.5.1. + // https://github.com/DataDog/dd-trace-dotnet/pull/671 + const WSTRING domain_neutral_instrumentation = WStr("OTEL_TRACE_DOMAIN_NEUTRAL_INSTRUMENTATION"); + + // Indicates whether the profiler is running in the context + // of Azure App Services + const WSTRING azure_app_services = WStr("OTEL_AZURE_APP_SERVICES"); + + // The app_pool_id in the context of azure app services + const WSTRING azure_app_services_app_pool_id = WStr("APP_POOL_ID"); + + // The DOTNET_CLI_TELEMETRY_PROFILE in the context of azure app services + const WSTRING azure_app_services_cli_telemetry_profile_value = WStr("DOTNET_CLI_TELEMETRY_PROFILE"); + + // Determine whether to instrument calls into netstandard.dll. + // Default to false for now to avoid the unexpected overhead of additional spans. + const WSTRING netstandard_enabled = WStr("OTEL_TRACE_NETSTANDARD_ENABLED"); + + // Enable the profiler to dump the IL original code and modification to the log. + const WSTRING dump_il_rewrite_enabled = WStr("OTEL_DUMP_ILREWRITE_ENABLED"); + + // Sets whether to enable JIT inlining + const WSTRING clr_enable_inlining = WStr("OTEL_CLR_ENABLE_INLINING"); + + // Sets whether to enable the CallTarget instrumentation mode + const WSTRING calltarget_enabled = WStr("OTEL_TRACE_CALLTARGET_ENABLED"); + +} // namespace environment +} // namespace trace #endif diff --git a/src/Datadog.Trace.ClrProfiler.Native/environment_variables_util.h b/src/Datadog.Trace.ClrProfiler.Native/environment_variables_util.h index 57d8c0741c..df336ea119 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/environment_variables_util.h +++ b/src/Datadog.Trace.ClrProfiler.Native/environment_variables_util.h @@ -5,82 +5,98 @@ #include "string.h" #include "util.h" -#define CheckIfTrue(EXPR) \ - static int sValue = -1; \ - if (sValue == -1) { \ - const auto envValue = EXPR; \ - sValue = envValue == WStr("1") || envValue == WStr("true") ? 1 : 0; \ - } \ - return sValue == 1; - -#define CheckIfFalse(EXPR) \ - static int sValue = -1; \ - if (sValue == -1) { \ - const auto envValue = EXPR; \ - sValue = envValue == WStr("0") || envValue == WStr("false") ? 1 : 0; \ - } \ - return sValue == 1; - -#define ToBooleanWithDefault(EXPR, DEFAULT) \ - static int sValue = -1; \ - if (sValue == -1) { \ - const auto envValue = EXPR; \ - if (envValue == WStr("1") || envValue == WStr("true")) { \ - sValue = 1; \ - } else if (envValue == WStr("0") || envValue == WStr("false")) { \ - sValue = 0; \ - } else { \ - sValue = DEFAULT; \ - } \ - } \ - return sValue == 1; - -namespace trace { - -bool DisableOptimizations() { - CheckIfTrue(GetEnvironmentValue(environment::clr_disable_optimizations)); +#define CheckIfTrue(EXPR) \ + static int sValue = -1; \ + if (sValue == -1) \ + { \ + const auto envValue = EXPR; \ + sValue = envValue == WStr("1") || envValue == WStr("true") ? 1 : 0; \ + } \ + return sValue == 1; + +#define CheckIfFalse(EXPR) \ + static int sValue = -1; \ + if (sValue == -1) \ + { \ + const auto envValue = EXPR; \ + sValue = envValue == WStr("0") || envValue == WStr("false") ? 1 : 0; \ + } \ + return sValue == 1; + +#define ToBooleanWithDefault(EXPR, DEFAULT) \ + static int sValue = -1; \ + if (sValue == -1) \ + { \ + const auto envValue = EXPR; \ + if (envValue == WStr("1") || envValue == WStr("true")) \ + { \ + sValue = 1; \ + } \ + else if (envValue == WStr("0") || envValue == WStr("false")) \ + { \ + sValue = 0; \ + } \ + else \ + { \ + sValue = DEFAULT; \ + } \ + } \ + return sValue == 1; + +namespace trace +{ + +bool DisableOptimizations() +{ + CheckIfTrue(GetEnvironmentValue(environment::clr_disable_optimizations)); } -bool EnableInlining(bool defaultValue) { - ToBooleanWithDefault(GetEnvironmentValue(environment::clr_enable_inlining), - defaultValue); +bool EnableInlining(bool defaultValue) +{ + ToBooleanWithDefault(GetEnvironmentValue(environment::clr_enable_inlining), defaultValue); } -bool IsCallTargetEnabled() { +bool IsCallTargetEnabled(bool defaultValue) { #if defined(ARM64) || defined(ARM) - // - // If the architecture is ARM64 or ARM, we enable CallTarget instrumentation by default - // - ToBooleanWithDefault(GetEnvironmentValue(environment::calltarget_enabled), true); + // + // If the architecture is ARM64 or ARM, we enable CallTarget instrumentation by default + // + ToBooleanWithDefault(GetEnvironmentValue(environment::calltarget_enabled), true); #else - ToBooleanWithDefault(GetEnvironmentValue(environment::calltarget_enabled), false); + ToBooleanWithDefault(GetEnvironmentValue(environment::calltarget_enabled), defaultValue); #endif } -bool IsDebugEnabled() { - CheckIfTrue(GetEnvironmentValue(environment::debug_enabled)); +bool IsDebugEnabled() +{ + CheckIfTrue(GetEnvironmentValue(environment::debug_enabled)); } -bool IsDumpILRewriteEnabled() { - CheckIfTrue(GetEnvironmentValue(environment::dump_il_rewrite_enabled)); +bool IsDumpILRewriteEnabled() +{ + CheckIfTrue(GetEnvironmentValue(environment::dump_il_rewrite_enabled)); } -bool IsTracingDisabled() { - CheckIfFalse(GetEnvironmentValue(environment::tracing_enabled)); +bool IsTracingDisabled() +{ + CheckIfFalse(GetEnvironmentValue(environment::tracing_enabled)); } -bool IsAzureAppServices() { - CheckIfTrue(GetEnvironmentValue(environment::azure_app_services)); +bool IsAzureAppServices() +{ + CheckIfTrue(GetEnvironmentValue(environment::azure_app_services)); } -bool IsNetstandardEnabled() { - CheckIfTrue(GetEnvironmentValue(environment::netstandard_enabled)); +bool IsNetstandardEnabled() +{ + CheckIfTrue(GetEnvironmentValue(environment::netstandard_enabled)); } -bool IsDomainNeutralInstrumentation() { - CheckIfTrue(GetEnvironmentValue(environment::domain_neutral_instrumentation)); +bool IsDomainNeutralInstrumentation() +{ + CheckIfTrue(GetEnvironmentValue(environment::domain_neutral_instrumentation)); } -} // namespace trace +} // namespace trace -#endif // DD_CLR_PROFILER_ENVIRONMENT_VARIABLES_UTIL_H_ \ No newline at end of file +#endif // DD_CLR_PROFILER_ENVIRONMENT_VARIABLES_UTIL_H_ \ No newline at end of file diff --git a/src/Datadog.Trace.ClrProfiler.Native/il_rewriter.cpp b/src/Datadog.Trace.ClrProfiler.Native/il_rewriter.cpp index a6bf1b1e4a..38728e534e 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/il_rewriter.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/il_rewriter.cpp @@ -7,19 +7,22 @@ #include "il_rewriter.h" #undef IfFailRet -#define IfFailRet(EXPR) \ - do { \ - HRESULT hr = (EXPR); \ - if (FAILED(hr)) { \ - return (hr); \ - } \ - } while (0) +#define IfFailRet(EXPR) \ + do \ + { \ + HRESULT hr = (EXPR); \ + if (FAILED(hr)) \ + { \ + return (hr); \ + } \ + } while (0) #undef IfNullRet -#define IfNullRet(EXPR) \ - do { \ - if ((EXPR) == NULL) return E_OUTOFMEMORY; \ - } while (0) +#define IfNullRet(EXPR) \ + do \ + { \ + if ((EXPR) == NULL) return E_OUTOFMEMORY; \ + } while (0) #define OPCODEFLAGS_SizeMask 0x0F #define OPCODEFLAGS_BranchTarget 0x10 @@ -85,8 +88,7 @@ static int k_rgnStackPushes[] = { #define PushI8 1 #define PushR8 1 #define PushRef 1 -#define VarPush \ - 1 // Test code doesn't call vararg fcns, so this should not be used +#define VarPush 1 // Test code doesn't call vararg fcns, so this should not be used #include "opcode.def" @@ -104,566 +106,625 @@ static int k_rgnStackPushes[] = { 0 // CEE_SWITCH_ARG }; -ILRewriter::ILRewriter( - ICorProfilerInfo* pICorProfilerInfo, - ICorProfilerFunctionControl* pICorProfilerFunctionControl, - ModuleID moduleID, mdToken tkMethod) - : m_pICorProfilerInfo(pICorProfilerInfo), - m_pICorProfilerFunctionControl(pICorProfilerFunctionControl), - m_moduleId(moduleID), - m_tkMethod(tkMethod), - m_fGenerateTinyHeader(false), - m_pEH(nullptr), - m_pOffsetToInstr(nullptr), - m_pOutputBuffer(nullptr), - m_pIMethodMalloc(nullptr) { - m_IL.m_pNext = &m_IL; - m_IL.m_pPrev = &m_IL; - - m_nInstrs = 0; +ILRewriter::ILRewriter(ICorProfilerInfo* pICorProfilerInfo, ICorProfilerFunctionControl* pICorProfilerFunctionControl, + ModuleID moduleID, mdToken tkMethod) : + m_pICorProfilerInfo(pICorProfilerInfo), + m_pICorProfilerFunctionControl(pICorProfilerFunctionControl), + m_moduleId(moduleID), + m_tkMethod(tkMethod), + m_fGenerateTinyHeader(false), + m_pEH(nullptr), + m_pOffsetToInstr(nullptr), + m_pOutputBuffer(nullptr), + m_pIMethodMalloc(nullptr) +{ + m_IL.m_pNext = &m_IL; + m_IL.m_pPrev = &m_IL; + + m_nInstrs = 0; } -ILRewriter::~ILRewriter() { - ILInstr* p = m_IL.m_pNext; - while (p != &m_IL) { - ILInstr* t = p->m_pNext; - delete p; - p = t; - } - delete[] m_pEH; - delete[] m_pOffsetToInstr; - delete[] m_pOutputBuffer; - - if (m_pIMethodMalloc) { - m_pIMethodMalloc->Release(); - } +ILRewriter::~ILRewriter() +{ + ILInstr* p = m_IL.m_pNext; + while (p != &m_IL) + { + ILInstr* t = p->m_pNext; + delete p; + p = t; + } + delete[] m_pEH; + delete[] m_pOffsetToInstr; + delete[] m_pOutputBuffer; + + if (m_pIMethodMalloc) + { + m_pIMethodMalloc->Release(); + } } -void ILRewriter::InitializeTiny() { - m_tkLocalVarSig = 0; - m_maxStack = 8; - m_flags = CorILMethod_TinyFormat; - m_CodeSize = 0; - m_nEH = 0; - m_fGenerateTinyHeader = true; +void ILRewriter::InitializeTiny() +{ + m_tkLocalVarSig = 0; + m_maxStack = 8; + m_flags = CorILMethod_TinyFormat; + m_CodeSize = 0; + m_nEH = 0; + m_fGenerateTinyHeader = true; } -mdToken ILRewriter::GetTkLocalVarSig() { return m_tkLocalVarSig; } +mdToken ILRewriter::GetTkLocalVarSig() +{ + return m_tkLocalVarSig; +} -void ILRewriter::SetTkLocalVarSig(mdToken tkLocalVarSig) { - m_tkLocalVarSig = tkLocalVarSig; - m_fGenerateTinyHeader = false; +void ILRewriter::SetTkLocalVarSig(mdToken tkLocalVarSig) +{ + m_tkLocalVarSig = tkLocalVarSig; + m_fGenerateTinyHeader = false; } -unsigned ILRewriter::GetEHCount() { return m_nEH; } +unsigned ILRewriter::GetEHCount() +{ + return m_nEH; +} -EHClause* ILRewriter::GetEHPointer() { return m_pEH; } +EHClause* ILRewriter::GetEHPointer() +{ + return m_pEH; +} -void ILRewriter::SetEHClause(EHClause* ehPointer, unsigned ehLength) { - m_nEH = ehLength; - m_pEH = ehPointer; +void ILRewriter::SetEHClause(EHClause* ehPointer, unsigned ehLength) +{ + m_nEH = ehLength; + m_pEH = ehPointer; } -HRESULT ILRewriter::Import() { - LPCBYTE pMethodBytes; +HRESULT ILRewriter::Import() +{ + LPCBYTE pMethodBytes; - IfFailRet(m_pICorProfilerInfo->GetILFunctionBody(m_moduleId, m_tkMethod, - &pMethodBytes, nullptr)); + IfFailRet(m_pICorProfilerInfo->GetILFunctionBody(m_moduleId, m_tkMethod, &pMethodBytes, nullptr)); - COR_ILMETHOD_DECODER decoder((COR_ILMETHOD*)pMethodBytes); + COR_ILMETHOD_DECODER decoder((COR_ILMETHOD*) pMethodBytes); - // Import the header flags - m_tkLocalVarSig = decoder.GetLocalVarSigTok(); - m_maxStack = decoder.GetMaxStack(); - m_flags = (decoder.GetFlags() & CorILMethod_InitLocals); + // Import the header flags + m_tkLocalVarSig = decoder.GetLocalVarSigTok(); + m_maxStack = decoder.GetMaxStack(); + m_flags = (decoder.GetFlags() & CorILMethod_InitLocals); - m_CodeSize = decoder.GetCodeSize(); + m_CodeSize = decoder.GetCodeSize(); - IfFailRet(ImportIL(decoder.Code)); + IfFailRet(ImportIL(decoder.Code)); - IfFailRet(ImportEH(decoder.EH, decoder.EHCount())); + IfFailRet(ImportEH(decoder.EH, decoder.EHCount())); - return S_OK; + return S_OK; } -HRESULT ILRewriter::ImportIL(LPCBYTE pIL) { - m_pOffsetToInstr = new ILInstr*[m_CodeSize + 1]; - IfNullRet(m_pOffsetToInstr); - - ZeroMemory(m_pOffsetToInstr, m_CodeSize * sizeof(ILInstr*)); - - // Set the sentinel instruction - m_pOffsetToInstr[m_CodeSize] = &m_IL; - m_IL.m_opcode = -1; +HRESULT ILRewriter::ImportIL(LPCBYTE pIL) +{ + m_pOffsetToInstr = new ILInstr*[m_CodeSize + 1]; + IfNullRet(m_pOffsetToInstr); - bool fBranch = false; - unsigned offset = 0; - while (offset < m_CodeSize) { - unsigned startOffset = offset; - unsigned opcode = pIL[offset++]; + ZeroMemory(m_pOffsetToInstr, m_CodeSize * sizeof(ILInstr*)); - if (opcode == CEE_PREFIX1) { - if (offset >= m_CodeSize) { - return COR_E_INVALIDPROGRAM; - } - opcode = 0x100 + pIL[offset++]; - } + // Set the sentinel instruction + m_pOffsetToInstr[m_CodeSize] = &m_IL; + m_IL.m_opcode = -1; - if ((CEE_PREFIX7 <= opcode) && (opcode <= CEE_PREFIX2)) { - // NOTE: CEE_PREFIX2-7 are currently not supported - return COR_E_INVALIDPROGRAM; - } + bool fBranch = false; + unsigned offset = 0; + while (offset < m_CodeSize) + { + unsigned startOffset = offset; + unsigned opcode = pIL[offset++]; + + if (opcode == CEE_PREFIX1) + { + if (offset >= m_CodeSize) + { + return COR_E_INVALIDPROGRAM; + } + opcode = 0x100 + pIL[offset++]; + } - if (opcode >= CEE_COUNT) { - return COR_E_INVALIDPROGRAM; - } + if ((CEE_PREFIX7 <= opcode) && (opcode <= CEE_PREFIX2)) + { + // NOTE: CEE_PREFIX2-7 are currently not supported + return COR_E_INVALIDPROGRAM; + } - BYTE flags = s_OpCodeFlags[opcode]; + if (opcode >= CEE_COUNT) + { + return COR_E_INVALIDPROGRAM; + } - int size = (flags & OPCODEFLAGS_SizeMask); - if (offset + size > m_CodeSize) { - return COR_E_INVALIDPROGRAM; - } + BYTE flags = s_OpCodeFlags[opcode]; - ILInstr* pInstr = NewILInstr(); - IfNullRet(pInstr); - - pInstr->m_opcode = opcode; - - InsertBefore(&m_IL, pInstr); - - m_pOffsetToInstr[startOffset] = pInstr; - - switch (flags) { - case 0: - break; - case 1: - pInstr->m_Arg8 = *(UNALIGNED INT8*)&(pIL[offset]); - break; - case 2: - pInstr->m_Arg16 = *(UNALIGNED INT16*)&(pIL[offset]); - break; - case 4: - pInstr->m_Arg32 = *(UNALIGNED INT32*)&(pIL[offset]); - break; - case 8: - pInstr->m_Arg64 = *(UNALIGNED INT64*)&(pIL[offset]); - break; - case 1 | OPCODEFLAGS_BranchTarget: - pInstr->m_Arg32 = offset + 1 + *(UNALIGNED INT8*)&(pIL[offset]); - fBranch = true; - break; - case 4 | OPCODEFLAGS_BranchTarget: - pInstr->m_Arg32 = offset + 4 + *(UNALIGNED INT32*)&(pIL[offset]); - fBranch = true; - break; - case 0 | OPCODEFLAGS_Switch: { - if (offset + sizeof(INT32) > m_CodeSize) { - return COR_E_INVALIDPROGRAM; + int size = (flags & OPCODEFLAGS_SizeMask); + if (offset + size > m_CodeSize) + { + return COR_E_INVALIDPROGRAM; } - unsigned nTargets = *(UNALIGNED INT32*)&(pIL[offset]); - pInstr->m_Arg32 = nTargets; - offset += sizeof(INT32); + ILInstr* pInstr = NewILInstr(); + IfNullRet(pInstr); + + pInstr->m_opcode = opcode; + + InsertBefore(&m_IL, pInstr); + + m_pOffsetToInstr[startOffset] = pInstr; + + switch (flags) + { + case 0: + break; + case 1: + pInstr->m_Arg8 = *(UNALIGNED INT8*) &(pIL[offset]); + break; + case 2: + pInstr->m_Arg16 = *(UNALIGNED INT16*) &(pIL[offset]); + break; + case 4: + pInstr->m_Arg32 = *(UNALIGNED INT32*) &(pIL[offset]); + break; + case 8: + pInstr->m_Arg64 = *(UNALIGNED INT64*) &(pIL[offset]); + break; + case 1 | OPCODEFLAGS_BranchTarget: + pInstr->m_Arg32 = offset + 1 + *(UNALIGNED INT8*) &(pIL[offset]); + fBranch = true; + break; + case 4 | OPCODEFLAGS_BranchTarget: + pInstr->m_Arg32 = offset + 4 + *(UNALIGNED INT32*) &(pIL[offset]); + fBranch = true; + break; + case 0 | OPCODEFLAGS_Switch: + { + if (offset + sizeof(INT32) > m_CodeSize) + { + return COR_E_INVALIDPROGRAM; + } - unsigned base = offset + nTargets * sizeof(INT32); + unsigned nTargets = *(UNALIGNED INT32*) &(pIL[offset]); + pInstr->m_Arg32 = nTargets; + offset += sizeof(INT32); - for (unsigned iTarget = 0; iTarget < nTargets; iTarget++) { - if (offset + sizeof(INT32) > m_CodeSize) { - return COR_E_INVALIDPROGRAM; - } + unsigned base = offset + nTargets * sizeof(INT32); + + for (unsigned iTarget = 0; iTarget < nTargets; iTarget++) + { + if (offset + sizeof(INT32) > m_CodeSize) + { + return COR_E_INVALIDPROGRAM; + } - pInstr = NewILInstr(); - IfNullRet(pInstr); + pInstr = NewILInstr(); + IfNullRet(pInstr); - pInstr->m_opcode = CEE_SWITCH_ARG; + pInstr->m_opcode = CEE_SWITCH_ARG; - pInstr->m_Arg32 = base + *(UNALIGNED INT32*)&(pIL[offset]); - offset += sizeof(INT32); + pInstr->m_Arg32 = base + *(UNALIGNED INT32*) &(pIL[offset]); + offset += sizeof(INT32); - InsertBefore(&m_IL, pInstr); + InsertBefore(&m_IL, pInstr); + } + fBranch = true; + break; + } + default: + return COR_E_INVALIDPROGRAM; } - fBranch = true; - break; - } - default: + offset += size; + } + + if (offset != m_CodeSize) + { return COR_E_INVALIDPROGRAM; } - offset += size; - } - if (offset != m_CodeSize) { - return COR_E_INVALIDPROGRAM; - } - - if (fBranch) { - // Go over all control flow instructions and resolve the targets - for (ILInstr* pInstr = m_IL.m_pNext; pInstr != &m_IL; - pInstr = pInstr->m_pNext) { - if (s_OpCodeFlags[pInstr->m_opcode] & OPCODEFLAGS_BranchTarget) { - IfFailRet(GetInstrFromOffset(pInstr->m_Arg32, &pInstr->m_pTarget)); - } + if (fBranch) + { + // Go over all control flow instructions and resolve the targets + for (ILInstr* pInstr = m_IL.m_pNext; pInstr != &m_IL; pInstr = pInstr->m_pNext) + { + if (s_OpCodeFlags[pInstr->m_opcode] & OPCODEFLAGS_BranchTarget) + { + IfFailRet(GetInstrFromOffset(pInstr->m_Arg32, &pInstr->m_pTarget)); + } + } } - } - return S_OK; + return S_OK; } -HRESULT ILRewriter::ImportEH(const COR_ILMETHOD_SECT_EH* pILEH, unsigned nEH) { - if(m_pEH != nullptr) - { - return COR_E_INVALIDOPERATION; - } +HRESULT ILRewriter::ImportEH(const COR_ILMETHOD_SECT_EH* pILEH, unsigned nEH) +{ + if (m_pEH != nullptr) + { + return COR_E_INVALIDOPERATION; + } - m_nEH = nEH; + m_nEH = nEH; - if (nEH == 0) return S_OK; + if (nEH == 0) return S_OK; - IfNullRet(m_pEH = new EHClause[m_nEH]); - for (unsigned iEH = 0; iEH < m_nEH; iEH++) { - // If the EH clause is in tiny form, the call to pILEH->EHClause() below - // will use this as a scratch buffer to expand the EH clause into its fat - // form. - COR_ILMETHOD_SECT_EH_CLAUSE_FAT scratch; + IfNullRet(m_pEH = new EHClause[m_nEH]); + for (unsigned iEH = 0; iEH < m_nEH; iEH++) + { + // If the EH clause is in tiny form, the call to pILEH->EHClause() below + // will use this as a scratch buffer to expand the EH clause into its fat + // form. + COR_ILMETHOD_SECT_EH_CLAUSE_FAT scratch; - const COR_ILMETHOD_SECT_EH_CLAUSE_FAT* ehInfo; - ehInfo = (COR_ILMETHOD_SECT_EH_CLAUSE_FAT*)pILEH->EHClause(iEH, &scratch); + const COR_ILMETHOD_SECT_EH_CLAUSE_FAT* ehInfo; + ehInfo = (COR_ILMETHOD_SECT_EH_CLAUSE_FAT*) pILEH->EHClause(iEH, &scratch); - EHClause* clause = &(m_pEH[iEH]); - clause->m_Flags = ehInfo->GetFlags(); - ILInstr* pInstr = nullptr; + EHClause* clause = &(m_pEH[iEH]); + clause->m_Flags = ehInfo->GetFlags(); + ILInstr* pInstr = nullptr; - IfFailRet(GetInstrFromOffset(ehInfo->GetTryOffset(), &pInstr)); - clause->m_pTryBegin = pInstr; + IfFailRet(GetInstrFromOffset(ehInfo->GetTryOffset(), &pInstr)); + clause->m_pTryBegin = pInstr; - IfFailRet(GetInstrFromOffset(ehInfo->GetTryOffset() + ehInfo->GetTryLength(), &pInstr)); - clause->m_pTryEnd = pInstr; + IfFailRet(GetInstrFromOffset(ehInfo->GetTryOffset() + ehInfo->GetTryLength(), &pInstr)); + clause->m_pTryEnd = pInstr; - IfFailRet(GetInstrFromOffset(ehInfo->GetHandlerOffset(), &pInstr)); - clause->m_pHandlerBegin = pInstr; + IfFailRet(GetInstrFromOffset(ehInfo->GetHandlerOffset(), &pInstr)); + clause->m_pHandlerBegin = pInstr; - IfFailRet(GetInstrFromOffset(ehInfo->GetHandlerOffset() + ehInfo->GetHandlerLength(), &pInstr)); - clause->m_pHandlerEnd = pInstr->m_pPrev; + IfFailRet(GetInstrFromOffset(ehInfo->GetHandlerOffset() + ehInfo->GetHandlerLength(), &pInstr)); + clause->m_pHandlerEnd = pInstr->m_pPrev; - if ((clause->m_Flags & COR_ILEXCEPTION_CLAUSE_FILTER) == 0) { - clause->m_ClassToken = ehInfo->GetClassToken(); - } else { - IfFailRet(GetInstrFromOffset(ehInfo->GetFilterOffset(), &pInstr)); - clause->m_pFilter = pInstr; + if ((clause->m_Flags & COR_ILEXCEPTION_CLAUSE_FILTER) == 0) + { + clause->m_ClassToken = ehInfo->GetClassToken(); + } + else + { + IfFailRet(GetInstrFromOffset(ehInfo->GetFilterOffset(), &pInstr)); + clause->m_pFilter = pInstr; + } } - } - return S_OK; + return S_OK; } -ILInstr* ILRewriter::NewILInstr() { - m_nInstrs++; - return new ILInstr(); +ILInstr* ILRewriter::NewILInstr() +{ + m_nInstrs++; + return new ILInstr(); } -HRESULT ILRewriter::GetInstrFromOffset(unsigned offset, ILInstr** ppInstr) { - if (offset <= m_CodeSize) { - ILInstr* result = m_pOffsetToInstr[offset]; +HRESULT ILRewriter::GetInstrFromOffset(unsigned offset, ILInstr** ppInstr) +{ + if (offset <= m_CodeSize) + { + ILInstr* result = m_pOffsetToInstr[offset]; - if(result != nullptr) { - *ppInstr = result; - return S_OK; + if (result != nullptr) + { + *ppInstr = result; + return S_OK; + } } - } - return COR_E_INVALIDPROGRAM; + return COR_E_INVALIDPROGRAM; } -void ILRewriter::InsertBefore(ILInstr* pWhere, ILInstr* pWhat) { - pWhat->m_pNext = pWhere; - pWhat->m_pPrev = pWhere->m_pPrev; +void ILRewriter::InsertBefore(ILInstr* pWhere, ILInstr* pWhat) +{ + pWhat->m_pNext = pWhere; + pWhat->m_pPrev = pWhere->m_pPrev; - pWhat->m_pNext->m_pPrev = pWhat; - pWhat->m_pPrev->m_pNext = pWhat; + pWhat->m_pNext->m_pPrev = pWhat; + pWhat->m_pPrev->m_pNext = pWhat; - AdjustState(pWhat); + AdjustState(pWhat); } -void ILRewriter::InsertAfter(ILInstr* pWhere, ILInstr* pWhat) { - pWhat->m_pNext = pWhere->m_pNext; - pWhat->m_pPrev = pWhere; +void ILRewriter::InsertAfter(ILInstr* pWhere, ILInstr* pWhat) +{ + pWhat->m_pNext = pWhere->m_pNext; + pWhat->m_pPrev = pWhere; - pWhat->m_pNext->m_pPrev = pWhat; - pWhat->m_pPrev->m_pNext = pWhat; + pWhat->m_pNext->m_pPrev = pWhat; + pWhat->m_pPrev->m_pNext = pWhat; - AdjustState(pWhat); + AdjustState(pWhat); } -void ILRewriter::AdjustState(ILInstr* pNewInstr) { - m_maxStack += k_rgnStackPushes[pNewInstr->m_opcode]; +void ILRewriter::AdjustState(ILInstr* pNewInstr) +{ + m_maxStack += k_rgnStackPushes[pNewInstr->m_opcode]; } -ILInstr* ILRewriter::GetILList() { return &m_IL; } +ILInstr* ILRewriter::GetILList() +{ + return &m_IL; +} -HRESULT ILRewriter::Export() { - // One instruction produces 2 + sizeof(native int) bytes in the worst case - // which can be 10 bytes for 64-bit. For simplification we just use 10 here. - unsigned maxSize = m_nInstrs * 10; +HRESULT ILRewriter::Export() +{ + // One instruction produces 2 + sizeof(native int) bytes in the worst case + // which can be 10 bytes for 64-bit. For simplification we just use 10 here. + unsigned maxSize = m_nInstrs * 10; - m_pOutputBuffer = new BYTE[maxSize]; - IfNullRet(m_pOutputBuffer); + m_pOutputBuffer = new BYTE[maxSize]; + IfNullRet(m_pOutputBuffer); again: - BYTE* pIL = m_pOutputBuffer; - - bool fBranch = false; - unsigned offset = 0; + BYTE* pIL = m_pOutputBuffer; - // Go over all instructions and produce code for them - for (ILInstr* pInstr = m_IL.m_pNext; pInstr != &m_IL; - pInstr = pInstr->m_pNext) { + bool fBranch = false; + unsigned offset = 0; - if(offset >= maxSize) + // Go over all instructions and produce code for them + for (ILInstr* pInstr = m_IL.m_pNext; pInstr != &m_IL; pInstr = pInstr->m_pNext) { - return COR_E_INDEXOUTOFRANGE; - } - pInstr->m_offset = offset; + if (offset >= maxSize) + { + return COR_E_INDEXOUTOFRANGE; + } + + pInstr->m_offset = offset; + + unsigned opcode = pInstr->m_opcode; + if (opcode < CEE_COUNT) + { + // CEE_PREFIX1 refers not to instruction prefixes (like tail.), but to + // the lead byte of multi-byte opcodes. For now, the only lead byte + // supported is CEE_PREFIX1 = 0xFE. + if (opcode >= 0x100) m_pOutputBuffer[offset++] = CEE_PREFIX1; - unsigned opcode = pInstr->m_opcode; - if (opcode < CEE_COUNT) { - // CEE_PREFIX1 refers not to instruction prefixes (like tail.), but to - // the lead byte of multi-byte opcodes. For now, the only lead byte - // supported is CEE_PREFIX1 = 0xFE. - if (opcode >= 0x100) m_pOutputBuffer[offset++] = CEE_PREFIX1; + // This appears to depend on an implicit conversion from + // unsigned opcode down to BYTE, to deliberately lose data and have + // opcode >= 0x100 wrap around to 0. + m_pOutputBuffer[offset++] = (opcode & 0xFF); + } + + if (pInstr->m_opcode >= (sizeof(s_OpCodeFlags) / sizeof(BYTE))) + { + return COR_E_INVALIDPROGRAM; + } - // This appears to depend on an implicit conversion from - // unsigned opcode down to BYTE, to deliberately lose data and have - // opcode >= 0x100 wrap around to 0. - m_pOutputBuffer[offset++] = (opcode & 0xFF); + BYTE flags = s_OpCodeFlags[pInstr->m_opcode]; + switch (flags) + { + case 0: + break; + case 1: + *(UNALIGNED INT8*) &(pIL[offset]) = pInstr->m_Arg8; + break; + case 2: + *(UNALIGNED INT16*) &(pIL[offset]) = pInstr->m_Arg16; + break; + case 4: + *(UNALIGNED INT32*) &(pIL[offset]) = pInstr->m_Arg32; + break; + case 8: + *(UNALIGNED INT64*) &(pIL[offset]) = pInstr->m_Arg64; + break; + case 1 | OPCODEFLAGS_BranchTarget: + fBranch = true; + break; + case 4 | OPCODEFLAGS_BranchTarget: + fBranch = true; + break; + case 0 | OPCODEFLAGS_Switch: + *(UNALIGNED INT32*) &(pIL[offset]) = pInstr->m_Arg32; + offset += sizeof(INT32); + break; + default: + return COR_E_INVALIDPROGRAM; + } + offset += (flags & OPCODEFLAGS_SizeMask); } + m_IL.m_offset = offset; - if (pInstr->m_opcode >= (sizeof(s_OpCodeFlags) / sizeof(BYTE))) + if (fBranch) { - return COR_E_INVALIDPROGRAM; - } + bool fTryAgain = false; + unsigned switchBase = 0; + + // Go over all control flow instructions and resolve the targets + for (ILInstr* pInstr = m_IL.m_pNext; pInstr != &m_IL; pInstr = pInstr->m_pNext) + { + unsigned opcode = pInstr->m_opcode; + + if (pInstr->m_opcode == CEE_SWITCH) + { + switchBase = pInstr->m_offset + 1 + sizeof(INT32) * (pInstr->m_Arg32 + 1); + continue; + } + if (opcode == CEE_SWITCH_ARG) + { + // Switch args are special + *(UNALIGNED INT32*) &(pIL[pInstr->m_offset]) = pInstr->m_pTarget->m_offset - switchBase; + continue; + } - BYTE flags = s_OpCodeFlags[pInstr->m_opcode]; - switch (flags) { - case 0: - break; - case 1: - *(UNALIGNED INT8*)&(pIL[offset]) = pInstr->m_Arg8; - break; - case 2: - *(UNALIGNED INT16*)&(pIL[offset]) = pInstr->m_Arg16; - break; - case 4: - *(UNALIGNED INT32*)&(pIL[offset]) = pInstr->m_Arg32; - break; - case 8: - *(UNALIGNED INT64*)&(pIL[offset]) = pInstr->m_Arg64; - break; - case 1 | OPCODEFLAGS_BranchTarget: - fBranch = true; - break; - case 4 | OPCODEFLAGS_BranchTarget: - fBranch = true; - break; - case 0 | OPCODEFLAGS_Switch: - *(UNALIGNED INT32*)&(pIL[offset]) = pInstr->m_Arg32; - offset += sizeof(INT32); - break; - default: - return COR_E_INVALIDPROGRAM; - } - offset += (flags & OPCODEFLAGS_SizeMask); - } - m_IL.m_offset = offset; - - if (fBranch) { - bool fTryAgain = false; - unsigned switchBase = 0; - - // Go over all control flow instructions and resolve the targets - for (ILInstr* pInstr = m_IL.m_pNext; pInstr != &m_IL; - pInstr = pInstr->m_pNext) { - unsigned opcode = pInstr->m_opcode; - - if (pInstr->m_opcode == CEE_SWITCH) { - switchBase = - pInstr->m_offset + 1 + sizeof(INT32) * (pInstr->m_Arg32 + 1); - continue; - } - if (opcode == CEE_SWITCH_ARG) { - // Switch args are special - *(UNALIGNED INT32*)&(pIL[pInstr->m_offset]) = - pInstr->m_pTarget->m_offset - switchBase; - continue; - } - - BYTE flags = s_OpCodeFlags[pInstr->m_opcode]; - - if (flags & OPCODEFLAGS_BranchTarget) { - int delta = pInstr->m_pTarget->m_offset - pInstr->m_pNext->m_offset; - - switch (flags) { - case 1 | OPCODEFLAGS_BranchTarget: - // Check if delta is too big to fit into an INT8. - // - // (see #pragma at top of file) - if ((INT8)delta != delta) { - if (opcode == CEE_LEAVE_S) { - pInstr->m_opcode = CEE_LEAVE; - } else { - if(!(opcode >= CEE_BR_S && opcode <= CEE_BLT_UN_S)) - { - return COR_E_INVALIDPROGRAM; - } + BYTE flags = s_OpCodeFlags[pInstr->m_opcode]; - pInstr->m_opcode = opcode - CEE_BR_S + CEE_BR; + if (flags & OPCODEFLAGS_BranchTarget) + { + int delta = pInstr->m_pTarget->m_offset - pInstr->m_pNext->m_offset; - if(!(pInstr->m_opcode >= CEE_BR && pInstr->m_opcode <= CEE_BLT_UN)) + switch (flags) { - return COR_E_INVALIDPROGRAM; + case 1 | OPCODEFLAGS_BranchTarget: + // Check if delta is too big to fit into an INT8. + // + // (see #pragma at top of file) + if ((INT8) delta != delta) + { + if (opcode == CEE_LEAVE_S) + { + pInstr->m_opcode = CEE_LEAVE; + } + else + { + if (!(opcode >= CEE_BR_S && opcode <= CEE_BLT_UN_S)) + { + return COR_E_INVALIDPROGRAM; + } + + pInstr->m_opcode = opcode - CEE_BR_S + CEE_BR; + + if (!(pInstr->m_opcode >= CEE_BR && pInstr->m_opcode <= CEE_BLT_UN)) + { + return COR_E_INVALIDPROGRAM; + } + } + fTryAgain = true; + continue; + } + *(UNALIGNED INT8*) &(pIL[pInstr->m_pNext->m_offset - sizeof(INT8)]) = delta; + break; + case 4 | OPCODEFLAGS_BranchTarget: + *(UNALIGNED INT32*) &(pIL[pInstr->m_pNext->m_offset - sizeof(INT32)]) = delta; + break; + default: + return COR_E_INVALIDPROGRAM; } - } - fTryAgain = true; - continue; } - *(UNALIGNED INT8*)&(pIL[pInstr->m_pNext->m_offset - sizeof(INT8)]) = - delta; - break; - case 4 | OPCODEFLAGS_BranchTarget: - *(UNALIGNED INT32*)&( - pIL[pInstr->m_pNext->m_offset - sizeof(INT32)]) = delta; - break; - default: - return COR_E_INVALIDPROGRAM; } - } + + // Do the whole thing again if we changed the size of some branch targets + if (fTryAgain) goto again; } - // Do the whole thing again if we changed the size of some branch targets - if (fTryAgain) goto again; - } - - unsigned codeSize = offset; - unsigned totalSize; - LPBYTE pBody = NULL; - if (m_fGenerateTinyHeader) { - // Make sure we can fit in a tiny header - if (codeSize >= 64) return E_FAIL; - - totalSize = sizeof(IMAGE_COR_ILMETHOD_TINY) + codeSize; - pBody = AllocateILMemory(totalSize); - IfNullRet(pBody); - - BYTE* pCurrent = pBody; - - // Here's the tiny header - *pCurrent = (BYTE)(CorILMethod_TinyFormat | (codeSize << 2)); - pCurrent += sizeof(IMAGE_COR_ILMETHOD_TINY); - - // And the body - CopyMemory(pCurrent, m_pOutputBuffer, codeSize); - } else { - // Use FAT header - - unsigned alignedCodeSize = (offset + 3) & ~3; - - totalSize = sizeof(IMAGE_COR_ILMETHOD_FAT) + alignedCodeSize + - (m_nEH ? (sizeof(IMAGE_COR_ILMETHOD_SECT_FAT) + - sizeof(IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT) * m_nEH) - : 0); - - pBody = AllocateILMemory(totalSize); - IfNullRet(pBody); - - BYTE* pCurrent = pBody; - - IMAGE_COR_ILMETHOD_FAT* pHeader = (IMAGE_COR_ILMETHOD_FAT*)pCurrent; - pHeader->Flags = - m_flags | (m_nEH ? CorILMethod_MoreSects : 0) | CorILMethod_FatFormat; - pHeader->Size = sizeof(IMAGE_COR_ILMETHOD_FAT) / sizeof(DWORD); - pHeader->MaxStack = m_maxStack; - pHeader->CodeSize = offset; - pHeader->LocalVarSigTok = m_tkLocalVarSig; - - pCurrent = (BYTE*)(pHeader + 1); - - CopyMemory(pCurrent, m_pOutputBuffer, codeSize); - pCurrent += alignedCodeSize; - - if (m_nEH != 0) { - IMAGE_COR_ILMETHOD_SECT_FAT* pEH = (IMAGE_COR_ILMETHOD_SECT_FAT*)pCurrent; - pEH->Kind = CorILMethod_Sect_EHTable | CorILMethod_Sect_FatFormat; - pEH->DataSize = - (unsigned)(sizeof(IMAGE_COR_ILMETHOD_SECT_FAT) + - sizeof(IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT) * m_nEH); - - pCurrent = (BYTE*)(pEH + 1); - - for (unsigned iEH = 0; iEH < m_nEH; iEH++) { - EHClause* pSrc = &(m_pEH[iEH]); - IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT* pDst = - (IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT*)pCurrent; - - pDst->Flags = pSrc->m_Flags; - pDst->TryOffset = pSrc->m_pTryBegin->m_offset; - pDst->TryLength = - pSrc->m_pTryEnd->m_offset - pSrc->m_pTryBegin->m_offset; - pDst->HandlerOffset = pSrc->m_pHandlerBegin->m_offset; - pDst->HandlerLength = pSrc->m_pHandlerEnd->m_pNext->m_offset - - pSrc->m_pHandlerBegin->m_offset; - if ((pSrc->m_Flags & COR_ILEXCEPTION_CLAUSE_FILTER) == 0) - pDst->ClassToken = pSrc->m_ClassToken; - else - pDst->FilterOffset = pSrc->m_pFilter->m_offset; + unsigned codeSize = offset; + unsigned totalSize; + LPBYTE pBody = NULL; + if (m_fGenerateTinyHeader) + { + // Make sure we can fit in a tiny header + if (codeSize >= 64) return E_FAIL; + + totalSize = sizeof(IMAGE_COR_ILMETHOD_TINY) + codeSize; + pBody = AllocateILMemory(totalSize); + IfNullRet(pBody); + + BYTE* pCurrent = pBody; + + // Here's the tiny header + *pCurrent = (BYTE)(CorILMethod_TinyFormat | (codeSize << 2)); + pCurrent += sizeof(IMAGE_COR_ILMETHOD_TINY); + + // And the body + CopyMemory(pCurrent, m_pOutputBuffer, codeSize); + } + else + { + // Use FAT header + + unsigned alignedCodeSize = (offset + 3) & ~3; + + totalSize = + sizeof(IMAGE_COR_ILMETHOD_FAT) + alignedCodeSize + + (m_nEH ? (sizeof(IMAGE_COR_ILMETHOD_SECT_FAT) + sizeof(IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT) * m_nEH) : 0); + + pBody = AllocateILMemory(totalSize); + IfNullRet(pBody); + + BYTE* pCurrent = pBody; + + IMAGE_COR_ILMETHOD_FAT* pHeader = (IMAGE_COR_ILMETHOD_FAT*) pCurrent; + pHeader->Flags = m_flags | (m_nEH ? CorILMethod_MoreSects : 0) | CorILMethod_FatFormat; + pHeader->Size = sizeof(IMAGE_COR_ILMETHOD_FAT) / sizeof(DWORD); + pHeader->MaxStack = m_maxStack; + pHeader->CodeSize = offset; + pHeader->LocalVarSigTok = m_tkLocalVarSig; + + pCurrent = (BYTE*) (pHeader + 1); + + CopyMemory(pCurrent, m_pOutputBuffer, codeSize); + pCurrent += alignedCodeSize; + + if (m_nEH != 0) + { + IMAGE_COR_ILMETHOD_SECT_FAT* pEH = (IMAGE_COR_ILMETHOD_SECT_FAT*) pCurrent; + pEH->Kind = CorILMethod_Sect_EHTable | CorILMethod_Sect_FatFormat; + pEH->DataSize = (unsigned) (sizeof(IMAGE_COR_ILMETHOD_SECT_FAT) + + sizeof(IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT) * m_nEH); + + pCurrent = (BYTE*) (pEH + 1); + + for (unsigned iEH = 0; iEH < m_nEH; iEH++) + { + EHClause* pSrc = &(m_pEH[iEH]); + IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT* pDst = (IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT*) pCurrent; + + pDst->Flags = pSrc->m_Flags; + pDst->TryOffset = pSrc->m_pTryBegin->m_offset; + pDst->TryLength = pSrc->m_pTryEnd->m_offset - pSrc->m_pTryBegin->m_offset; + pDst->HandlerOffset = pSrc->m_pHandlerBegin->m_offset; + pDst->HandlerLength = pSrc->m_pHandlerEnd->m_pNext->m_offset - pSrc->m_pHandlerBegin->m_offset; + if ((pSrc->m_Flags & COR_ILEXCEPTION_CLAUSE_FILTER) == 0) + pDst->ClassToken = pSrc->m_ClassToken; + else + pDst->FilterOffset = pSrc->m_pFilter->m_offset; - pCurrent = (BYTE*)(pDst + 1); - } + pCurrent = (BYTE*) (pDst + 1); + } + } } - } - IfFailRet(SetILFunctionBody(totalSize, pBody)); - DeallocateILMemory(pBody); + IfFailRet(SetILFunctionBody(totalSize, pBody)); + DeallocateILMemory(pBody); - return S_OK; + return S_OK; } -HRESULT ILRewriter::SetILFunctionBody(unsigned size, LPBYTE pBody) { - if (m_pICorProfilerFunctionControl != nullptr) { - // We're supplying IL for a rejit, so use the rejit mechanism - IfFailRet(m_pICorProfilerFunctionControl->SetILFunctionBody(size, pBody)); - } else { - // "classic-style" instrumentation on first JIT, so use old mechanism - IfFailRet( - m_pICorProfilerInfo->SetILFunctionBody(m_moduleId, m_tkMethod, pBody)); - } - - return S_OK; +HRESULT ILRewriter::SetILFunctionBody(unsigned size, LPBYTE pBody) +{ + if (m_pICorProfilerFunctionControl != nullptr) + { + // We're supplying IL for a rejit, so use the rejit mechanism + IfFailRet(m_pICorProfilerFunctionControl->SetILFunctionBody(size, pBody)); + } + else + { + // "classic-style" instrumentation on first JIT, so use old mechanism + IfFailRet(m_pICorProfilerInfo->SetILFunctionBody(m_moduleId, m_tkMethod, pBody)); + } + + return S_OK; } -LPBYTE ILRewriter::AllocateILMemory(unsigned size) { - if (m_pICorProfilerFunctionControl != nullptr) { - // We're supplying IL for a rejit, so we can just allocate from - // the heap - return new BYTE[size]; - } +LPBYTE ILRewriter::AllocateILMemory(unsigned size) +{ + if (m_pICorProfilerFunctionControl != nullptr) + { + // We're supplying IL for a rejit, so we can just allocate from + // the heap + return new BYTE[size]; + } - // Else, this is "classic-style" instrumentation on first JIT, and - // need to use the CLR's IL allocator + // Else, this is "classic-style" instrumentation on first JIT, and + // need to use the CLR's IL allocator - if (FAILED(m_pICorProfilerInfo->GetILFunctionBodyAllocator( - m_moduleId, &m_pIMethodMalloc))) - return nullptr; + if (FAILED(m_pICorProfilerInfo->GetILFunctionBodyAllocator(m_moduleId, &m_pIMethodMalloc))) return nullptr; - return (LPBYTE)m_pIMethodMalloc->Alloc(size); + return (LPBYTE) m_pIMethodMalloc->Alloc(size); } -void ILRewriter::DeallocateILMemory(LPBYTE pBody) { - if (m_pICorProfilerFunctionControl == nullptr) { - // Old-style instrumentation does not provide a way to free up bytes - return; - } +void ILRewriter::DeallocateILMemory(LPBYTE pBody) +{ + if (m_pICorProfilerFunctionControl == nullptr) + { + // Old-style instrumentation does not provide a way to free up bytes + return; + } - delete[] pBody; + delete[] pBody; } -unsigned ILRewriter::GetMaxStackValue() { return m_maxStack; } +unsigned ILRewriter::GetMaxStackValue() +{ + return m_maxStack; +} diff --git a/src/Datadog.Trace.ClrProfiler.Native/il_rewriter.h b/src/Datadog.Trace.ClrProfiler.Native/il_rewriter.h index 2e6ee6a72a..1799656300 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/il_rewriter.h +++ b/src/Datadog.Trace.ClrProfiler.Native/il_rewriter.h @@ -8,133 +8,138 @@ #include #include -typedef enum { +typedef enum +{ #define OPDEF(c, s, pop, push, args, type, l, s1, s2, ctrl) c, #include "opcode.def" #undef OPDEF - CEE_COUNT, - CEE_SWITCH_ARG, - // special internal instructions + CEE_COUNT, + CEE_SWITCH_ARG, + // special internal instructions } OPCODE; -struct ILInstr { - ILInstr* m_pNext; - ILInstr* m_pPrev; - - unsigned m_opcode; - unsigned m_offset; - - union { - ILInstr* m_pTarget; - INT8 m_Arg8; - INT16 m_Arg16; - INT32 m_Arg32; - INT64 m_Arg64; - }; +struct ILInstr +{ + ILInstr* m_pNext; + ILInstr* m_pPrev; + + unsigned m_opcode; + unsigned m_offset; + + union + { + ILInstr* m_pTarget; + INT8 m_Arg8; + INT16 m_Arg16; + INT32 m_Arg32; + INT64 m_Arg64; + }; }; -struct EHClause { - CorExceptionFlag m_Flags; - ILInstr* m_pTryBegin; - ILInstr* m_pTryEnd; - ILInstr* m_pHandlerBegin; // First instruction inside the handler - ILInstr* m_pHandlerEnd; // Last instruction inside the handler - union { - DWORD m_ClassToken; // use for type-based exception handlers - ILInstr* m_pFilter; // use for filter-based exception handlers - // (COR_ILEXCEPTION_CLAUSE_FILTER is set) - }; +struct EHClause +{ + CorExceptionFlag m_Flags; + ILInstr* m_pTryBegin; + ILInstr* m_pTryEnd; + ILInstr* m_pHandlerBegin; // First instruction inside the handler + ILInstr* m_pHandlerEnd; // Last instruction inside the handler + union + { + DWORD m_ClassToken; // use for type-based exception handlers + ILInstr* m_pFilter; // use for filter-based exception handlers + // (COR_ILEXCEPTION_CLAUSE_FILTER is set) + }; }; -class ILRewriter { - private: - ICorProfilerInfo* m_pICorProfilerInfo; - ICorProfilerFunctionControl* m_pICorProfilerFunctionControl; +class ILRewriter +{ +private: + ICorProfilerInfo* m_pICorProfilerInfo; + ICorProfilerFunctionControl* m_pICorProfilerFunctionControl; - ModuleID m_moduleId; - mdToken m_tkMethod; + ModuleID m_moduleId; + mdToken m_tkMethod; - mdToken m_tkLocalVarSig; - unsigned m_maxStack; - unsigned m_flags; - bool m_fGenerateTinyHeader; + mdToken m_tkLocalVarSig; + unsigned m_maxStack; + unsigned m_flags; + bool m_fGenerateTinyHeader; - ILInstr m_IL; // Double linked list of all il instructions + ILInstr m_IL; // Double linked list of all il instructions - unsigned m_nEH; - EHClause* m_pEH; + unsigned m_nEH; + EHClause* m_pEH; - // Helper table for importing. Sparse array that maps BYTE offset of - // beginning of an instruction to that instruction's ILInstr*. BYTE offsets - // that don't correspond to the beginning of an instruction are mapped to - // NULL. - ILInstr** m_pOffsetToInstr; - unsigned m_CodeSize; + // Helper table for importing. Sparse array that maps BYTE offset of + // beginning of an instruction to that instruction's ILInstr*. BYTE offsets + // that don't correspond to the beginning of an instruction are mapped to + // NULL. + ILInstr** m_pOffsetToInstr; + unsigned m_CodeSize; - unsigned m_nInstrs; + unsigned m_nInstrs; - BYTE* m_pOutputBuffer; + BYTE* m_pOutputBuffer; - IMethodMalloc* m_pIMethodMalloc; + IMethodMalloc* m_pIMethodMalloc; - public: - ILRewriter(ICorProfilerInfo* pICorProfilerInfo, - ICorProfilerFunctionControl* pICorProfilerFunctionControl, - ModuleID moduleID, mdToken tkMethod); +public: + ILRewriter(ICorProfilerInfo* pICorProfilerInfo, ICorProfilerFunctionControl* pICorProfilerFunctionControl, + ModuleID moduleID, mdToken tkMethod); - ~ILRewriter(); + ~ILRewriter(); - void InitializeTiny(); + void InitializeTiny(); - mdToken GetTkLocalVarSig(); + mdToken GetTkLocalVarSig(); - void SetTkLocalVarSig(mdToken tkLocalVarSig); + void SetTkLocalVarSig(mdToken tkLocalVarSig); - unsigned GetEHCount(); + unsigned GetEHCount(); - EHClause* GetEHPointer(); + EHClause* GetEHPointer(); - void SetEHClause(EHClause* ehPointer, unsigned ehLength); + void SetEHClause(EHClause* ehPointer, unsigned ehLength); - ///////////////////////////////////////////////////////////////////////////////////////////////// - // - // I M P O R T - // - //////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////// + // + // I M P O R T + // + //////////////////////////////////////////////////////////////////////////////////////////////// - HRESULT Import(); + HRESULT Import(); - HRESULT ImportIL(LPCBYTE pIL); + HRESULT ImportIL(LPCBYTE pIL); - HRESULT ImportEH(const COR_ILMETHOD_SECT_EH* pILEH, unsigned nEH); + HRESULT ImportEH(const COR_ILMETHOD_SECT_EH* pILEH, unsigned nEH); - ILInstr* NewILInstr(); + ILInstr* NewILInstr(); - HRESULT GetInstrFromOffset(unsigned offset, ILInstr** ppInstr); + HRESULT GetInstrFromOffset(unsigned offset, ILInstr** ppInstr); - void InsertBefore(ILInstr* pWhere, ILInstr* pWhat); + void InsertBefore(ILInstr* pWhere, ILInstr* pWhat); - void InsertAfter(ILInstr* pWhere, ILInstr* pWhat); + void InsertAfter(ILInstr* pWhere, ILInstr* pWhat); - void AdjustState(ILInstr* pNewInstr); + void AdjustState(ILInstr* pNewInstr); - ILInstr* GetILList(); + ILInstr* GetILList(); - ///////////////////////////////////////////////////////////////////////////////////////////////// - // - // E X P O R T - // - //////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////// + // + // E X P O R T + // + //////////////////////////////////////////////////////////////////////////////////////////////// - HRESULT Export(); + HRESULT Export(); - HRESULT SetILFunctionBody(unsigned size, LPBYTE pBody); + HRESULT SetILFunctionBody(unsigned size, LPBYTE pBody); - LPBYTE AllocateILMemory(unsigned size); + LPBYTE AllocateILMemory(unsigned size); - void DeallocateILMemory(LPBYTE pBody); + void DeallocateILMemory(LPBYTE pBody); - unsigned GetMaxStackValue(); + unsigned GetMaxStackValue(); }; -#endif // DD_CLR_PROFILER_IL_REWRITER_H_ +#endif // DD_CLR_PROFILER_IL_REWRITER_H_ diff --git a/src/Datadog.Trace.ClrProfiler.Native/il_rewriter_wrapper.cpp b/src/Datadog.Trace.ClrProfiler.Native/il_rewriter_wrapper.cpp index 33da8bea4c..dfb7902070 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/il_rewriter_wrapper.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/il_rewriter_wrapper.cpp @@ -1,276 +1,331 @@ #include "il_rewriter_wrapper.h" -ILRewriter* ILRewriterWrapper::GetILRewriter() const { return m_ILRewriter; } +ILRewriter* ILRewriterWrapper::GetILRewriter() const +{ + return m_ILRewriter; +} -ILInstr* ILRewriterWrapper::GetCurrentILInstr() const { return m_ILInstr; } +ILInstr* ILRewriterWrapper::GetCurrentILInstr() const +{ + return m_ILInstr; +} -void ILRewriterWrapper::SetILPosition(ILInstr* pILInstr) { - m_ILInstr = pILInstr; +void ILRewriterWrapper::SetILPosition(ILInstr* pILInstr) +{ + m_ILInstr = pILInstr; } -void ILRewriterWrapper::Pop() const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_POP; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); +void ILRewriterWrapper::Pop() const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_POP; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); } -ILInstr* ILRewriterWrapper::LoadNull() const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_LDNULL; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); - return pNewInstr; +ILInstr* ILRewriterWrapper::LoadNull() const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_LDNULL; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + return pNewInstr; } -void ILRewriterWrapper::LoadInt64(const INT64 value) const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_LDC_I8; - pNewInstr->m_Arg64 = value; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); +void ILRewriterWrapper::LoadInt64(const INT64 value) const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_LDC_I8; + pNewInstr->m_Arg64 = value; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); } -void ILRewriterWrapper::LoadInt32(const INT32 value) const { - static const std::vector opcodes = { - CEE_LDC_I4_0, CEE_LDC_I4_1, CEE_LDC_I4_2, CEE_LDC_I4_3, CEE_LDC_I4_4, - CEE_LDC_I4_5, CEE_LDC_I4_6, CEE_LDC_I4_7, CEE_LDC_I4_8, - }; - - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - - if (value >= 0 && value <= 8) { - pNewInstr->m_opcode = opcodes[value]; - } else if (-128 <= value && value <= 127) { - pNewInstr->m_opcode = CEE_LDC_I4_S; - pNewInstr->m_Arg8 = static_cast(value); - } else { - pNewInstr->m_opcode = CEE_LDC_I4; - pNewInstr->m_Arg32 = value; - } - - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); +void ILRewriterWrapper::LoadInt32(const INT32 value) const +{ + static const std::vector opcodes = { + CEE_LDC_I4_0, CEE_LDC_I4_1, CEE_LDC_I4_2, CEE_LDC_I4_3, CEE_LDC_I4_4, + CEE_LDC_I4_5, CEE_LDC_I4_6, CEE_LDC_I4_7, CEE_LDC_I4_8, + }; + + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + + if (value >= 0 && value <= 8) + { + pNewInstr->m_opcode = opcodes[value]; + } + else if (-128 <= value && value <= 127) + { + pNewInstr->m_opcode = CEE_LDC_I4_S; + pNewInstr->m_Arg8 = static_cast(value); + } + else + { + pNewInstr->m_opcode = CEE_LDC_I4; + pNewInstr->m_Arg32 = value; + } + + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); } -ILInstr* ILRewriterWrapper::LoadArgument(const UINT16 index) const { - static const std::vector opcodes = { - CEE_LDARG_0, - CEE_LDARG_1, - CEE_LDARG_2, - CEE_LDARG_3, - }; - - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - - if (index >= 0 && index <= 3) { - pNewInstr->m_opcode = opcodes[index]; - } else if (index <= 255) { - pNewInstr->m_opcode = CEE_LDARG_S; - pNewInstr->m_Arg8 = static_cast(index); - } else { - pNewInstr->m_opcode = CEE_LDARG; - pNewInstr->m_Arg16 = index; - } - - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); - return pNewInstr; +ILInstr* ILRewriterWrapper::LoadArgument(const UINT16 index) const +{ + static const std::vector opcodes = { + CEE_LDARG_0, + CEE_LDARG_1, + CEE_LDARG_2, + CEE_LDARG_3, + }; + + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + + if (index >= 0 && index <= 3) + { + pNewInstr->m_opcode = opcodes[index]; + } + else if (index <= 255) + { + pNewInstr->m_opcode = CEE_LDARG_S; + pNewInstr->m_Arg8 = static_cast(index); + } + else + { + pNewInstr->m_opcode = CEE_LDARG; + pNewInstr->m_Arg16 = index; + } + + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + return pNewInstr; } -void ILRewriterWrapper::Cast(const mdTypeRef type_ref) const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_CASTCLASS; - pNewInstr->m_Arg32 = type_ref; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); +void ILRewriterWrapper::Cast(const mdTypeRef type_ref) const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_CASTCLASS; + pNewInstr->m_Arg32 = type_ref; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); } -void ILRewriterWrapper::Box(const mdTypeRef type_ref) const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_BOX; - pNewInstr->m_Arg32 = type_ref; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); +void ILRewriterWrapper::Box(const mdTypeRef type_ref) const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_BOX; + pNewInstr->m_Arg32 = type_ref; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); } -void ILRewriterWrapper::UnboxAny(const mdTypeRef type_ref) const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_UNBOX_ANY; - pNewInstr->m_Arg32 = type_ref; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); +void ILRewriterWrapper::UnboxAny(const mdTypeRef type_ref) const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_UNBOX_ANY; + pNewInstr->m_Arg32 = type_ref; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); } -void ILRewriterWrapper::UnboxAnyAfter(const mdTypeRef type_ref) const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_UNBOX_ANY; - pNewInstr->m_Arg32 = type_ref; - m_ILRewriter->InsertAfter(m_ILInstr, pNewInstr); +void ILRewriterWrapper::UnboxAnyAfter(const mdTypeRef type_ref) const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_UNBOX_ANY; + pNewInstr->m_Arg32 = type_ref; + m_ILRewriter->InsertAfter(m_ILInstr, pNewInstr); } -void ILRewriterWrapper::CreateArray(const mdTypeRef type_ref, - const INT32 size) const { - mdTypeRef typeRef = mdTypeRefNil; - LoadInt32(size); +void ILRewriterWrapper::CreateArray(const mdTypeRef type_ref, const INT32 size) const +{ + mdTypeRef typeRef = mdTypeRefNil; + LoadInt32(size); - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_NEWARR; - pNewInstr->m_Arg32 = type_ref; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_NEWARR; + pNewInstr->m_Arg32 = type_ref; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); } -ILInstr* ILRewriterWrapper::CallMember(const mdMemberRef& member_ref, - const bool is_virtual) const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = is_virtual ? CEE_CALLVIRT : CEE_CALL; - pNewInstr->m_Arg32 = member_ref; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); - return pNewInstr; +ILInstr* ILRewriterWrapper::CallMember(const mdMemberRef& member_ref, const bool is_virtual) const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = is_virtual ? CEE_CALLVIRT : CEE_CALL; + pNewInstr->m_Arg32 = member_ref; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + return pNewInstr; } -void ILRewriterWrapper::Duplicate() const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_DUP; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); +void ILRewriterWrapper::Duplicate() const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_DUP; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); } -void ILRewriterWrapper::BeginLoadValueIntoArray(const INT32 arrayIndex) const { - // duplicate the array reference - Duplicate(); +void ILRewriterWrapper::BeginLoadValueIntoArray(const INT32 arrayIndex) const +{ + // duplicate the array reference + Duplicate(); - // load the specified array index - LoadInt32(arrayIndex); + // load the specified array index + LoadInt32(arrayIndex); } -void ILRewriterWrapper::EndLoadValueIntoArray() const { - // stelem.ref (store value into array at the specified index) - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_STELEM_REF; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); +void ILRewriterWrapper::EndLoadValueIntoArray() const +{ + // stelem.ref (store value into array at the specified index) + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_STELEM_REF; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); } -bool ILRewriterWrapper::ReplaceMethodCalls( - const mdMemberRef old_method_ref, const mdMemberRef new_method_ref) const { - bool modified = false; - - for (ILInstr* pInstr = m_ILRewriter->GetILList()->m_pNext; - pInstr != m_ILRewriter->GetILList(); pInstr = pInstr->m_pNext) { - if ((pInstr->m_opcode == CEE_CALL || pInstr->m_opcode == CEE_CALLVIRT) && - pInstr->m_Arg32 == static_cast(old_method_ref)) { - pInstr->m_opcode = CEE_CALL; - pInstr->m_Arg32 = new_method_ref; - - modified = true; +bool ILRewriterWrapper::ReplaceMethodCalls(const mdMemberRef old_method_ref, const mdMemberRef new_method_ref) const +{ + bool modified = false; + + for (ILInstr* pInstr = m_ILRewriter->GetILList()->m_pNext; pInstr != m_ILRewriter->GetILList(); + pInstr = pInstr->m_pNext) + { + if ((pInstr->m_opcode == CEE_CALL || pInstr->m_opcode == CEE_CALLVIRT) && + pInstr->m_Arg32 == static_cast(old_method_ref)) + { + pInstr->m_opcode = CEE_CALL; + pInstr->m_Arg32 = new_method_ref; + + modified = true; + } } - } - return modified; + return modified; } -ILInstr* ILRewriterWrapper::LoadToken(mdToken token) const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_LDTOKEN; - pNewInstr->m_Arg32 = token; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); - return pNewInstr; +ILInstr* ILRewriterWrapper::LoadToken(mdToken token) const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_LDTOKEN; + pNewInstr->m_Arg32 = token; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + return pNewInstr; } -ILInstr* ILRewriterWrapper::LoadObj(mdToken token) const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_LDOBJ; - pNewInstr->m_Arg32 = token; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); - return pNewInstr; +ILInstr* ILRewriterWrapper::LoadObj(mdToken token) const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_LDOBJ; + pNewInstr->m_Arg32 = token; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + return pNewInstr; } -ILInstr* ILRewriterWrapper::StLocal(unsigned index) const { - static const std::vector opcodes = { - CEE_STLOC_0, - CEE_STLOC_1, - CEE_STLOC_2, - CEE_STLOC_3, - }; - - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - if (index <= 3) { - pNewInstr->m_opcode = opcodes[index]; - } else if (index <= 255) { - pNewInstr->m_opcode = CEE_STLOC_S; - pNewInstr->m_Arg8 = static_cast(index); - } else { - pNewInstr->m_opcode = CEE_STLOC; - pNewInstr->m_Arg16 = index; - } - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); - return pNewInstr; +ILInstr* ILRewriterWrapper::StLocal(unsigned index) const +{ + static const std::vector opcodes = { + CEE_STLOC_0, + CEE_STLOC_1, + CEE_STLOC_2, + CEE_STLOC_3, + }; + + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + if (index <= 3) + { + pNewInstr->m_opcode = opcodes[index]; + } + else if (index <= 255) + { + pNewInstr->m_opcode = CEE_STLOC_S; + pNewInstr->m_Arg8 = static_cast(index); + } + else + { + pNewInstr->m_opcode = CEE_STLOC; + pNewInstr->m_Arg16 = index; + } + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + return pNewInstr; } -ILInstr* ILRewriterWrapper::LoadLocal(unsigned index) const { - static const std::vector opcodes = { - CEE_LDLOC_0, - CEE_LDLOC_1, - CEE_LDLOC_2, - CEE_LDLOC_3, - }; - - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - if (index <= 3) { - pNewInstr->m_opcode = opcodes[index]; - } else if (index <= 255) { - pNewInstr->m_opcode = CEE_LDLOC_S; - pNewInstr->m_Arg8 = static_cast(index); - } else { - pNewInstr->m_opcode = CEE_LDLOC; - pNewInstr->m_Arg16 = index; - } - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); - return pNewInstr; +ILInstr* ILRewriterWrapper::LoadLocal(unsigned index) const +{ + static const std::vector opcodes = { + CEE_LDLOC_0, + CEE_LDLOC_1, + CEE_LDLOC_2, + CEE_LDLOC_3, + }; + + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + if (index <= 3) + { + pNewInstr->m_opcode = opcodes[index]; + } + else if (index <= 255) + { + pNewInstr->m_opcode = CEE_LDLOC_S; + pNewInstr->m_Arg8 = static_cast(index); + } + else + { + pNewInstr->m_opcode = CEE_LDLOC; + pNewInstr->m_Arg16 = index; + } + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + return pNewInstr; } -ILInstr* ILRewriterWrapper::LoadLocalAddress(unsigned index) const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - if (index <= 255) { - pNewInstr->m_opcode = CEE_LDLOCA_S; - pNewInstr->m_Arg8 = static_cast(index); - } else { - pNewInstr->m_opcode = CEE_LDLOCA; - pNewInstr->m_Arg16 = index; - } - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); - return pNewInstr; +ILInstr* ILRewriterWrapper::LoadLocalAddress(unsigned index) const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + if (index <= 255) + { + pNewInstr->m_opcode = CEE_LDLOCA_S; + pNewInstr->m_Arg8 = static_cast(index); + } + else + { + pNewInstr->m_opcode = CEE_LDLOCA; + pNewInstr->m_Arg16 = index; + } + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + return pNewInstr; } -ILInstr* ILRewriterWrapper::Return() const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_RET; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); - return pNewInstr; +ILInstr* ILRewriterWrapper::Return() const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_RET; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + return pNewInstr; } -ILInstr* ILRewriterWrapper::Rethrow() const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_RETHROW; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); - return pNewInstr; +ILInstr* ILRewriterWrapper::Rethrow() const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_RETHROW; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + return pNewInstr; } -ILInstr* ILRewriterWrapper::EndFinally() const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_ENDFINALLY; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); - return pNewInstr; +ILInstr* ILRewriterWrapper::EndFinally() const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_ENDFINALLY; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + return pNewInstr; } -ILInstr* ILRewriterWrapper::NOP() const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_NOP; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); - return pNewInstr; +ILInstr* ILRewriterWrapper::NOP() const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_NOP; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + return pNewInstr; } -ILInstr* ILRewriterWrapper::CreateInstr(unsigned opCode) const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = opCode; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); - return pNewInstr; +ILInstr* ILRewriterWrapper::CreateInstr(unsigned opCode) const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = opCode; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + return pNewInstr; } -ILInstr* ILRewriterWrapper::InitObj(mdTypeRef type_ref) const { - ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); - pNewInstr->m_opcode = CEE_INITOBJ; - pNewInstr->m_Arg32 = type_ref; - m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); - return pNewInstr; +ILInstr* ILRewriterWrapper::InitObj(mdTypeRef type_ref) const +{ + ILInstr* pNewInstr = m_ILRewriter->NewILInstr(); + pNewInstr->m_opcode = CEE_INITOBJ; + pNewInstr->m_Arg32 = type_ref; + m_ILRewriter->InsertBefore(m_ILInstr, pNewInstr); + return pNewInstr; } \ No newline at end of file diff --git a/src/Datadog.Trace.ClrProfiler.Native/il_rewriter_wrapper.h b/src/Datadog.Trace.ClrProfiler.Native/il_rewriter_wrapper.h index 7d37db2498..ed34a8fab2 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/il_rewriter_wrapper.h +++ b/src/Datadog.Trace.ClrProfiler.Native/il_rewriter_wrapper.h @@ -4,46 +4,47 @@ #include "il_rewriter.h" #include "module_metadata.h" -class ILRewriterWrapper { - private: - ILRewriter* const m_ILRewriter; - ILInstr* m_ILInstr; +class ILRewriterWrapper +{ +private: + ILRewriter* const m_ILRewriter; + ILInstr* m_ILInstr; - public: - ILRewriterWrapper(ILRewriter* const il_rewriter) - : m_ILRewriter(il_rewriter), m_ILInstr(nullptr) {} +public: + ILRewriterWrapper(ILRewriter* const il_rewriter) : m_ILRewriter(il_rewriter), m_ILInstr(nullptr) + { + } - ILRewriter* GetILRewriter() const; - ILInstr* GetCurrentILInstr() const; - void SetILPosition(ILInstr* pILInstr); - void Pop() const; - ILInstr* LoadNull() const; - void LoadInt64(INT64 value) const; - void LoadInt32(INT32 value) const; - ILInstr* LoadArgument(UINT16 index) const; - void Cast(mdTypeRef type_ref) const; - void Box(mdTypeRef type_ref) const; - void UnboxAny(mdTypeRef type_ref) const; - void UnboxAnyAfter(mdTypeRef type_ref) const; - void CreateArray(mdTypeRef type_ref, INT32 size) const; - ILInstr* CallMember(const mdMemberRef& member_ref, bool is_virtual) const; - void Duplicate() const; - void BeginLoadValueIntoArray(INT32 arrayIndex) const; - void EndLoadValueIntoArray() const; - bool ReplaceMethodCalls(mdMemberRef old_method_ref, - mdMemberRef new_method_ref) const; - ILInstr* LoadToken(mdToken token) const; - ILInstr* LoadObj(mdToken token) const; - ILInstr* StLocal(unsigned index) const; - ILInstr* LoadLocal(unsigned index) const; - ILInstr* LoadLocalAddress(unsigned index) const; - ILInstr* Return() const; - ILInstr* NOP() const; - ILInstr* Rethrow() const; - ILInstr* EndFinally() const; + ILRewriter* GetILRewriter() const; + ILInstr* GetCurrentILInstr() const; + void SetILPosition(ILInstr* pILInstr); + void Pop() const; + ILInstr* LoadNull() const; + void LoadInt64(INT64 value) const; + void LoadInt32(INT32 value) const; + ILInstr* LoadArgument(UINT16 index) const; + void Cast(mdTypeRef type_ref) const; + void Box(mdTypeRef type_ref) const; + void UnboxAny(mdTypeRef type_ref) const; + void UnboxAnyAfter(mdTypeRef type_ref) const; + void CreateArray(mdTypeRef type_ref, INT32 size) const; + ILInstr* CallMember(const mdMemberRef& member_ref, bool is_virtual) const; + void Duplicate() const; + void BeginLoadValueIntoArray(INT32 arrayIndex) const; + void EndLoadValueIntoArray() const; + bool ReplaceMethodCalls(mdMemberRef old_method_ref, mdMemberRef new_method_ref) const; + ILInstr* LoadToken(mdToken token) const; + ILInstr* LoadObj(mdToken token) const; + ILInstr* StLocal(unsigned index) const; + ILInstr* LoadLocal(unsigned index) const; + ILInstr* LoadLocalAddress(unsigned index) const; + ILInstr* Return() const; + ILInstr* NOP() const; + ILInstr* Rethrow() const; + ILInstr* EndFinally() const; - ILInstr* CreateInstr(unsigned opCode) const; - ILInstr* InitObj(mdTypeRef type_ref) const; + ILInstr* CreateInstr(unsigned opCode) const; + ILInstr* InitObj(mdTypeRef type_ref) const; }; -#endif // DD_CLR_PROFILER_IL_REWRITER_WRAPPER_H_ +#endif // DD_CLR_PROFILER_IL_REWRITER_WRAPPER_H_ diff --git a/src/Datadog.Trace.ClrProfiler.Native/integration.cpp b/src/Datadog.Trace.ClrProfiler.Native/integration.cpp index a28519f0de..de3d380d0a 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/integration.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/integration.cpp @@ -10,122 +10,137 @@ #include "util.h" -namespace trace { - -AssemblyReference::AssemblyReference(const WSTRING& str) - : name(GetNameFromAssemblyReferenceString(str)), - version(GetVersionFromAssemblyReferenceString(str)), - locale(GetLocaleFromAssemblyReferenceString(str)), - public_key(GetPublicKeyFromAssemblyReferenceString(str)) {} +namespace trace +{ + +AssemblyReference::AssemblyReference(const WSTRING& str) : + name(GetNameFromAssemblyReferenceString(str)), + version(GetVersionFromAssemblyReferenceString(str)), + locale(GetLocaleFromAssemblyReferenceString(str)), + public_key(GetPublicKeyFromAssemblyReferenceString(str)) +{ +} -namespace { +namespace +{ -WSTRING GetNameFromAssemblyReferenceString(const WSTRING& wstr) { - WSTRING name = wstr; + WSTRING GetNameFromAssemblyReferenceString(const WSTRING& wstr) + { + WSTRING name = wstr; - auto pos = name.find(WStr(',')); - if (pos != WSTRING::npos) { - name = name.substr(0, pos); - } + auto pos = name.find(WStr(',')); + if (pos != WSTRING::npos) + { + name = name.substr(0, pos); + } - // strip spaces - pos = name.rfind(WStr(' ')); - if (pos != WSTRING::npos) { - name = name.substr(0, pos); - } + // strip spaces + pos = name.rfind(WStr(' ')); + if (pos != WSTRING::npos) + { + name = name.substr(0, pos); + } - return name; -} + return name; + } -Version GetVersionFromAssemblyReferenceString(const WSTRING& str) { - unsigned short major = 0; - unsigned short minor = 0; - unsigned short build = 0; - unsigned short revision = 0; + Version GetVersionFromAssemblyReferenceString(const WSTRING& str) + { + unsigned short major = 0; + unsigned short minor = 0; + unsigned short build = 0; + unsigned short revision = 0; #ifdef _WIN32 - static auto re = - std::wregex(WStr("Version=([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)")); + static auto re = std::wregex(WStr("Version=([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)")); - std::wsmatch match; - if (std::regex_search(str, match, re) && match.size() == 5) { - WSTRINGSTREAM(match.str(1)) >> major; - WSTRINGSTREAM(match.str(2)) >> minor; - WSTRINGSTREAM(match.str(3)) >> build; - WSTRINGSTREAM(match.str(4)) >> revision; - } + std::wsmatch match; + if (std::regex_search(str, match, re) && match.size() == 5) + { + WSTRINGSTREAM(match.str(1)) >> major; + WSTRINGSTREAM(match.str(2)) >> minor; + WSTRINGSTREAM(match.str(3)) >> build; + WSTRINGSTREAM(match.str(4)) >> revision; + } #else - static re2::RE2 re("Version=([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)", - RE2::Quiet); - re2::RE2::FullMatch(ToString(str), re, &major, &minor, &build, &revision); + static re2::RE2 re("Version=([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)", RE2::Quiet); + re2::RE2::FullMatch(ToString(str), re, &major, &minor, &build, &revision); #endif - return {major, minor, build, revision}; -} + return {major, minor, build, revision}; + } -WSTRING GetLocaleFromAssemblyReferenceString(const WSTRING& str) { - WSTRING locale = WStr("neutral"); + WSTRING GetLocaleFromAssemblyReferenceString(const WSTRING& str) + { + WSTRING locale = WStr("neutral"); #ifdef _WIN32 - static auto re = std::wregex(WStr("Culture=([a-zA-Z0-9]+)")); - std::wsmatch match; - if (std::regex_search(str, match, re) && match.size() == 2) { - locale = match.str(1); - } + static auto re = std::wregex(WStr("Culture=([a-zA-Z0-9]+)")); + std::wsmatch match; + if (std::regex_search(str, match, re) && match.size() == 2) + { + locale = match.str(1); + } #else - static re2::RE2 re("Culture=([a-zA-Z0-9]+)", RE2::Quiet); + static re2::RE2 re("Culture=([a-zA-Z0-9]+)", RE2::Quiet); - std::string match; - if (re2::RE2::FullMatch(ToString(str), re, &match)) { - locale = ToWSTRING(match); - } + std::string match; + if (re2::RE2::FullMatch(ToString(str), re, &match)) + { + locale = ToWSTRING(match); + } #endif - return locale; -} + return locale; + } -PublicKey GetPublicKeyFromAssemblyReferenceString(const WSTRING& str) { - BYTE data[8] = {0}; + PublicKey GetPublicKeyFromAssemblyReferenceString(const WSTRING& str) + { + BYTE data[8] = {0}; #ifdef _WIN32 - static auto re = std::wregex(WStr("PublicKeyToken=([a-fA-F0-9]{16})")); - std::wsmatch match; - if (std::regex_search(str, match, re) && match.size() == 2) { - for (int i = 0; i < 8; i++) { - auto s = match.str(1).substr(i * 2, 2); - unsigned long x; - WSTRINGSTREAM(s) >> std::hex >> x; - data[i] = BYTE(x); - } - } + static auto re = std::wregex(WStr("PublicKeyToken=([a-fA-F0-9]{16})")); + std::wsmatch match; + if (std::regex_search(str, match, re) && match.size() == 2) + { + for (int i = 0; i < 8; i++) + { + auto s = match.str(1).substr(i * 2, 2); + unsigned long x; + WSTRINGSTREAM(s) >> std::hex >> x; + data[i] = BYTE(x); + } + } #else - static re2::RE2 re("PublicKeyToken=([a-fA-F0-9]{16})"); - std::string match; - if (re2::RE2::FullMatch(ToString(str), re, &match)) { - for (int i = 0; i < 8; i++) { - auto s = match.substr(i * 2, 2); - unsigned long x; - std::stringstream(s) >> std::hex >> x; - data[i] = BYTE(x); - } - } + static re2::RE2 re("PublicKeyToken=([a-fA-F0-9]{16})"); + std::string match; + if (re2::RE2::FullMatch(ToString(str), re, &match)) + { + for (int i = 0; i < 8; i++) + { + auto s = match.substr(i * 2, 2); + unsigned long x; + std::stringstream(s) >> std::hex >> x; + data[i] = BYTE(x); + } + } #endif - return PublicKey(data); -} + return PublicKey(data); + } -} // namespace +} // namespace -} // namespace trace +} // namespace trace diff --git a/src/Datadog.Trace.ClrProfiler.Native/integration.h b/src/Datadog.Trace.ClrProfiler.Native/integration.h index 530452e645..98f1b6bf6f 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/integration.h +++ b/src/Datadog.Trace.ClrProfiler.Native/integration.h @@ -11,295 +11,354 @@ #undef major #undef minor -namespace trace { +namespace trace +{ const size_t kPublicKeySize = 8; // PublicKey represents an Assembly Public Key token, which is an 8 byte binary // RSA key. -struct PublicKey { - const BYTE data[kPublicKeySize]; +struct PublicKey +{ + const BYTE data[kPublicKeySize]; - PublicKey() : data{0} {} - PublicKey(const BYTE (&arr)[kPublicKeySize]) - : data{arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7]} {} + PublicKey() : data{0} + { + } + PublicKey(const BYTE (&arr)[kPublicKeySize]) : data{arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7]} + { + } - inline bool operator==(const PublicKey& other) const { - for (int i = 0; i < kPublicKeySize; i++) { - if (data[i] != other.data[i]) { - return false; - } + inline bool operator==(const PublicKey& other) const + { + for (int i = 0; i < kPublicKeySize; i++) + { + if (data[i] != other.data[i]) + { + return false; + } + } + return true; } - return true; - } - inline WSTRING str() const { - std::stringstream ss; - for (int i = 0; i < kPublicKeySize; i++) { - ss << std::setfill('0') << std::setw(2) << std::hex - << static_cast(data[i]); + inline WSTRING str() const + { + std::stringstream ss; + for (int i = 0; i < kPublicKeySize; i++) + { + ss << std::setfill('0') << std::setw(2) << std::hex << static_cast(data[i]); + } + return ToWSTRING(ss.str()); } - return ToWSTRING(ss.str()); - } }; // Version is an Assembly version in the form Major.Minor.Build.Revision // (1.0.0.0) -struct Version { - const unsigned short major; - const unsigned short minor; - const unsigned short build; - const unsigned short revision; - - Version() : major(0), minor(0), build(0), revision(0) {} - Version(const unsigned short major, const unsigned short minor, - const unsigned short build, const unsigned short revision) - : major(major), minor(minor), build(build), revision(revision) {} - - inline bool operator==(const Version& other) const { - return major == other.major && minor == other.minor && - build == other.build && revision == other.revision; - } - - inline WSTRING str() const { - std::stringstream ss; - ss << major << "." << minor << "." << build << "." << revision; - return ToWSTRING(ss.str()); - } - - inline bool operator<(const Version& other) const { - if (major < other.major) { - return true; +struct Version +{ + const unsigned short major; + const unsigned short minor; + const unsigned short build; + const unsigned short revision; + + Version() : major(0), minor(0), build(0), revision(0) + { } - if (major == other.major && minor < other.minor) { - return true; + Version(const unsigned short major, const unsigned short minor, const unsigned short build, + const unsigned short revision) : + major(major), minor(minor), build(build), revision(revision) + { } - if (major == other.major && minor == other.minor && build < other.build) { - return true; + + inline bool operator==(const Version& other) const + { + return major == other.major && minor == other.minor && build == other.build && revision == other.revision; } - return false; - } - inline bool operator>(const Version& other) const { - if (major > other.major) { - return true; + inline WSTRING str() const + { + std::stringstream ss; + ss << major << "." << minor << "." << build << "." << revision; + return ToWSTRING(ss.str()); } - if (major == other.major && minor > other.minor) { - return true; + + inline bool operator<(const Version& other) const + { + if (major < other.major) + { + return true; + } + if (major == other.major && minor < other.minor) + { + return true; + } + if (major == other.major && minor == other.minor && build < other.build) + { + return true; + } + return false; } - if (major == other.major && minor == other.minor && build > other.build) { - return true; + + inline bool operator>(const Version& other) const + { + if (major > other.major) + { + return true; + } + if (major == other.major && minor > other.minor) + { + return true; + } + if (major == other.major && minor == other.minor && build > other.build) + { + return true; + } + return false; } - return false; - } }; // An AssemblyReference is a reference to a .Net assembly. In general it will // look like: // Some.Assembly.Name, Version=1.0.0.0, Culture=neutral, // PublicKeyToken=abcdef0123456789 -struct AssemblyReference { - const WSTRING name; - const Version version; - const WSTRING locale; - const PublicKey public_key; - - AssemblyReference() {} - AssemblyReference(const WSTRING& str); - - inline bool operator==(const AssemblyReference& other) const { - return name == other.name && version == other.version && - locale == other.locale && public_key == other.public_key; - } - - inline WSTRING str() const { - const auto ss = name + WStr(", Version=") + version.str() + WStr(", Culture=") + locale - + WStr(", PublicKeyToken=") + public_key.str(); - return ss; - } +struct AssemblyReference +{ + const WSTRING name; + const Version version; + const WSTRING locale; + const PublicKey public_key; + + AssemblyReference() + { + } + AssemblyReference(const WSTRING& str); + + inline bool operator==(const AssemblyReference& other) const + { + return name == other.name && version == other.version && locale == other.locale && + public_key == other.public_key; + } + + inline WSTRING str() const + { + const auto ss = name + WStr(", Version=") + version.str() + WStr(", Culture=") + locale + + WStr(", PublicKeyToken=") + public_key.str(); + return ss; + } }; // A MethodSignature is a byte array. The format is: // [calling convention, number of parameters, return type, parameter type...] // For types see CorElementType -struct MethodSignature { - public: - const std::vector data; - - MethodSignature() {} - MethodSignature(const std::vector& data) : data(data) {} +struct MethodSignature +{ +public: + const std::vector data; - inline bool operator==(const MethodSignature& other) const { - return data == other.data; - } - - CorCallingConvention CallingConvention() const { - return CorCallingConvention(data.empty() ? 0 : data[0]); - } - - size_t NumberOfTypeArguments() const { - if (data.size() > 1 && - (CallingConvention() & IMAGE_CEE_CS_CALLCONV_GENERIC) != 0) { - return data[1]; + MethodSignature() + { + } + MethodSignature(const std::vector& data) : data(data) + { } - return 0; - } - size_t NumberOfArguments() const { - if (data.size() > 2 && - (CallingConvention() & IMAGE_CEE_CS_CALLCONV_GENERIC) != 0) { - return data[2]; + inline bool operator==(const MethodSignature& other) const + { + return data == other.data; } - if (data.size() > 1) { - return data[1]; + + CorCallingConvention CallingConvention() const + { + return CorCallingConvention(data.empty() ? 0 : data[0]); } - return 0; - } - bool ReturnTypeIsObject() const { - if (data.size() > 2 && - (CallingConvention() & IMAGE_CEE_CS_CALLCONV_GENERIC) != 0) { - return data[3] == ELEMENT_TYPE_OBJECT; + size_t NumberOfTypeArguments() const + { + if (data.size() > 1 && (CallingConvention() & IMAGE_CEE_CS_CALLCONV_GENERIC) != 0) + { + return data[1]; + } + return 0; } - if (data.size() > 1) { - return data[2] == ELEMENT_TYPE_OBJECT; + + size_t NumberOfArguments() const + { + if (data.size() > 2 && (CallingConvention() & IMAGE_CEE_CS_CALLCONV_GENERIC) != 0) + { + return data[2]; + } + if (data.size() > 1) + { + return data[1]; + } + return 0; } - return false; - } + bool ReturnTypeIsObject() const + { + if (data.size() > 2 && (CallingConvention() & IMAGE_CEE_CS_CALLCONV_GENERIC) != 0) + { + return data[3] == ELEMENT_TYPE_OBJECT; + } + if (data.size() > 1) + { + return data[2] == ELEMENT_TYPE_OBJECT; + } - size_t IndexOfReturnType() const { - if (data.size() > 2 && - (CallingConvention() & IMAGE_CEE_CS_CALLCONV_GENERIC) != 0) { - return 3; + return false; } - if (data.size() > 1) { - return 2; + + size_t IndexOfReturnType() const + { + if (data.size() > 2 && (CallingConvention() & IMAGE_CEE_CS_CALLCONV_GENERIC) != 0) + { + return 3; + } + if (data.size() > 1) + { + return 2; + } + return 0; } - return 0; - } - WSTRING str() const { - std::stringstream ss; - for (auto& b : data) { - ss << std::hex << std::setfill('0') << std::setw(2) << static_cast(b); + WSTRING str() const + { + std::stringstream ss; + for (auto& b : data) + { + ss << std::hex << std::setfill('0') << std::setw(2) << static_cast(b); + } + return ToWSTRING(ss.str()); } - return ToWSTRING(ss.str()); - } - BOOL IsInstanceMethod() const { - return (CallingConvention() & IMAGE_CEE_CS_CALLCONV_HASTHIS) != 0; - } + BOOL IsInstanceMethod() const + { + return (CallingConvention() & IMAGE_CEE_CS_CALLCONV_HASTHIS) != 0; + } }; -struct MethodReference { - const AssemblyReference assembly; - const WSTRING type_name; - const WSTRING method_name; - const WSTRING action; - const MethodSignature method_signature; - const Version min_version; - const Version max_version; - const std::vector signature_types; - - MethodReference() - : min_version(Version(0, 0, 0, 0)), - max_version(Version(USHRT_MAX, USHRT_MAX, USHRT_MAX, USHRT_MAX)) {} - - MethodReference(const WSTRING& assembly_name, WSTRING type_name, WSTRING method_name, - WSTRING action, Version min_version, Version max_version, - const std::vector& method_signature, - const std::vector& signature_types) - : assembly(assembly_name), +struct MethodReference +{ + const AssemblyReference assembly; + const WSTRING type_name; + const WSTRING method_name; + const WSTRING action; + const MethodSignature method_signature; + const Version min_version; + const Version max_version; + const std::vector signature_types; + + MethodReference() : + min_version(Version(0, 0, 0, 0)), max_version(Version(USHRT_MAX, USHRT_MAX, USHRT_MAX, USHRT_MAX)) + { + } + + MethodReference(const WSTRING& assembly_name, WSTRING type_name, WSTRING method_name, WSTRING action, + Version min_version, Version max_version, const std::vector& method_signature, + const std::vector& signature_types) : + assembly(assembly_name), type_name(type_name), method_name(method_name), action(action), method_signature(method_signature), min_version(min_version), max_version(max_version), - signature_types(signature_types) {} - - inline WSTRING get_type_cache_key() const { - return WStr("[") + assembly.name + WStr("]") + type_name + WStr("_vMin_") + - min_version.str() + WStr("_vMax_") + max_version.str(); - } - - inline WSTRING get_method_cache_key() const { - return WStr("[") + assembly.name + WStr("]") + type_name + WStr(".") + method_name + - WStr("_vMin_") + min_version.str() + WStr("_vMax_") + max_version.str(); - } - - inline bool operator==(const MethodReference& other) const { - return assembly == other.assembly && type_name == other.type_name && - min_version == other.min_version && - max_version == other.max_version && - method_name == other.method_name && - method_signature == other.method_signature; - } + signature_types(signature_types) + { + } + + inline WSTRING get_type_cache_key() const + { + return WStr("[") + assembly.name + WStr("]") + type_name + WStr("_vMin_") + min_version.str() + WStr("_vMax_") + + max_version.str(); + } + + inline WSTRING get_method_cache_key() const + { + return WStr("[") + assembly.name + WStr("]") + type_name + WStr(".") + method_name + WStr("_vMin_") + + min_version.str() + WStr("_vMax_") + max_version.str(); + } + + inline bool operator==(const MethodReference& other) const + { + return assembly == other.assembly && type_name == other.type_name && min_version == other.min_version && + max_version == other.max_version && method_name == other.method_name && + method_signature == other.method_signature; + } }; -struct MethodReplacement { - const MethodReference caller_method; - const MethodReference target_method; - const MethodReference wrapper_method; - - MethodReplacement() {} - - MethodReplacement(MethodReference caller_method, - MethodReference target_method, - MethodReference wrapper_method) - : caller_method(caller_method), - target_method(target_method), - wrapper_method(wrapper_method) {} - - inline bool operator==(const MethodReplacement& other) const { - return caller_method == other.caller_method && - target_method == other.target_method && - wrapper_method == other.wrapper_method; - } +struct MethodReplacement +{ + const MethodReference caller_method; + const MethodReference target_method; + const MethodReference wrapper_method; + + MethodReplacement() + { + } + + MethodReplacement(MethodReference caller_method, MethodReference target_method, MethodReference wrapper_method) : + caller_method(caller_method), target_method(target_method), wrapper_method(wrapper_method) + { + } + + inline bool operator==(const MethodReplacement& other) const + { + return caller_method == other.caller_method && target_method == other.target_method && + wrapper_method == other.wrapper_method; + } }; -struct Integration { - const WSTRING integration_name; - std::vector method_replacements; +struct Integration +{ + const WSTRING integration_name; + std::vector method_replacements; - Integration() : integration_name(WStr("")), method_replacements({}) {} + Integration() : integration_name(WStr("")), method_replacements({}) + { + } - Integration(WSTRING integration_name, - std::vector method_replacements) - : integration_name(integration_name), - method_replacements(method_replacements) {} + Integration(WSTRING integration_name, std::vector method_replacements) : + integration_name(integration_name), method_replacements(method_replacements) + { + } - inline bool operator==(const Integration& other) const { - return integration_name == other.integration_name && - method_replacements == other.method_replacements; - } + inline bool operator==(const Integration& other) const + { + return integration_name == other.integration_name && method_replacements == other.method_replacements; + } }; -struct IntegrationMethod { - const WSTRING integration_name; - MethodReplacement replacement; +struct IntegrationMethod +{ + const WSTRING integration_name; + MethodReplacement replacement; - IntegrationMethod() : integration_name(WStr("")), replacement({}) {} + IntegrationMethod() : integration_name(WStr("")), replacement({}) + { + } - IntegrationMethod(WSTRING integration_name, MethodReplacement replacement) - : integration_name(integration_name), replacement(replacement) {} + IntegrationMethod(WSTRING integration_name, MethodReplacement replacement) : + integration_name(integration_name), replacement(replacement) + { + } - inline bool operator==(const IntegrationMethod& other) const { - return integration_name == other.integration_name && - replacement == other.replacement; - } + inline bool operator==(const IntegrationMethod& other) const + { + return integration_name == other.integration_name && replacement == other.replacement; + } }; -namespace { +namespace +{ -WSTRING GetNameFromAssemblyReferenceString(const WSTRING& wstr); -Version GetVersionFromAssemblyReferenceString(const WSTRING& wstr); -WSTRING GetLocaleFromAssemblyReferenceString(const WSTRING& wstr); -PublicKey GetPublicKeyFromAssemblyReferenceString(const WSTRING& wstr); + WSTRING GetNameFromAssemblyReferenceString(const WSTRING& wstr); + Version GetVersionFromAssemblyReferenceString(const WSTRING& wstr); + WSTRING GetLocaleFromAssemblyReferenceString(const WSTRING& wstr); + PublicKey GetPublicKeyFromAssemblyReferenceString(const WSTRING& wstr); -} // namespace +} // namespace -} // namespace trace +} // namespace trace -#endif // DD_CLR_PROFILER_INTEGRATION_H_ +#endif // DD_CLR_PROFILER_INTEGRATION_H_ diff --git a/src/Datadog.Trace.ClrProfiler.Native/integration_loader.cpp b/src/Datadog.Trace.ClrProfiler.Native/integration_loader.cpp index 433b4f6a2c..feedb5fdc3 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/integration_loader.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/integration_loader.cpp @@ -7,221 +7,278 @@ #include "logging.h" #include "util.h" -namespace trace { +namespace trace +{ using json = nlohmann::json; -std::vector LoadIntegrationsFromEnvironment() { - std::vector integrations; - for (const auto f : GetEnvironmentValues(environment::integrations_path)) { - Debug("Loading integrations from file: ", f); - auto is = LoadIntegrationsFromFile(f); - for (auto& i : is) { - integrations.push_back(i); +std::vector LoadIntegrationsFromEnvironment() +{ + std::vector integrations; + for (const auto f : GetEnvironmentValues(environment::integrations_path)) + { + Debug("Loading integrations from file: ", f); + auto is = LoadIntegrationsFromFile(f); + for (auto& i : is) + { + integrations.push_back(i); + } } - } - return integrations; + return integrations; } -std::vector LoadIntegrationsFromFile(const WSTRING& file_path) { - std::vector integrations; +std::vector LoadIntegrationsFromFile(const WSTRING& file_path) +{ + std::vector integrations; - try { - std::ifstream stream; - stream.open(ToString(file_path)); + try + { + std::ifstream stream; + stream.open(ToString(file_path)); - if (static_cast(stream)) { - integrations = LoadIntegrationsFromStream(stream); - } else { - Warn("Failed to load integrations from file ", file_path); - } + if (static_cast(stream)) + { + integrations = LoadIntegrationsFromStream(stream); + } + else + { + Warn("Failed to load integrations from file ", file_path); + } - stream.close(); - } catch (...) { - auto ex = std::current_exception(); - try { - if (ex) { - std::rethrow_exception(ex); - } - } catch (const std::exception& ex) { - Warn("Failed to load integrations: ", ex.what()); + stream.close(); + } + catch (...) + { + auto ex = std::current_exception(); + try + { + if (ex) + { + std::rethrow_exception(ex); + } + } + catch (const std::exception& ex) + { + Warn("Failed to load integrations: ", ex.what()); + } } - } - return integrations; + return integrations; } -std::vector LoadIntegrationsFromStream(std::istream& stream) { - std::vector integrations; +std::vector LoadIntegrationsFromStream(std::istream& stream) +{ + std::vector integrations; - try { - json j; - // parse the stream - stream >> j; + try + { + json j; + // parse the stream + stream >> j; - for (auto& el : j) { - auto i = IntegrationFromJson(el); - if (std::get<1>(i)) { - integrations.push_back(std::get<0>(i)); - } - } + for (auto& el : j) + { + auto i = IntegrationFromJson(el); + if (std::get<1>(i)) + { + integrations.push_back(std::get<0>(i)); + } + } - // Debug("Loaded integrations: ", j.dump()); - } catch (const json::parse_error& e) { - Warn("Invalid integrations:", e.what()); - } catch (const json::type_error& e) { - Warn("Invalid integrations:", e.what()); - } catch (...) { - auto ex = std::current_exception(); - try { - if (ex) { - std::rethrow_exception(ex); - } - } catch (const std::exception& ex) { - Warn("Failed to load integrations: ", ex.what()); + // Debug("Loaded integrations: ", j.dump()); + } + catch (const json::parse_error& e) + { + Warn("Invalid integrations:", e.what()); + } + catch (const json::type_error& e) + { + Warn("Invalid integrations:", e.what()); + } + catch (...) + { + auto ex = std::current_exception(); + try + { + if (ex) + { + std::rethrow_exception(ex); + } + } + catch (const std::exception& ex) + { + Warn("Failed to load integrations: ", ex.what()); + } } - } - return integrations; + return integrations; } -namespace { - -std::pair IntegrationFromJson(const json::value_type& src) { - if (!src.is_object()) { - return std::make_pair({}, false); - } - - // first get the name, which is required - const auto name = ToWSTRING(src.value("name", "")); - if (name.empty()) { - Warn("Integration name is missing for integration: ", src.dump()); - return std::make_pair({}, false); - } - - std::vector replacements; - auto arr = src.value("method_replacements", json::array()); - if (arr.is_array()) { - for (auto& el : arr) { - auto mr = MethodReplacementFromJson(el); - if (std::get<1>(mr)) { - replacements.push_back(std::get<0>(mr)); - } - } - } - return std::make_pair({name, replacements}, true); -} +namespace +{ -std::pair MethodReplacementFromJson( - const json::value_type& src) { - if (!src.is_object()) { - return std::make_pair({}, false); - } - - const auto caller = - MethodReferenceFromJson(src.value("caller", json::object()), false, false); - const auto target = - MethodReferenceFromJson(src.value("target", json::object()), true, false); - const auto wrapper = - MethodReferenceFromJson(src.value("wrapper", json::object()), false, true); - return std::make_pair({caller, target, wrapper}, - true); -} + std::pair IntegrationFromJson(const json::value_type& src) + { + if (!src.is_object()) + { + return std::make_pair({}, false); + } -MethodReference MethodReferenceFromJson(const json::value_type& src, - const bool is_target_method, - const bool is_wrapper_method) { - if (!src.is_object()) { - return {}; - } - - const auto assembly = ToWSTRING(src.value("assembly", "")); - const auto type = ToWSTRING(src.value("type", "")); - const auto method = ToWSTRING(src.value("method", "")); - auto raw_signature = src.value("signature", json::array()); - - const auto eoj = src.end(); - USHORT min_major = 0; - USHORT min_minor = 0; - USHORT min_patch = 0; - USHORT max_major = USHRT_MAX; - USHORT max_minor = USHRT_MAX; - USHORT max_patch = USHRT_MAX; - std::vector signature_type_array; - WSTRING action = WStr(""); - - if (is_target_method) { - // these fields only exist in the target definition - - if (src.find("minimum_major") != eoj) { - min_major = src["minimum_major"].get(); - } - if (src.find("minimum_minor") != eoj) { - min_minor = src["minimum_minor"].get(); - } - if (src.find("minimum_patch") != eoj) { - min_patch = src["minimum_patch"].get(); - } - if (src.find("maximum_major") != eoj) { - max_major = src["maximum_major"].get(); - } - if (src.find("maximum_minor") != eoj) { - max_minor = src["maximum_minor"].get(); - } - if (src.find("maximum_patch") != eoj) { - max_patch = src["maximum_patch"].get(); - } + // first get the name, which is required + const auto name = ToWSTRING(src.value("name", "")); + if (name.empty()) + { + Warn("Integration name is missing for integration: ", src.dump()); + return std::make_pair({}, false); + } - if (src.find("signature_types") != eoj) { - // c++ is unable to handle null values in this array - // we would need to write out own parsing here for null values - auto sig_types = src["signature_types"].get>(); - signature_type_array = std::vector(sig_types.size()); - for (auto i = sig_types.size() - 1; i < sig_types.size(); i--) { - signature_type_array[i] = ToWSTRING(sig_types[i]); - } + std::vector replacements; + auto arr = src.value("method_replacements", json::array()); + if (arr.is_array()) + { + for (auto& el : arr) + { + auto mr = MethodReplacementFromJson(el); + if (std::get<1>(mr)) + { + replacements.push_back(std::get<0>(mr)); + } + } + } + return std::make_pair({name, replacements}, true); } - } else if (is_wrapper_method) { - action = ToWSTRING(src.value("action", "")); - } - - std::vector signature; - if (raw_signature.is_array()) { - for (auto& el : raw_signature) { - if (el.is_number_unsigned()) { - signature.push_back(BYTE(el.get())); - } + + std::pair MethodReplacementFromJson(const json::value_type& src) + { + if (!src.is_object()) + { + return std::make_pair({}, false); + } + + const auto caller = MethodReferenceFromJson(src.value("caller", json::object()), false, false); + const auto target = MethodReferenceFromJson(src.value("target", json::object()), true, false); + const auto wrapper = MethodReferenceFromJson(src.value("wrapper", json::object()), false, true); + return std::make_pair({caller, target, wrapper}, true); } - } else if (raw_signature.is_string()) { - // load as a hex string - std::string str = raw_signature; - bool flip = false; - char prev = 0; - for (auto& c : str) { - BYTE b = 0; - if ('0' <= c && c <= '9') { - b = c - '0'; - } else if ('a' <= c && c <= 'f') { - b = c - 'a' + 10; - } else if ('A' <= c && c <= 'F') { - b = c - 'A' + 10; - } else { - // skip any non-hex character - continue; - } - if (flip) { - signature.push_back((prev << 4) + b); - } - flip = !flip; - prev = b; + + MethodReference MethodReferenceFromJson(const json::value_type& src, const bool is_target_method, + const bool is_wrapper_method) + { + if (!src.is_object()) + { + return {}; + } + + const auto assembly = ToWSTRING(src.value("assembly", "")); + const auto type = ToWSTRING(src.value("type", "")); + const auto method = ToWSTRING(src.value("method", "")); + auto raw_signature = src.value("signature", json::array()); + + const auto eoj = src.end(); + USHORT min_major = 0; + USHORT min_minor = 0; + USHORT min_patch = 0; + USHORT max_major = USHRT_MAX; + USHORT max_minor = USHRT_MAX; + USHORT max_patch = USHRT_MAX; + std::vector signature_type_array; + WSTRING action = WStr(""); + + if (is_target_method) + { + // these fields only exist in the target definition + + if (src.find("minimum_major") != eoj) + { + min_major = src["minimum_major"].get(); + } + if (src.find("minimum_minor") != eoj) + { + min_minor = src["minimum_minor"].get(); + } + if (src.find("minimum_patch") != eoj) + { + min_patch = src["minimum_patch"].get(); + } + if (src.find("maximum_major") != eoj) + { + max_major = src["maximum_major"].get(); + } + if (src.find("maximum_minor") != eoj) + { + max_minor = src["maximum_minor"].get(); + } + if (src.find("maximum_patch") != eoj) + { + max_patch = src["maximum_patch"].get(); + } + + if (src.find("signature_types") != eoj) + { + // c++ is unable to handle null values in this array + // we would need to write out own parsing here for null values + auto sig_types = src["signature_types"].get>(); + signature_type_array = std::vector(sig_types.size()); + for (auto i = sig_types.size() - 1; i < sig_types.size(); i--) + { + signature_type_array[i] = ToWSTRING(sig_types[i]); + } + } + } + else if (is_wrapper_method) + { + action = ToWSTRING(src.value("action", "")); + } + + std::vector signature; + if (raw_signature.is_array()) + { + for (auto& el : raw_signature) + { + if (el.is_number_unsigned()) + { + signature.push_back(BYTE(el.get())); + } + } + } + else if (raw_signature.is_string()) + { + // load as a hex string + std::string str = raw_signature; + bool flip = false; + char prev = 0; + for (auto& c : str) + { + BYTE b = 0; + if ('0' <= c && c <= '9') + { + b = c - '0'; + } + else if ('a' <= c && c <= 'f') + { + b = c - 'a' + 10; + } + else if ('A' <= c && c <= 'F') + { + b = c - 'A' + 10; + } + else + { + // skip any non-hex character + continue; + } + if (flip) + { + signature.push_back((prev << 4) + b); + } + flip = !flip; + prev = b; + } + } + return MethodReference(assembly, type, method, action, Version(min_major, min_minor, min_patch, 0), + Version(max_major, max_minor, max_patch, USHRT_MAX), signature, signature_type_array); } - } - return MethodReference(assembly, type, method, action, - Version(min_major, min_minor, min_patch, 0), - Version(max_major, max_minor, max_patch, USHRT_MAX), - signature, signature_type_array); -} -} // namespace +} // namespace -} // namespace trace +} // namespace trace diff --git a/src/Datadog.Trace.ClrProfiler.Native/integration_loader.h b/src/Datadog.Trace.ClrProfiler.Native/integration_loader.h index 0f71555d5b..ec9111baab 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/integration_loader.h +++ b/src/Datadog.Trace.ClrProfiler.Native/integration_loader.h @@ -10,7 +10,8 @@ #include "integration.h" #include "macros.h" -namespace trace { +namespace trace +{ using json = nlohmann::json; @@ -22,17 +23,16 @@ std::vector LoadIntegrationsFromFile(const WSTRING& file_path); // LoadIntegrationsFromFile loads the integrations from a stream std::vector LoadIntegrationsFromStream(std::istream& stream); -namespace { +namespace +{ -std::pair IntegrationFromJson(const json::value_type& src); -std::pair MethodReplacementFromJson( - const json::value_type& src); -MethodReference MethodReferenceFromJson(const json::value_type& src, - const bool is_target_method, - const bool is_wrapper_method); + std::pair IntegrationFromJson(const json::value_type& src); + std::pair MethodReplacementFromJson(const json::value_type& src); + MethodReference MethodReferenceFromJson(const json::value_type& src, const bool is_target_method, + const bool is_wrapper_method); -} // namespace +} // namespace -} // namespace trace +} // namespace trace #endif diff --git a/src/Datadog.Trace.ClrProfiler.Native/interop.cpp b/src/Datadog.Trace.ClrProfiler.Native/interop.cpp index 80e77e147f..43176a1e06 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/interop.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/interop.cpp @@ -8,10 +8,13 @@ #include "cor_profiler.h" -EXTERN_C BOOL STDAPICALLTYPE IsProfilerAttached() { - return trace::profiler->IsAttached(); +EXTERN_C BOOL STDAPICALLTYPE IsProfilerAttached() +{ + return trace::profiler->IsAttached(); } -EXTERN_C VOID STDAPICALLTYPE GetAssemblyAndSymbolsBytes(BYTE** pAssemblyArray, int* assemblySize, BYTE** pSymbolsArray, int* symbolsSize) { - return trace::profiler->GetAssemblyAndSymbolsBytes(pAssemblyArray, assemblySize, pSymbolsArray, symbolsSize); +EXTERN_C VOID STDAPICALLTYPE GetAssemblyAndSymbolsBytes(BYTE** pAssemblyArray, int* assemblySize, BYTE** pSymbolsArray, + int* symbolsSize) +{ + return trace::profiler->GetAssemblyAndSymbolsBytes(pAssemblyArray, assemblySize, pSymbolsArray, symbolsSize); } diff --git a/src/Datadog.Trace.ClrProfiler.Native/lib/coreclr/src/README.md b/src/Datadog.Trace.ClrProfiler.Native/lib/coreclr/src/README.md new file mode 100644 index 0000000000..3ff9777802 --- /dev/null +++ b/src/Datadog.Trace.ClrProfiler.Native/lib/coreclr/src/README.md @@ -0,0 +1,20 @@ +The files here were copied from https://github.com/dotnet/runtime/tree/v5.0.5/src/coreclr/src. + +This is to allow using the runtime's Platform Adaptation Layer. + +Add back the definition of g_tkCorEncodeToken in cor.h l.2096: + +replace +extern const mdToken g_tkCorEncodeToken[]; +by +const mdToken g_tkCorEncodeToken[4] = { mdtTypeDef, mdtTypeRef, mdtTypeSpec, mdtBaseType }; + +Commented #define statements because there is naming conflicts when compiling with the stdlibc++ 8 (+ C++17) +in `dotnet-runtime-coreclr\pal\inc\rt\sal.h` +l.2612 // commented because it conflicts with stdlibc++ 8 +l.2613 //#define __valid + +and + +l.2622 // commented because it conflicts with stdlibc++ 8 +l.2623 //#define __pre \ No newline at end of file diff --git a/src/Datadog.Trace.ClrProfiler.Native/lib/coreclr/src/pal/inc/rt/sal.h b/src/Datadog.Trace.ClrProfiler.Native/lib/coreclr/src/pal/inc/rt/sal.h index 9f7c014b79..273fb46b75 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/lib/coreclr/src/pal/inc/rt/sal.h +++ b/src/Datadog.Trace.ClrProfiler.Native/lib/coreclr/src/pal/inc/rt/sal.h @@ -2609,7 +2609,8 @@ extern "C" { #define __readonly #define __notreadonly #define __maybereadonly - #define __valid + // commented because it conflicts with stdlibc++ 8 + //#define __valid #define __notvalid #define __maybevalid #define __readableTo(extent) @@ -2618,7 +2619,8 @@ extern "C" { #define __writableTo(size) #define __elem_writableTo(size) #define __byte_writableTo(size) - #define __pre + // commented because it conflicts with stdlibc++ 8 + //#define __pre #define __post #define __precond(expr) #define __postcond(expr) @@ -2949,4 +2951,4 @@ __PRIMOP(int, _In_function_class_(__In_impl_ char*);) #ifdef __cplusplus // [ } -#endif // ] +#endif // ] \ No newline at end of file diff --git a/src/Datadog.Trace.ClrProfiler.Native/logging.cpp b/src/Datadog.Trace.ClrProfiler.Native/logging.cpp index 07032f518f..40557c0ab7 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/logging.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/logging.cpp @@ -9,97 +9,123 @@ typedef struct stat Stat; #endif -namespace trace { +namespace trace +{ bool debug_logging_enabled = false; bool dump_il_rewrite_enabled = false; #ifndef _WIN32 // for linux and osx we need a function to get the path from a filepath -std::string getPathName(const std::string& s) { - char sep = '/'; - size_t i = s.rfind(sep, s.length()); - if (i != std::string::npos) { - return s.substr(0, i); - } - return ""; +std::string getPathName(const std::string& s) +{ + char sep = '/'; + size_t i = s.rfind(sep, s.length()); + if (i != std::string::npos) + { + return s.substr(0, i); + } + return ""; } #endif -std::string Logger::GetLogPath(const std::string& file_name_suffix) { - const auto path = ToString(DatadogLogFilePath(file_name_suffix)); +std::string Logger::GetLogPath(const std::string& file_name_suffix) +{ + const auto path = ToString(DatadogLogFilePath(file_name_suffix)); #ifdef _WIN32 - // on VC++, use std::filesystem (C++ 17) to - // create directory if missing - const auto log_path = std::filesystem::path(path); - - if (log_path.has_parent_path()) { - const auto parent_path = log_path.parent_path(); - - if (!std::filesystem::exists(parent_path)) { - std::filesystem::create_directories(parent_path); + // on VC++, use std::filesystem (C++ 17) to + // create directory if missing + const auto log_path = std::filesystem::path(path); + + if (log_path.has_parent_path()) + { + const auto parent_path = log_path.parent_path(); + + if (!std::filesystem::exists(parent_path)) + { + std::filesystem::create_directories(parent_path); + } } - } #else - // on linux and osx we use the basic C approach - const auto log_path = getPathName(path); - Stat st; - if (log_path != "" && stat(log_path.c_str(), &st) != 0) { - mkdir(log_path.c_str(), 0777); - } + // on linux and osx we use the basic C approach + const auto log_path = getPathName(path); + Stat st; + if (log_path != "" && stat(log_path.c_str(), &st) != 0) + { + mkdir(log_path.c_str(), 0777); + } #endif - return path; + return path; } -Logger::Logger() { - spdlog::set_error_handler([](const std::string& msg) { - // By writing into the stderr was changing the behavior in a CI scenario. - // There's not a good way to report errors when trying to create the log file. - // But we never should be changing the normal behavior of an app. - // std::cerr << "Logger Handler: " << msg << std::endl; - }); +Logger::Logger() +{ + spdlog::set_error_handler([](const std::string& msg) { + // By writing into the stderr was changing the behavior in a CI scenario. + // There's not a good way to report errors when trying to create the log file. + // But we never should be changing the normal behavior of an app. + // std::cerr << "Logger Handler: " << msg << std::endl; + }); - spdlog::flush_every(std::chrono::seconds(3)); + spdlog::flush_every(std::chrono::seconds(3)); - static auto current_process_name = ToString(GetCurrentProcessName()); - static auto current_process_id= GetPID(); - static auto current_process_without_extension = - current_process_name.substr(0, current_process_name.find_last_of(".")); + static auto current_process_name = ToString(GetCurrentProcessName()); + static auto current_process_id = GetPID(); + static auto current_process_without_extension = + current_process_name.substr(0, current_process_name.find_last_of(".")); - static auto file_name_suffix = "-" + current_process_without_extension + "-" + - std::to_string(current_process_id); + static auto file_name_suffix = "-" + current_process_without_extension + "-" + std::to_string(current_process_id); - try { - m_fileout = spdlog::rotating_logger_mt( - "Logger", GetLogPath(file_name_suffix), 1048576 * 5, 10); - } - catch (...) { - std::cerr << "Logger Handler: Error creating native log file." << std::endl; - m_fileout = spdlog::null_logger_mt("Logger"); - } + try + { + m_fileout = spdlog::rotating_logger_mt("Logger", GetLogPath(file_name_suffix), 1048576 * 5, 10); + } + catch (...) + { + std::cerr << "Logger Handler: Error creating native log file." << std::endl; + m_fileout = spdlog::null_logger_mt("Logger"); + } - m_fileout->set_level(spdlog::level::debug); + m_fileout->set_level(spdlog::level::debug); - m_fileout->set_pattern("%D %I:%M:%S.%e %p [%P|%t] [%l] %v"); + m_fileout->set_pattern("%D %I:%M:%S.%e %p [%P|%t] [%l] %v"); - m_fileout->flush_on(spdlog::level::info); + m_fileout->flush_on(spdlog::level::info); }; -Logger::~Logger() { - m_fileout->flush(); - spdlog::shutdown(); +Logger::~Logger() +{ + m_fileout->flush(); + spdlog::shutdown(); }; -void Logger::Debug(const std::string& str) { - if (debug_logging_enabled) { - m_fileout->debug(str); - } +void Logger::Debug(const std::string& str) +{ + if (debug_logging_enabled) + { + m_fileout->debug(str); + } +} +void Logger::Info(const std::string& str) +{ + m_fileout->info(str); +} +void Logger::Warn(const std::string& str) +{ + m_fileout->warn(str); +} +void Logger::Error(const std::string& str) +{ + m_fileout->error(str); +} +void Logger::Critical(const std::string& str) +{ + m_fileout->critical(str); +} +void Logger::Flush() +{ + m_fileout->flush(); } -void Logger::Info(const std::string& str) { m_fileout->info(str); } -void Logger::Warn(const std::string& str) { m_fileout->warn(str); } -void Logger::Error(const std::string& str) { m_fileout->error(str); } -void Logger::Critical(const std::string& str) { m_fileout->critical(str); } -void Logger::Flush() { m_fileout->flush(); } -} // namespace trace +} // namespace trace diff --git a/src/Datadog.Trace.ClrProfiler.Native/logging.h b/src/Datadog.Trace.ClrProfiler.Native/logging.h index 8dbbc94432..c54c0f1d0e 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/logging.h +++ b/src/Datadog.Trace.ClrProfiler.Native/logging.h @@ -7,59 +7,70 @@ #include #include -namespace trace { +namespace trace +{ extern bool debug_logging_enabled; extern bool dump_il_rewrite_enabled; -class Logger : public Singleton { - friend class Singleton; +class Logger : public Singleton +{ + friend class Singleton; - private: - std::shared_ptr m_fileout; - static std::string GetLogPath(const std::string& file_name_suffix); - Logger(); - ~Logger(); +private: + std::shared_ptr m_fileout; + static std::string GetLogPath(const std::string& file_name_suffix); + Logger(); + ~Logger(); - public: - void Debug(const std::string& str); - void Info(const std::string& str); - void Warn(const std::string& str); - void Error(const std::string& str); - void Critical(const std::string& str); - void Flush(); - static void Shutdown() { spdlog::shutdown(); } +public: + void Debug(const std::string& str); + void Info(const std::string& str); + void Warn(const std::string& str); + void Error(const std::string& str); + void Critical(const std::string& str); + void Flush(); + static void Shutdown() + { + spdlog::shutdown(); + } }; template -std::string LogToString(Arg const& arg) { - return ToString(arg); +std::string LogToString(Arg const& arg) +{ + return ToString(arg); } template -std::string LogToString(Args const&... args) { - std::ostringstream oss; - int a[] = {0, ((void)(oss << LogToString(args)), 0)...}; - return oss.str(); +std::string LogToString(Args const&... args) +{ + std::ostringstream oss; + int a[] = {0, ((void) (oss << LogToString(args)), 0)...}; + return oss.str(); } template -void Debug(const Args... args) { - if (debug_logging_enabled) { - Logger::Instance()->Debug(LogToString(args...)); - } +void Debug(const Args... args) +{ + if (debug_logging_enabled) + { + Logger::Instance()->Debug(LogToString(args...)); + } } template -void Info(const Args... args) { - Logger::Instance()->Info(LogToString(args...)); +void Info(const Args... args) +{ + Logger::Instance()->Info(LogToString(args...)); } template -void Warn(const Args... args) { - Logger::Instance()->Warn(LogToString(args...)); +void Warn(const Args... args) +{ + Logger::Instance()->Warn(LogToString(args...)); } -} // namespace trace +} // namespace trace -#endif // DD_CLR_PROFILER_LOGGING_H_ +#endif // DD_CLR_PROFILER_LOGGING_H_ diff --git a/src/Datadog.Trace.ClrProfiler.Native/macros.h b/src/Datadog.Trace.ClrProfiler.Native/macros.h index 86d00943e6..5d1e815ac1 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/macros.h +++ b/src/Datadog.Trace.ClrProfiler.Native/macros.h @@ -4,25 +4,30 @@ #include #include -#define RETURN_IF_FAILED(EXPR) \ - do { \ - hr = (EXPR); \ - if (FAILED(hr)) { \ - return (hr); \ - } \ - } while (0) +#define RETURN_IF_FAILED(EXPR) \ + do \ + { \ + hr = (EXPR); \ + if (FAILED(hr)) \ + { \ + return (hr); \ + } \ + } while (0) -#define RETURN_OK_IF_FAILED(EXPR) \ - do { \ - hr = (EXPR); \ - if (FAILED(hr)) { \ - return S_OK; \ - } \ - } while (0) +#define RETURN_OK_IF_FAILED(EXPR) \ + do \ + { \ + hr = (EXPR); \ + if (FAILED(hr)) \ + { \ + return S_OK; \ + } \ + } while (0) -#define IfFalseRetFAIL(EXPR) \ - do { \ - if ((EXPR) == false) return E_FAIL; \ - } while (0) +#define IfFalseRetFAIL(EXPR) \ + do \ + { \ + if ((EXPR) == false) return E_FAIL; \ + } while (0) -#endif // DD_CLR_PROFILER_MACROS_H_ +#endif // DD_CLR_PROFILER_MACROS_H_ diff --git a/src/Datadog.Trace.ClrProfiler.Native/metadata_builder.cpp b/src/Datadog.Trace.ClrProfiler.Native/metadata_builder.cpp index ae6cba0c1f..4e928264df 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/metadata_builder.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/metadata_builder.cpp @@ -6,151 +6,155 @@ #include "macros.h" #include "metadata_builder.h" -namespace trace { - -HRESULT MetadataBuilder::EmitAssemblyRef( - const trace::AssemblyReference& assembly_ref) const { - ASSEMBLYMETADATA assembly_metadata{}; - assembly_metadata.usMajorVersion = assembly_ref.version.major; - assembly_metadata.usMinorVersion = assembly_ref.version.minor; - assembly_metadata.usBuildNumber = assembly_ref.version.build; - assembly_metadata.usRevisionNumber = assembly_ref.version.revision; - if (assembly_ref.locale == WStr("neutral")) { - assembly_metadata.szLocale = nullptr; - assembly_metadata.cbLocale = 0; - } else { - assembly_metadata.szLocale = - const_cast(assembly_ref.locale.c_str()); - assembly_metadata.cbLocale = (DWORD)(assembly_ref.locale.size()); - } - - DWORD public_key_size = 8; - if (assembly_ref.public_key == trace::PublicKey()) { - public_key_size = 0; - } - - mdAssemblyRef assembly_ref_out; - const HRESULT hr = assembly_emit_->DefineAssemblyRef( - &assembly_ref.public_key.data[0], public_key_size, - assembly_ref.name.c_str(), &assembly_metadata, - // hash blob - nullptr, - // cb of hash blob - 0, - // flags - 0, &assembly_ref_out); - - if (FAILED(hr)) { - Warn("DefineAssemblyRef failed"); - } - return S_OK; -} +namespace trace +{ + +HRESULT MetadataBuilder::EmitAssemblyRef(const trace::AssemblyReference& assembly_ref) const +{ + ASSEMBLYMETADATA assembly_metadata{}; + assembly_metadata.usMajorVersion = assembly_ref.version.major; + assembly_metadata.usMinorVersion = assembly_ref.version.minor; + assembly_metadata.usBuildNumber = assembly_ref.version.build; + assembly_metadata.usRevisionNumber = assembly_ref.version.revision; + if (assembly_ref.locale == WStr("neutral")) + { + assembly_metadata.szLocale = nullptr; + assembly_metadata.cbLocale = 0; + } + else + { + assembly_metadata.szLocale = const_cast(assembly_ref.locale.c_str()); + assembly_metadata.cbLocale = (DWORD)(assembly_ref.locale.size()); + } -HRESULT MetadataBuilder::FindWrapperTypeRef( - const MethodReplacement& method_replacement, - mdTypeRef& type_ref_out) const { - const auto& cache_key = - method_replacement.wrapper_method.get_type_cache_key(); - mdTypeRef type_ref = mdTypeRefNil; + DWORD public_key_size = 8; + if (assembly_ref.public_key == trace::PublicKey()) + { + public_key_size = 0; + } - if (metadata_.TryGetWrapperParentTypeRef(cache_key, type_ref)) { - // this type was already resolved - type_ref_out = type_ref; + mdAssemblyRef assembly_ref_out; + const HRESULT hr = assembly_emit_->DefineAssemblyRef(&assembly_ref.public_key.data[0], public_key_size, + assembly_ref.name.c_str(), &assembly_metadata, + // hash blob + nullptr, + // cb of hash blob + 0, + // flags + 0, &assembly_ref_out); + + if (FAILED(hr)) + { + Warn("DefineAssemblyRef failed"); + } return S_OK; - } - - HRESULT hr; - type_ref = mdTypeRefNil; - - if (metadata_.assemblyName == - method_replacement.wrapper_method.assembly.name) { - // type is defined in this assembly - hr = metadata_emit_->DefineTypeRefByName( - module_, method_replacement.wrapper_method.type_name.c_str(), - &type_ref); - } else { - // type is defined in another assembly, - // find a reference to the assembly where type lives - const auto assembly_ref = FindAssemblyRef( - assembly_import_, method_replacement.wrapper_method.assembly.name); - if (assembly_ref == mdAssemblyRefNil) { - // TODO: emit assembly reference if not found? - Warn("Assembly reference for", - method_replacement.wrapper_method.assembly.name, " not found"); - return E_FAIL; +} + +HRESULT MetadataBuilder::FindWrapperTypeRef(const MethodReplacement& method_replacement, mdTypeRef& type_ref_out) const +{ + const auto& cache_key = method_replacement.wrapper_method.get_type_cache_key(); + mdTypeRef type_ref = mdTypeRefNil; + + if (metadata_.TryGetWrapperParentTypeRef(cache_key, type_ref)) + { + // this type was already resolved + type_ref_out = type_ref; + return S_OK; } - // search for an existing reference to the type - hr = metadata_import_->FindTypeRef( - assembly_ref, method_replacement.wrapper_method.type_name.c_str(), - &type_ref); + HRESULT hr; + type_ref = mdTypeRefNil; - if (hr == HRESULT(0x80131130) /* record not found on lookup */) { - // if typeRef not found, create a new one by emitting a metadata token - hr = metadata_emit_->DefineTypeRefByName( - assembly_ref, method_replacement.wrapper_method.type_name.c_str(), - &type_ref); + if (metadata_.assemblyName == method_replacement.wrapper_method.assembly.name) + { + // type is defined in this assembly + hr = metadata_emit_->DefineTypeRefByName(module_, method_replacement.wrapper_method.type_name.c_str(), + &type_ref); + } + else + { + // type is defined in another assembly, + // find a reference to the assembly where type lives + const auto assembly_ref = FindAssemblyRef(assembly_import_, method_replacement.wrapper_method.assembly.name); + if (assembly_ref == mdAssemblyRefNil) + { + // TODO: emit assembly reference if not found? + Warn("Assembly reference for", method_replacement.wrapper_method.assembly.name, " not found"); + return E_FAIL; + } + + // search for an existing reference to the type + hr = + metadata_import_->FindTypeRef(assembly_ref, method_replacement.wrapper_method.type_name.c_str(), &type_ref); + + if (hr == HRESULT(0x80131130) /* record not found on lookup */) + { + // if typeRef not found, create a new one by emitting a metadata token + hr = metadata_emit_->DefineTypeRefByName(assembly_ref, method_replacement.wrapper_method.type_name.c_str(), + &type_ref); + } } - } - RETURN_IF_FAILED(hr); + RETURN_IF_FAILED(hr); - // cache the typeRef in case we need it again - metadata_.SetWrapperParentTypeRef(cache_key, type_ref); - type_ref_out = type_ref; - return S_OK; + // cache the typeRef in case we need it again + metadata_.SetWrapperParentTypeRef(cache_key, type_ref); + type_ref_out = type_ref; + return S_OK; } -HRESULT MetadataBuilder::StoreWrapperMethodRef( - const MethodReplacement& method_replacement) const { - const auto& cache_key = - method_replacement.wrapper_method.get_method_cache_key(); - mdMemberRef member_ref = mdMemberRefNil; +HRESULT MetadataBuilder::StoreWrapperMethodRef(const MethodReplacement& method_replacement) const +{ + const auto& cache_key = method_replacement.wrapper_method.get_method_cache_key(); + mdMemberRef member_ref = mdMemberRefNil; - if (metadata_.TryGetWrapperMemberRef(cache_key, member_ref)) { - // this member was already resolved - return S_OK; - } - - mdTypeRef type_ref = mdTypeRefNil; - HRESULT hr = FindWrapperTypeRef(method_replacement, type_ref); - if (FAILED(hr)) { - // Record that this cache_key failed - metadata_.SetFailedWrapperMemberKey(cache_key); - return hr; - } - - member_ref = mdMemberRefNil; - - auto signature_data = method_replacement.wrapper_method.method_signature.data; - - // If the signature data size is greater than zero means we need to load the methodRef - // for CallSite instrumentation. - // In case of the signature data size is zero we asume we are in a calltarget scenario - // where we use the TypeRef but not a MemberRef. - - if (signature_data.size() > 0) { - // callsite integrations do this path. - hr = metadata_import_->FindMemberRef( - type_ref, method_replacement.wrapper_method.method_name.c_str(), - signature_data.data(), (DWORD)(signature_data.size()), &member_ref); - - if (hr == HRESULT(0x80131130) /* record not found on lookup */) { - // if memberRef not found, create it by emitting a metadata token - hr = metadata_emit_->DefineMemberRef( - type_ref, method_replacement.wrapper_method.method_name.c_str(), - signature_data.data(), (DWORD)(signature_data.size()), &member_ref); + if (metadata_.TryGetWrapperMemberRef(cache_key, member_ref)) + { + // this member was already resolved + return S_OK; + } + + mdTypeRef type_ref = mdTypeRefNil; + HRESULT hr = FindWrapperTypeRef(method_replacement, type_ref); + if (FAILED(hr)) + { + // Record that this cache_key failed + metadata_.SetFailedWrapperMemberKey(cache_key); + return hr; } - if (FAILED(hr)) { - // Record that this cache_key failed - metadata_.SetFailedWrapperMemberKey(cache_key); - return hr; + member_ref = mdMemberRefNil; + + auto signature_data = method_replacement.wrapper_method.method_signature.data; + + // If the signature data size is greater than zero means we need to load the methodRef + // for CallSite instrumentation. + // In case of the signature data size is zero we asume we are in a calltarget scenario + // where we use the TypeRef but not a MemberRef. + + if (signature_data.size() > 0) + { + // callsite integrations do this path. + hr = metadata_import_->FindMemberRef(type_ref, method_replacement.wrapper_method.method_name.c_str(), + signature_data.data(), (DWORD)(signature_data.size()), &member_ref); + + if (hr == HRESULT(0x80131130) /* record not found on lookup */) + { + // if memberRef not found, create it by emitting a metadata token + hr = metadata_emit_->DefineMemberRef(type_ref, method_replacement.wrapper_method.method_name.c_str(), + signature_data.data(), (DWORD)(signature_data.size()), &member_ref); + } + + if (FAILED(hr)) + { + // Record that this cache_key failed + metadata_.SetFailedWrapperMemberKey(cache_key); + return hr; + } } - } - metadata_.SetWrapperMemberRef(cache_key, member_ref); - return S_OK; + metadata_.SetWrapperMemberRef(cache_key, member_ref); + return S_OK; } -} // namespace trace +} // namespace trace diff --git a/src/Datadog.Trace.ClrProfiler.Native/metadata_builder.h b/src/Datadog.Trace.ClrProfiler.Native/metadata_builder.h index 8ab52d813d..d74976541a 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/metadata_builder.h +++ b/src/Datadog.Trace.ClrProfiler.Native/metadata_builder.h @@ -6,37 +6,37 @@ #include "logging.h" #include "module_metadata.h" -namespace trace { - -class MetadataBuilder { - private: - ModuleMetadata& metadata_; - const mdModule module_ = mdModuleNil; - const ComPtr metadata_import_{}; - const ComPtr metadata_emit_{}; - const ComPtr assembly_import_{}; - const ComPtr assembly_emit_{}; - - HRESULT FindWrapperTypeRef(const MethodReplacement& method_replacement, - mdTypeRef& type_ref_out) const; - - public: - MetadataBuilder(ModuleMetadata& metadata, const mdModule module, - ComPtr metadata_import, - ComPtr metadata_emit, - ComPtr assembly_import, - ComPtr assembly_emit) - : metadata_(metadata), +namespace trace +{ + +class MetadataBuilder +{ +private: + ModuleMetadata& metadata_; + const mdModule module_ = mdModuleNil; + const ComPtr metadata_import_{}; + const ComPtr metadata_emit_{}; + const ComPtr assembly_import_{}; + const ComPtr assembly_emit_{}; + + HRESULT FindWrapperTypeRef(const MethodReplacement& method_replacement, mdTypeRef& type_ref_out) const; + +public: + MetadataBuilder(ModuleMetadata& metadata, const mdModule module, ComPtr metadata_import, + ComPtr metadata_emit, ComPtr assembly_import, + ComPtr assembly_emit) : + metadata_(metadata), module_(module), metadata_import_(metadata_import), metadata_emit_(metadata_emit), assembly_import_(assembly_import), - assembly_emit_(assembly_emit) {} + assembly_emit_(assembly_emit) + { + } - HRESULT StoreWrapperMethodRef( - const MethodReplacement& method_replacement) const; + HRESULT StoreWrapperMethodRef(const MethodReplacement& method_replacement) const; - HRESULT EmitAssemblyRef(const trace::AssemblyReference& assembly_ref) const; + HRESULT EmitAssemblyRef(const trace::AssemblyReference& assembly_ref) const; }; -} // namespace trace +} // namespace trace diff --git a/src/Datadog.Trace.ClrProfiler.Native/miniutf.cpp b/src/Datadog.Trace.ClrProfiler.Native/miniutf.cpp index f219fc63b5..20108385f5 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/miniutf.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/miniutf.cpp @@ -23,7 +23,8 @@ #include -namespace miniutf { +namespace miniutf +{ #include "miniutfdata.h" @@ -31,47 +32,58 @@ namespace miniutf { * Encoding * * * * * * * * * */ -void utf8_encode(char32_t pt, std::string& out) { - if (pt < 0x80) { - out += static_cast(pt); - } else if (pt < 0x800) { - out += {static_cast((pt >> 6) | 0xC0), - static_cast((pt & 0x3F) | 0x80)}; - } else if (pt < 0x10000) { - out += {static_cast((pt >> 12) | 0xE0), - static_cast(((pt >> 6) & 0x3F) | 0x80), - static_cast((pt & 0x3F) | 0x80)}; - } else if (pt < 0x110000) { - out += {static_cast((pt >> 18) | 0xF0), - static_cast(((pt >> 12) & 0x3F) | 0x80), - static_cast(((pt >> 6) & 0x3F) | 0x80), - static_cast((pt & 0x3F) | 0x80)}; - } else { +void utf8_encode(char32_t pt, std::string& out) +{ + if (pt < 0x80) + { + out += static_cast(pt); + } + else if (pt < 0x800) + { + out += {static_cast((pt >> 6) | 0xC0), static_cast((pt & 0x3F) | 0x80)}; + } + else if (pt < 0x10000) + { + out += {static_cast((pt >> 12) | 0xE0), static_cast(((pt >> 6) & 0x3F) | 0x80), + static_cast((pt & 0x3F) | 0x80)}; + } + else if (pt < 0x110000) + { + out += {static_cast((pt >> 18) | 0xF0), static_cast(((pt >> 12) & 0x3F) | 0x80), + static_cast(((pt >> 6) & 0x3F) | 0x80), static_cast((pt & 0x3F) | 0x80)}; + } + else + { #pragma warning(disable : 4309) - out += {static_cast(0xEF), static_cast(0xBF), - static_cast(0xBD)}; // U+FFFD + out += {static_cast(0xEF), static_cast(0xBF), static_cast(0xBD)}; // U+FFFD #pragma warning(default : 4309) - } + } } -void utf16_encode(char32_t pt, std::u16string& out) { - if (pt < 0x10000) { - out += static_cast(pt); - } else if (pt < 0x110000) { - out += {static_cast(((pt - 0x10000) >> 10) + 0xD800), - static_cast((pt & 0x3FF) + 0xDC00)}; - } else { - out += 0xFFFD; - } +void utf16_encode(char32_t pt, std::u16string& out) +{ + if (pt < 0x10000) + { + out += static_cast(pt); + } + else if (pt < 0x110000) + { + out += {static_cast(((pt - 0x10000) >> 10) + 0xD800), static_cast((pt & 0x3FF) + 0xDC00)}; + } + else + { + out += 0xFFFD; + } } /* * * * * * * * * * * Decoding logic * * * * * * * * * */ -struct offset_pt { - int offset; - char32_t pt; +struct offset_pt +{ + int offset; + char32_t pt; }; static constexpr const offset_pt invalid_pt = {-1, 0}; @@ -81,117 +93,143 @@ static constexpr const offset_pt invalid_pt = {-1, 0}; * (bytes, for UTF-8) consumed and the result. If no valid codepoint is at * str[i], return invalid_pt. */ -static offset_pt utf8_decode_check(const std::string& str, - std::string::size_type i) { - uint32_t b0, b1, b2, b3; - - b0 = static_cast(str[i]); - - if (b0 < 0x80) { - // 1-byte character - return {1, b0}; - } else if (b0 < 0xC0) { - // Unexpected continuation byte - return invalid_pt; - } else if (b0 < 0xE0) { - // 2-byte character - if (((b1 = str[i + 1]) & 0xC0) != 0x80) return invalid_pt; - - char32_t pt = (b0 & 0x1F) << 6 | (b1 & 0x3F); - if (pt < 0x80) return invalid_pt; - - return {2, pt}; - } else if (b0 < 0xF0) { - // 3-byte character - if (((b1 = str[i + 1]) & 0xC0) != 0x80) return invalid_pt; - if (((b2 = str[i + 2]) & 0xC0) != 0x80) return invalid_pt; - - char32_t pt = (b0 & 0x0F) << 12 | (b1 & 0x3F) << 6 | (b2 & 0x3F); - if (pt < 0x800) return invalid_pt; - - return {3, pt}; - } else if (b0 < 0xF8) { - // 4-byte character - if (((b1 = str[i + 1]) & 0xC0) != 0x80) return invalid_pt; - if (((b2 = str[i + 2]) & 0xC0) != 0x80) return invalid_pt; - if (((b3 = str[i + 3]) & 0xC0) != 0x80) return invalid_pt; - - char32_t pt = - (b0 & 0x0F) << 18 | (b1 & 0x3F) << 12 | (b2 & 0x3F) << 6 | (b3 & 0x3F); - if (pt < 0x10000 || pt >= 0x110000) return invalid_pt; - - return {4, pt}; - } else { - // Codepoint out of range - return invalid_pt; - } +static offset_pt utf8_decode_check(const std::string& str, std::string::size_type i) +{ + uint32_t b0, b1, b2, b3; + + b0 = static_cast(str[i]); + + if (b0 < 0x80) + { + // 1-byte character + return {1, b0}; + } + else if (b0 < 0xC0) + { + // Unexpected continuation byte + return invalid_pt; + } + else if (b0 < 0xE0) + { + // 2-byte character + if (((b1 = str[i + 1]) & 0xC0) != 0x80) return invalid_pt; + + char32_t pt = (b0 & 0x1F) << 6 | (b1 & 0x3F); + if (pt < 0x80) return invalid_pt; + + return {2, pt}; + } + else if (b0 < 0xF0) + { + // 3-byte character + if (((b1 = str[i + 1]) & 0xC0) != 0x80) return invalid_pt; + if (((b2 = str[i + 2]) & 0xC0) != 0x80) return invalid_pt; + + char32_t pt = (b0 & 0x0F) << 12 | (b1 & 0x3F) << 6 | (b2 & 0x3F); + if (pt < 0x800) return invalid_pt; + + return {3, pt}; + } + else if (b0 < 0xF8) + { + // 4-byte character + if (((b1 = str[i + 1]) & 0xC0) != 0x80) return invalid_pt; + if (((b2 = str[i + 2]) & 0xC0) != 0x80) return invalid_pt; + if (((b3 = str[i + 3]) & 0xC0) != 0x80) return invalid_pt; + + char32_t pt = (b0 & 0x0F) << 18 | (b1 & 0x3F) << 12 | (b2 & 0x3F) << 6 | (b3 & 0x3F); + if (pt < 0x10000 || pt >= 0x110000) return invalid_pt; + + return {4, pt}; + } + else + { + // Codepoint out of range + return invalid_pt; + } } // UTF-16 decode helpers. -static inline bool is_high_surrogate(char16_t c) { - return (c >= 0xD800) && (c < 0xDC00); +static inline bool is_high_surrogate(char16_t c) +{ + return (c >= 0xD800) && (c < 0xDC00); } -static inline bool is_low_surrogate(char16_t c) { - return (c >= 0xDC00) && (c < 0xE000); +static inline bool is_low_surrogate(char16_t c) +{ + return (c >= 0xDC00) && (c < 0xE000); } /* * Like utf8_decode_check, but for UTF-16. */ -static offset_pt utf16_decode_check(const std::u16string& str, - std::u16string::size_type i) { - if (is_high_surrogate(str[i]) && is_low_surrogate(str[i + 1])) { - // High surrogate followed by low surrogate - char32_t pt = (((str[i] - 0xD800) << 10) | (str[i + 1] - 0xDC00)) + 0x10000; - return {2, pt}; - } else if (is_high_surrogate(str[i]) || is_low_surrogate(str[i])) { - // High surrogate *not* followed by low surrogate, or unpaired low surrogate - return invalid_pt; - } else { - return {1, str[i]}; - } +static offset_pt utf16_decode_check(const std::u16string& str, std::u16string::size_type i) +{ + if (is_high_surrogate(str[i]) && is_low_surrogate(str[i + 1])) + { + // High surrogate followed by low surrogate + char32_t pt = (((str[i] - 0xD800) << 10) | (str[i + 1] - 0xDC00)) + 0x10000; + return {2, pt}; + } + else if (is_high_surrogate(str[i]) || is_low_surrogate(str[i])) + { + // High surrogate *not* followed by low surrogate, or unpaired low surrogate + return invalid_pt; + } + else + { + return {1, str[i]}; + } } /* * UTF-32 is very easy to check. */ -static offset_pt utf32_decode_check(const std::u32string& str, - std::u32string::size_type i) { - if (str[i] < 0x110000) { - return {1, str[i]}; - } else { - return invalid_pt; - } +static offset_pt utf32_decode_check(const std::u32string& str, std::u32string::size_type i) +{ + if (str[i] < 0x110000) + { + return {1, str[i]}; + } + else + { + return invalid_pt; + } } /* * * * * * * * * * * Decoding wrappers * * * * * * * * * */ -char32_t utf8_decode(const std::string& str, std::string::size_type& i, - bool* replacement_flag) { - offset_pt res = utf8_decode_check(str, i); - if (res.offset < 0) { - if (replacement_flag) *replacement_flag = true; - i += 1; - return 0xFFFD; - } else { - i += res.offset; - return res.pt; - } +char32_t utf8_decode(const std::string& str, std::string::size_type& i, bool* replacement_flag) +{ + offset_pt res = utf8_decode_check(str, i); + if (res.offset < 0) + { + if (replacement_flag) *replacement_flag = true; + i += 1; + return 0xFFFD; + } + else + { + i += res.offset; + return res.pt; + } } -char32_t utf16_decode(const std::u16string& str, std::u16string::size_type& i, - bool* replacement_flag) { - offset_pt res = utf16_decode_check(str, i); - if (res.offset < 0) { - if (replacement_flag) *replacement_flag = true; - i += 1; - return 0xFFFD; - } else { - i += res.offset; - return res.pt; - } +char32_t utf16_decode(const std::u16string& str, std::u16string::size_type& i, bool* replacement_flag) +{ + offset_pt res = utf16_decode_check(str, i); + if (res.offset < 0) + { + if (replacement_flag) *replacement_flag = true; + i += 1; + return 0xFFFD; + } + else + { + i += res.offset; + return res.pt; + } } /* * * * * * * * * * @@ -199,72 +237,80 @@ char32_t utf16_decode(const std::u16string& str, std::u16string::size_type& i, * * * * * * * * * */ template -bool check_helper(const Tfunc& func, const Tstring& str) { - for (typename Tstring::size_type i = 0; i < str.length();) { - offset_pt res = func(str, i); - if (res.offset < 0) return false; - i += res.offset; - } - return true; +bool check_helper(const Tfunc& func, const Tstring& str) +{ + for (typename Tstring::size_type i = 0; i < str.length();) + { + offset_pt res = func(str, i); + if (res.offset < 0) return false; + i += res.offset; + } + return true; } -bool utf8_check(const std::string& str) { - return check_helper(utf8_decode_check, str); +bool utf8_check(const std::string& str) +{ + return check_helper(utf8_decode_check, str); } -bool utf16_check(const std::u16string& str) { - return check_helper(utf16_decode_check, str); +bool utf16_check(const std::u16string& str) +{ + return check_helper(utf16_decode_check, str); } -bool utf32_check(const std::u32string& str) { - return check_helper(utf32_decode_check, str); +bool utf32_check(const std::u32string& str) +{ + return check_helper(utf32_decode_check, str); } /* * * * * * * * * * * Conversion * * * * * * * * * */ -std::u32string to_utf32(const std::string& str) { - std::u32string out; - out.reserve(str.length()); // likely overallocate - for (std::string::size_type i = 0; i < str.length();) - out += utf8_decode(str, i); - return out; +std::u32string to_utf32(const std::string& str) +{ + std::u32string out; + out.reserve(str.length()); // likely overallocate + for (std::string::size_type i = 0; i < str.length();) out += utf8_decode(str, i); + return out; } -std::u16string to_utf16(const std::string& str) { - std::u16string out; - out.reserve(str.length()); // likely overallocate - for (std::string::size_type i = 0; i < str.length();) - utf16_encode(utf8_decode(str, i), out); - return out; +std::u16string to_utf16(const std::string& str) +{ + std::u16string out; + out.reserve(str.length()); // likely overallocate + for (std::string::size_type i = 0; i < str.length();) utf16_encode(utf8_decode(str, i), out); + return out; } -std::string to_utf8(const std::u16string& str) { - std::string out; - out.reserve(str.length() * 3 / 2); // estimate - for (std::u16string::size_type i = 0; i < str.length();) - utf8_encode(utf16_decode(str, i), out); - return out; +std::string to_utf8(const std::u16string& str) +{ + std::string out; + out.reserve(str.length() * 3 / 2); // estimate + for (std::u16string::size_type i = 0; i < str.length();) utf8_encode(utf16_decode(str, i), out); + return out; } -std::string to_utf8(const std::u32string& str) { - std::string out; - out.reserve(str.length() * 3 / 2); // estimate - for (char32_t pt : str) utf8_encode(pt, out); - return out; +std::string to_utf8(const std::u32string& str) +{ + std::string out; + out.reserve(str.length() * 3 / 2); // estimate + for (char32_t pt : str) utf8_encode(pt, out); + return out; } /* * * * * * * * * * * Lowercase * * * * * * * * * */ -std::string lowercase(const std::string& str) { - std::string out; - out.reserve(str.size()); - for (size_t i = 0; i < str.length();) { - int32_t pt = utf8_decode(str, i); - utf8_encode(pt + lowercase_offset(pt), out); - } - return out; +std::string lowercase(const std::string& str) +{ + std::string out; + out.reserve(str.size()); + for (size_t i = 0; i < str.length();) + { + int32_t pt = utf8_decode(str, i); + utf8_encode(pt + lowercase_offset(pt), out); + } + return out; } /* * * * * * * * * * @@ -274,135 +320,151 @@ std::string lowercase(const std::string& str) { /* * Write the canonical decomposition of pt to out. */ -static void unicode_decompose(char32_t pt, std::u32string& out) { - // Special-case: Hangul decomposition - if (pt >= 0xAC00 && pt < 0xD7A4) { - out += 0x1100 + (pt - 0xAC00) / 588; - out += 0x1161 + ((pt - 0xAC00) % 588) / 28; - if ((pt - 0xAC00) % 28) out += 0x11A7 + (pt - 0xAC00) % 28; - return; - } - - // Otherwise, look up in the decomposition table - int32_t decomp_start_idx = decomp_idx(pt); - if (!decomp_start_idx) { - out += pt; - return; - } - - size_t length = (decomp_start_idx >> 14) + 1; - decomp_start_idx &= (1 << 14) - 1; - - for (size_t i = 0; i < length; i++) { - out += xref[decomp_seq[decomp_start_idx + i]]; - } +static void unicode_decompose(char32_t pt, std::u32string& out) +{ + // Special-case: Hangul decomposition + if (pt >= 0xAC00 && pt < 0xD7A4) + { + out += 0x1100 + (pt - 0xAC00) / 588; + out += 0x1161 + ((pt - 0xAC00) % 588) / 28; + if ((pt - 0xAC00) % 28) out += 0x11A7 + (pt - 0xAC00) % 28; + return; + } + + // Otherwise, look up in the decomposition table + int32_t decomp_start_idx = decomp_idx(pt); + if (!decomp_start_idx) + { + out += pt; + return; + } + + size_t length = (decomp_start_idx >> 14) + 1; + decomp_start_idx &= (1 << 14) - 1; + + for (size_t i = 0; i < length; i++) + { + out += xref[decomp_seq[decomp_start_idx + i]]; + } } /* * If there is a Primary Composite equivalent to , return it. Otherwise * return 0. */ -static uint32_t unicode_compose(uint32_t L, uint32_t C) { - int comp_seq_idx; +static uint32_t unicode_compose(uint32_t L, uint32_t C) +{ + int comp_seq_idx; - /* Algorithmic Hangul composition */ - if (L >= 0x1100 && L < 0x1113 && C >= 0x1161 && C < 0x1176) - return ((L - 0x1100) * 21 + C - 0x1161) * 28 + 0xAC00; + /* Algorithmic Hangul composition */ + if (L >= 0x1100 && L < 0x1113 && C >= 0x1161 && C < 0x1176) return ((L - 0x1100) * 21 + C - 0x1161) * 28 + 0xAC00; - if (L >= 0xAC00 && L < 0xD7A4 && !((L - 0xAC00) % 28) && C >= 0x11A8 && - C < 0x11C3) - return L + C - 0x11A7; + if (L >= 0xAC00 && L < 0xD7A4 && !((L - 0xAC00) % 28) && C >= 0x11A8 && C < 0x11C3) return L + C - 0x11A7; - /* Predefined composition mapping */ - comp_seq_idx = comp_idx(L); - do { - if (xref[comp_seq[comp_seq_idx * 2] & ~0x8000] == C) - return xref[comp_seq[comp_seq_idx * 2 + 1]]; - } while (!(comp_seq[(comp_seq_idx++) * 2] & 0x8000)); + /* Predefined composition mapping */ + comp_seq_idx = comp_idx(L); + do + { + if (xref[comp_seq[comp_seq_idx * 2] & ~0x8000] == C) return xref[comp_seq[comp_seq_idx * 2 + 1]]; + } while (!(comp_seq[(comp_seq_idx++) * 2] & 0x8000)); - return 0; + return 0; } -std::u32string normalize32(const std::string& str, bool compose, - bool* replacement_flag) { - if (str.empty()) return {}; - - // Decode and decompose - std::u32string codepoints; - codepoints.reserve(str.size()); - for (size_t i = 0; i < str.length();) { - uint32_t pt = utf8_decode(str, i, replacement_flag); - unicode_decompose(pt, codepoints); - } - - // Canonical Ordering Algorithm: sort all runs of characters with nonzero - // combining class. - size_t start = 0; - while (start < codepoints.length()) { - if (!ccc(codepoints[start])) { - start++; - continue; +std::u32string normalize32(const std::string& str, bool compose, bool* replacement_flag) +{ + if (str.empty()) return {}; + + // Decode and decompose + std::u32string codepoints; + codepoints.reserve(str.size()); + for (size_t i = 0; i < str.length();) + { + uint32_t pt = utf8_decode(str, i, replacement_flag); + unicode_decompose(pt, codepoints); } - size_t end = start + 1; - while (end < codepoints.length() && ccc(codepoints[end])) { - end++; + // Canonical Ordering Algorithm: sort all runs of characters with nonzero + // combining class. + size_t start = 0; + while (start < codepoints.length()) + { + if (!ccc(codepoints[start])) + { + start++; + continue; + } + + size_t end = start + 1; + while (end < codepoints.length() && ccc(codepoints[end])) + { + end++; + } + + if (end - start > 1) + { + std::stable_sort(codepoints.begin() + start, codepoints.begin() + end, + [](char32_t a, char32_t b) { return ccc(a) < ccc(b); }); + } + + start = end + 1; } - if (end - start > 1) { - std::stable_sort(codepoints.begin() + start, codepoints.begin() + end, - [](char32_t a, char32_t b) { return ccc(a) < ccc(b); }); + if (compose) + { + size_t i = 1; + int last_class = -1, starter_pos = 0, target_pos = 1; + char32_t starter = codepoints[0]; + + while (i < codepoints.length()) + { + char32_t ch = codepoints[i]; + int ch_class = ccc(ch); + + uint32_t composite = unicode_compose(starter, ch); + if (composite && last_class < ch_class) + { + codepoints[starter_pos] = composite; + starter = composite; + } + else if (ch_class == 0) + { + starter_pos = target_pos; + starter = ch; + last_class = -1; + codepoints[target_pos] = ch; + target_pos++; + } + else + { + last_class = ch_class; + codepoints[target_pos] = ch; + target_pos++; + } + + i++; + } + + codepoints.resize(target_pos); } - start = end + 1; - } - - if (compose) { - size_t i = 1; - int last_class = -1, starter_pos = 0, target_pos = 1; - char32_t starter = codepoints[0]; - - while (i < codepoints.length()) { - char32_t ch = codepoints[i]; - int ch_class = ccc(ch); - - uint32_t composite = unicode_compose(starter, ch); - if (composite && last_class < ch_class) { - codepoints[starter_pos] = composite; - starter = composite; - } else if (ch_class == 0) { - starter_pos = target_pos; - starter = ch; - last_class = -1; - codepoints[target_pos] = ch; - target_pos++; - } else { - last_class = ch_class; - codepoints[target_pos] = ch; - target_pos++; - } - - i++; - } - - codepoints.resize(target_pos); - } - - return codepoints; + return codepoints; } -std::string normalize8(const std::string& str, bool compose, - bool* replacement_flag) { - std::u32string codepoints = normalize32(str, compose, replacement_flag); - return to_utf8(codepoints); +std::string normalize8(const std::string& str, bool compose, bool* replacement_flag) +{ + std::u32string codepoints = normalize32(str, compose, replacement_flag); + return to_utf8(codepoints); } -std::string nfc(const std::string& str, bool* replacement_flag) { - return normalize8(str, true, replacement_flag); +std::string nfc(const std::string& str, bool* replacement_flag) +{ + return normalize8(str, true, replacement_flag); } -std::string nfd(const std::string& str, bool* replacement_flag) { - return normalize8(str, false, replacement_flag); +std::string nfd(const std::string& str, bool* replacement_flag) +{ + return normalize8(str, false, replacement_flag); } -} // namespace miniutf +} // namespace miniutf diff --git a/src/Datadog.Trace.ClrProfiler.Native/miniutf.hpp b/src/Datadog.Trace.ClrProfiler.Native/miniutf.hpp index 5880c15a70..ac841f341e 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/miniutf.hpp +++ b/src/Datadog.Trace.ClrProfiler.Native/miniutf.hpp @@ -23,15 +23,16 @@ #include -namespace miniutf { +namespace miniutf +{ /* * Character-at-a-time encoding. Convert pt to UTF-8/16 and append to out. * * If pt is invalid (greater than U+10FFFF), U+FFFD will be encoded instead. */ -void utf8_encode(char32_t pt, std::string & out); -void utf16_encode(char32_t pt, std::u16string & out); +void utf8_encode(char32_t pt, std::string& out); +void utf16_encode(char32_t pt, std::u16string& out); /* * Character-at-a-time decoding. Decodes and returns the codepoint starting at str[pos], @@ -40,12 +41,8 @@ void utf16_encode(char32_t pt, std::u16string & out); * If an invalid codepoint is found, return U+FFFD, add 1 to pos, and (if replacement_flag is * non-null) set *replacement_flag to true. */ -char32_t utf8_decode(const std::string & str, - std::string::size_type & pos, - bool * replacement_flag = nullptr); -char32_t utf16_decode(const std::u16string & str, - std::u16string::size_type & pos, - bool * replacement_flag = nullptr); +char32_t utf8_decode(const std::string& str, std::string::size_type& pos, bool* replacement_flag = nullptr); +char32_t utf16_decode(const std::u16string& str, std::u16string::size_type& pos, bool* replacement_flag = nullptr); /* * Return true if str is valid UTF-8, -16, or -32. @@ -58,9 +55,9 @@ char32_t utf16_decode(const std::u16string & str, * * - UTF-32 is valid if it contains no codepoints above U+10FFFF. */ -bool utf8_check(const std::string & str); -bool utf16_check(const std::string & str); -bool utf32_check(const std::string & str); +bool utf8_check(const std::string& str); +bool utf16_check(const std::string& str); +bool utf32_check(const std::string& str); /* * Convert back and forth between UTF-8 and UTF-16 or UTF-32. @@ -68,15 +65,15 @@ bool utf32_check(const std::string & str); * These functions replace invalid sections of input with U+FFFD. If this is not desired, * use utf8_check (above) first to check that the input is valid. */ -std::u32string to_utf32(const std::string & str); -std::u16string to_utf16(const std::string & str); -std::string to_utf8(const std::u16string & str); -std::string to_utf8(const std::u32string & str); +std::u32string to_utf32(const std::string& str); +std::u16string to_utf16(const std::string& str); +std::string to_utf8(const std::u16string& str); +std::string to_utf8(const std::u32string& str); /* * Convert str to lowercase, per the built-in Unicode lowercasing map (codepoint-by-codepoint). */ -std::string lowercase(const std::string & str); +std::string lowercase(const std::string& str); /* * Decompose str. Then, if compose is set, recompose it. @@ -84,12 +81,8 @@ std::string lowercase(const std::string & str); * If replacement characters are used during decoding (i.e. str contains invalid UTF-8), and * replacement_flag is specified, it will be set to true. */ -std::string normalize8(const std::string & str, - bool compose, - bool * replacement_flag = nullptr); -std::u32string normalize32(const std::string & str, - bool compose, - bool * replacement_flag = nullptr); +std::string normalize8(const std::string& str, bool compose, bool* replacement_flag = nullptr); +std::u32string normalize32(const std::string& str, bool compose, bool* replacement_flag = nullptr); /* * Convert str to Normalization Form C. Equivalent to normalize8(str, true, replacement_flag). @@ -97,7 +90,7 @@ std::u32string normalize32(const std::string & str, * If replacement characters are used during decoding (i.e. str contains invalid UTF-8), and * replacement_flag is specified, *replacement_flag will be set to true. */ -std::string nfc(const std::string & str, bool * replacement_flag = nullptr); +std::string nfc(const std::string& str, bool* replacement_flag = nullptr); /* * Convert str to Normalization Form D. Equivalent to normalize8(in, false, replacement_flag). @@ -105,6 +98,6 @@ std::string nfc(const std::string & str, bool * replacement_flag = nullptr); * If replacement characters are used during decoding (i.e. str contains invalid UTF-8), and * replacement_flag is specified, *replacement_flag will be set to true. */ -std::string nfd(const std::string & str, bool * replacement_flag = nullptr); +std::string nfd(const std::string& str, bool* replacement_flag = nullptr); } // namespace miniutf diff --git a/src/Datadog.Trace.ClrProfiler.Native/miniutfdata.h b/src/Datadog.Trace.ClrProfiler.Native/miniutfdata.h index 1328ae7e17..7005f44a15 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/miniutfdata.h +++ b/src/Datadog.Trace.ClrProfiler.Native/miniutfdata.h @@ -1,1900 +1,1526 @@ static const uint32_t xref[] = { - 0, 59, 60, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 82, 83, 84, 85, 86, 87, 88, 89, 90, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 168, 180, 183, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 209, 210, - 211, 212, 213, 214, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 241, 242, - 243, 244, 245, 246, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 323, 324, 325, 326, - 327, 328, 332, 333, 334, 335, 336, 337, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 416, 417, 431, 432, 439, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, - 476, 478, 479, 480, 481, 482, 483, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 500, 501, 504, 505, 506, 507, 508, 509, 510, 511, - 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, - 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 542, 543, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, - 562, 563, 658, 697, 768, 769, 770, 771, 772, 774, 775, 776, 777, 778, - 779, 780, 783, 785, 787, 788, 795, 803, 804, 805, 806, 807, 808, 813, - 814, 816, 817, 824, 832, 833, 834, 835, 836, 837, 884, 894, 901, 902, - 903, 904, 905, 906, 908, 910, 911, 912, 913, 917, 919, 921, 927, 929, - 933, 937, 938, 939, 940, 941, 942, 943, 944, 945, 949, 951, 953, 959, - 961, 965, 969, 970, 971, 972, 973, 974, 978, 979, 980, 1024, 1025, - 1027, 1030, 1031, 1036, 1037, 1038, 1040, 1043, 1045, 1046, 1047, - 1048, 1049, 1050, 1054, 1059, 1063, 1067, 1069, 1072, 1075, 1077, - 1078, 1079, 1080, 1081, 1082, 1086, 1091, 1095, 1099, 1101, 1104, - 1105, 1107, 1110, 1111, 1116, 1117, 1118, 1140, 1141, 1142, 1143, - 1217, 1218, 1232, 1233, 1234, 1235, 1238, 1239, 1240, 1241, 1242, - 1243, 1244, 1245, 1246, 1247, 1250, 1251, 1252, 1253, 1254, 1255, - 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, - 1267, 1268, 1269, 1272, 1273, 1460, 1463, 1464, 1465, 1468, 1471, - 1473, 1474, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1496, 1497, - 1498, 1499, 1500, 1502, 1504, 1505, 1507, 1508, 1510, 1511, 1512, - 1513, 1514, 1522, 1570, 1571, 1572, 1573, 1574, 1575, 1608, 1610, - 1619, 1620, 1621, 1728, 1729, 1730, 1746, 1747, 1749, 2325, 2326, - 2327, 2332, 2337, 2338, 2344, 2345, 2347, 2351, 2352, 2353, 2355, - 2356, 2364, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399, 2465, - 2466, 2479, 2492, 2494, 2503, 2507, 2508, 2519, 2524, 2525, 2527, - 2582, 2583, 2588, 2603, 2610, 2611, 2614, 2616, 2620, 2649, 2650, - 2651, 2654, 2849, 2850, 2876, 2878, 2887, 2888, 2891, 2892, 2902, - 2903, 2908, 2909, 2962, 2964, 3006, 3014, 3015, 3018, 3019, 3020, - 3031, 3142, 3144, 3158, 3263, 3264, 3266, 3270, 3271, 3272, 3274, - 3275, 3285, 3286, 3390, 3398, 3399, 3402, 3403, 3404, 3415, 3530, - 3535, 3545, 3546, 3548, 3549, 3550, 3551, 3904, 3906, 3907, 3916, - 3917, 3921, 3922, 3926, 3927, 3931, 3932, 3945, 3953, 3954, 3955, - 3956, 3957, 3958, 3960, 3968, 3969, 3984, 3986, 3987, 3996, 3997, - 4001, 4002, 4006, 4007, 4011, 4012, 4018, 4019, 4021, 4023, 4025, - 4133, 4134, 4142, 6917, 6918, 6919, 6920, 6921, 6922, 6923, 6924, - 6925, 6926, 6929, 6930, 6965, 6970, 6971, 6972, 6973, 6974, 6975, - 6976, 6977, 6978, 6979, 7680, 7681, 7682, 7683, 7684, 7685, 7686, - 7687, 7688, 7689, 7690, 7691, 7692, 7693, 7694, 7695, 7696, 7697, - 7698, 7699, 7700, 7701, 7702, 7703, 7704, 7705, 7706, 7707, 7708, - 7709, 7710, 7711, 7712, 7713, 7714, 7715, 7716, 7717, 7718, 7719, - 7720, 7721, 7722, 7723, 7724, 7725, 7726, 7727, 7728, 7729, 7730, - 7731, 7732, 7733, 7734, 7735, 7736, 7737, 7738, 7739, 7740, 7741, - 7742, 7743, 7744, 7745, 7746, 7747, 7748, 7749, 7750, 7751, 7752, - 7753, 7754, 7755, 7756, 7757, 7758, 7759, 7760, 7761, 7762, 7763, - 7764, 7765, 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, - 7775, 7776, 7777, 7778, 7779, 7780, 7781, 7782, 7783, 7784, 7785, - 7786, 7787, 7788, 7789, 7790, 7791, 7792, 7793, 7794, 7795, 7796, - 7797, 7798, 7799, 7800, 7801, 7802, 7803, 7804, 7805, 7806, 7807, - 7808, 7809, 7810, 7811, 7812, 7813, 7814, 7815, 7816, 7817, 7818, - 7819, 7820, 7821, 7822, 7823, 7824, 7825, 7826, 7827, 7828, 7829, - 7830, 7831, 7832, 7833, 7835, 7840, 7841, 7842, 7843, 7844, 7845, - 7846, 7847, 7848, 7849, 7850, 7851, 7852, 7853, 7854, 7855, 7856, - 7857, 7858, 7859, 7860, 7861, 7862, 7863, 7864, 7865, 7866, 7867, - 7868, 7869, 7870, 7871, 7872, 7873, 7874, 7875, 7876, 7877, 7878, - 7879, 7880, 7881, 7882, 7883, 7884, 7885, 7886, 7887, 7888, 7889, - 7890, 7891, 7892, 7893, 7894, 7895, 7896, 7897, 7898, 7899, 7900, - 7901, 7902, 7903, 7904, 7905, 7906, 7907, 7908, 7909, 7910, 7911, - 7912, 7913, 7914, 7915, 7916, 7917, 7918, 7919, 7920, 7921, 7922, - 7923, 7924, 7925, 7926, 7927, 7928, 7929, 7936, 7937, 7938, 7939, - 7940, 7941, 7942, 7943, 7944, 7945, 7946, 7947, 7948, 7949, 7950, - 7951, 7952, 7953, 7954, 7955, 7956, 7957, 7960, 7961, 7962, 7963, - 7964, 7965, 7968, 7969, 7970, 7971, 7972, 7973, 7974, 7975, 7976, - 7977, 7978, 7979, 7980, 7981, 7982, 7983, 7984, 7985, 7986, 7987, - 7988, 7989, 7990, 7991, 7992, 7993, 7994, 7995, 7996, 7997, 7998, - 7999, 8000, 8001, 8002, 8003, 8004, 8005, 8008, 8009, 8010, 8011, - 8012, 8013, 8016, 8017, 8018, 8019, 8020, 8021, 8022, 8023, 8025, - 8027, 8029, 8031, 8032, 8033, 8034, 8035, 8036, 8037, 8038, 8039, - 8040, 8041, 8042, 8043, 8044, 8045, 8046, 8047, 8048, 8049, 8050, - 8051, 8052, 8053, 8054, 8055, 8056, 8057, 8058, 8059, 8060, 8061, - 8064, 8065, 8066, 8067, 8068, 8069, 8070, 8071, 8072, 8073, 8074, - 8075, 8076, 8077, 8078, 8079, 8080, 8081, 8082, 8083, 8084, 8085, - 8086, 8087, 8088, 8089, 8090, 8091, 8092, 8093, 8094, 8095, 8096, - 8097, 8098, 8099, 8100, 8101, 8102, 8103, 8104, 8105, 8106, 8107, - 8108, 8109, 8110, 8111, 8112, 8113, 8114, 8115, 8116, 8118, 8119, - 8120, 8121, 8122, 8123, 8124, 8126, 8127, 8129, 8130, 8131, 8132, - 8134, 8135, 8136, 8137, 8138, 8139, 8140, 8141, 8142, 8143, 8144, - 8145, 8146, 8147, 8150, 8151, 8152, 8153, 8154, 8155, 8157, 8158, - 8159, 8160, 8161, 8162, 8163, 8164, 8165, 8166, 8167, 8168, 8169, - 8170, 8171, 8172, 8173, 8174, 8175, 8178, 8179, 8180, 8182, 8183, - 8184, 8185, 8186, 8187, 8188, 8189, 8190, 8192, 8193, 8194, 8195, - 8486, 8490, 8491, 8592, 8594, 8596, 8602, 8603, 8622, 8653, 8654, - 8655, 8656, 8658, 8660, 8707, 8708, 8712, 8713, 8715, 8716, 8739, - 8740, 8741, 8742, 8764, 8769, 8771, 8772, 8773, 8775, 8776, 8777, - 8781, 8800, 8801, 8802, 8804, 8805, 8813, 8814, 8815, 8816, 8817, - 8818, 8819, 8820, 8821, 8822, 8823, 8824, 8825, 8826, 8827, 8828, - 8829, 8832, 8833, 8834, 8835, 8836, 8837, 8838, 8839, 8840, 8841, - 8849, 8850, 8866, 8872, 8873, 8875, 8876, 8877, 8878, 8879, 8882, - 8883, 8884, 8885, 8928, 8929, 8930, 8931, 8938, 8939, 8940, 8941, - 9001, 9002, 10972, 10973, 12296, 12297, 12358, 12363, 12364, 12365, - 12366, 12367, 12368, 12369, 12370, 12371, 12372, 12373, 12374, 12375, - 12376, 12377, 12378, 12379, 12380, 12381, 12382, 12383, 12384, 12385, - 12386, 12388, 12389, 12390, 12391, 12392, 12393, 12399, 12400, 12401, - 12402, 12403, 12404, 12405, 12406, 12407, 12408, 12409, 12410, 12411, - 12412, 12413, 12436, 12441, 12442, 12445, 12446, 12454, 12459, 12460, - 12461, 12462, 12463, 12464, 12465, 12466, 12467, 12468, 12469, 12470, - 12471, 12472, 12473, 12474, 12475, 12476, 12477, 12478, 12479, 12480, - 12481, 12482, 12484, 12485, 12486, 12487, 12488, 12489, 12495, 12496, - 12497, 12498, 12499, 12500, 12501, 12502, 12503, 12504, 12505, 12506, - 12507, 12508, 12509, 12527, 12528, 12529, 12530, 12532, 12535, 12536, - 12537, 12538, 12541, 12542, 13470, 13497, 13499, 13535, 13589, 14062, - 14076, 14209, 14383, 14434, 14460, 14535, 14563, 14620, 14650, 14894, - 14956, 15076, 15112, 15129, 15177, 15261, 15384, 15438, 15667, 15766, - 16044, 16056, 16155, 16380, 16392, 16408, 16441, 16454, 16534, 16611, - 16687, 16898, 16935, 17056, 17153, 17204, 17241, 17365, 17369, 17419, - 17515, 17707, 17757, 17761, 17771, 17879, 17913, 17973, 18110, 18119, - 18837, 18918, 19054, 19062, 19122, 19251, 19406, 19662, 19693, 19704, - 19798, 19981, 20006, 20018, 20024, 20025, 20029, 20033, 20098, 20102, - 20142, 20160, 20172, 20196, 20320, 20352, 20358, 20363, 20398, 20411, - 20415, 20482, 20523, 20602, 20633, 20687, 20698, 20711, 20800, 20805, - 20813, 20820, 20836, 20839, 20840, 20841, 20845, 20855, 20864, 20877, - 20882, 20885, 20887, 20900, 20908, 20917, 20919, 20937, 20940, 20956, - 20958, 20981, 20995, 20999, 21015, 21033, 21050, 21051, 21062, 21106, - 21111, 21129, 21147, 21155, 21171, 21191, 21193, 21202, 21214, 21220, - 21237, 21242, 21253, 21254, 21271, 21311, 21321, 21329, 21338, 21363, - 21365, 21373, 21375, 21443, 21450, 21471, 21477, 21483, 21489, 21510, - 21519, 21533, 21560, 21570, 21576, 21608, 21662, 21666, 21693, 21750, - 21776, 21843, 21845, 21859, 21892, 21895, 21913, 21917, 21931, 21939, - 21952, 21954, 21986, 22022, 22097, 22120, 22132, 22265, 22294, 22295, - 22411, 22478, 22516, 22541, 22577, 22578, 22592, 22618, 22622, 22696, - 22700, 22707, 22744, 22751, 22766, 22770, 22775, 22790, 22810, 22818, - 22852, 22856, 22865, 22868, 22882, 22899, 23000, 23020, 23067, 23079, - 23138, 23142, 23221, 23304, 23336, 23358, 23429, 23491, 23512, 23527, - 23534, 23539, 23551, 23558, 23586, 23615, 23648, 23650, 23652, 23653, - 23662, 23693, 23744, 23833, 23875, 23888, 23915, 23918, 23932, 23986, - 23994, 24033, 24034, 24061, 24104, 24125, 24169, 24180, 24230, 24240, - 24243, 24246, 24265, 24266, 24274, 24275, 24281, 24300, 24318, 24324, - 24354, 24403, 24418, 24425, 24427, 24459, 24474, 24489, 24493, 24525, - 24535, 24565, 24569, 24594, 24604, 24693, 24705, 24724, 24775, 24792, - 24801, 24840, 24900, 24904, 24908, 24910, 24928, 24936, 24954, 24974, - 24976, 24996, 25007, 25010, 25054, 25074, 25078, 25088, 25104, 25115, - 25134, 25140, 25181, 25265, 25289, 25295, 25299, 25300, 25340, 25342, - 25405, 25424, 25448, 25467, 25475, 25504, 25513, 25540, 25541, 25572, - 25628, 25634, 25682, 25705, 25719, 25726, 25754, 25757, 25796, 25935, - 25942, 25964, 25976, 26009, 26053, 26082, 26083, 26131, 26185, 26228, - 26248, 26257, 26268, 26292, 26310, 26356, 26360, 26368, 26391, 26395, - 26401, 26446, 26451, 26454, 26462, 26491, 26501, 26519, 26611, 26618, - 26647, 26655, 26706, 26753, 26757, 26766, 26792, 26900, 26946, 27043, - 27114, 27138, 27155, 27304, 27347, 27355, 27396, 27425, 27476, 27506, - 27511, 27513, 27551, 27566, 27578, 27579, 27726, 27751, 27784, 27839, - 27852, 27853, 27877, 27926, 27931, 27934, 27956, 27966, 27969, 28009, - 28010, 28023, 28024, 28037, 28107, 28122, 28138, 28153, 28186, 28207, - 28270, 28316, 28346, 28359, 28363, 28369, 28379, 28431, 28450, 28451, - 28526, 28614, 28651, 28670, 28699, 28702, 28729, 28746, 28784, 28791, - 28797, 28825, 28845, 28872, 28889, 28997, 29001, 29038, 29084, 29134, - 29136, 29200, 29211, 29224, 29227, 29237, 29264, 29282, 29312, 29333, - 29359, 29376, 29436, 29482, 29557, 29562, 29575, 29579, 29605, 29618, - 29662, 29702, 29705, 29730, 29767, 29788, 29801, 29809, 29829, 29833, - 29848, 29898, 29958, 29988, 30011, 30014, 30041, 30053, 30064, 30178, - 30224, 30237, 30239, 30274, 30313, 30410, 30427, 30439, 30452, 30465, - 30494, 30495, 30528, 30538, 30603, 30631, 30798, 30827, 30860, 30865, - 30922, 30924, 30971, 31018, 31036, 31038, 31048, 31049, 31056, 31062, - 31069, 31070, 31077, 31103, 31117, 31118, 31119, 31150, 31178, 31211, - 31260, 31296, 31306, 31311, 31361, 31409, 31435, 31470, 31520, 31680, - 31686, 31689, 31806, 31840, 31867, 31890, 31934, 31954, 31958, 31971, - 31975, 31976, 32000, 32016, 32034, 32047, 32091, 32099, 32160, 32190, - 32199, 32244, 32258, 32265, 32311, 32321, 32325, 32574, 32626, 32633, - 32634, 32645, 32661, 32666, 32701, 32762, 32769, 32773, 32838, 32864, - 32879, 32880, 32894, 32907, 32941, 32946, 33027, 33086, 33240, 33256, - 33261, 33281, 33284, 33304, 33391, 33401, 33419, 33425, 33437, 33457, - 33459, 33469, 33509, 33510, 33565, 33571, 33590, 33618, 33619, 33635, - 33709, 33725, 33737, 33738, 33740, 33756, 33767, 33775, 33777, 33853, - 33865, 33879, 34030, 34033, 34035, 34044, 34070, 34148, 34253, 34298, - 34310, 34322, 34349, 34367, 34384, 34396, 34407, 34409, 34440, 34473, - 34530, 34574, 34600, 34667, 34681, 34694, 34746, 34785, 34817, 34847, - 34892, 34912, 34915, 35010, 35023, 35031, 35038, 35041, 35064, 35066, - 35088, 35137, 35172, 35206, 35211, 35222, 35488, 35498, 35519, 35531, - 35538, 35542, 35565, 35576, 35582, 35585, 35641, 35672, 35712, 35722, - 35912, 35925, 36011, 36033, 36034, 36040, 36051, 36104, 36123, 36215, - 36284, 36299, 36335, 36336, 36554, 36564, 36646, 36650, 36664, 36667, - 36706, 36766, 36784, 36790, 36899, 36920, 36978, 36988, 37007, 37012, - 37070, 37086, 37105, 37117, 37137, 37147, 37226, 37273, 37300, 37324, - 37327, 37329, 37428, 37432, 37494, 37500, 37591, 37592, 37636, 37706, - 37881, 37909, 38283, 38317, 38327, 38446, 38475, 38477, 38517, 38520, - 38524, 38534, 38563, 38583, 38584, 38595, 38626, 38627, 38646, 38647, - 38691, 38706, 38728, 38742, 38875, 38880, 38911, 38923, 38936, 38953, - 38971, 39006, 39138, 39151, 39164, 39208, 39209, 39335, 39362, 39409, - 39422, 39530, 39698, 39791, 40000, 40023, 40189, 40295, 40372, 40442, - 40478, 40575, 40599, 40607, 40635, 40654, 40697, 40702, 40709, 40719, - 40726, 40763, 40771, 40845, 40846, 40860, 63744, 63745, 63746, 63747, - 63748, 63749, 63750, 63751, 63752, 63753, 63754, 63755, 63756, 63757, - 63758, 63759, 63760, 63761, 63762, 63763, 63764, 63765, 63766, 63767, - 63768, 63769, 63770, 63771, 63772, 63773, 63774, 63775, 63776, 63777, - 63778, 63779, 63780, 63781, 63782, 63783, 63784, 63785, 63786, 63787, - 63788, 63789, 63790, 63791, 63792, 63793, 63794, 63795, 63796, 63797, - 63798, 63799, 63800, 63801, 63802, 63803, 63804, 63805, 63806, 63807, - 63808, 63809, 63810, 63811, 63812, 63813, 63814, 63815, 63816, 63817, - 63818, 63819, 63820, 63821, 63822, 63823, 63824, 63825, 63826, 63827, - 63828, 63829, 63830, 63831, 63832, 63833, 63834, 63835, 63836, 63837, - 63838, 63839, 63840, 63841, 63842, 63843, 63844, 63845, 63846, 63847, - 63848, 63849, 63850, 63851, 63852, 63853, 63854, 63855, 63856, 63857, - 63858, 63859, 63860, 63861, 63862, 63863, 63864, 63865, 63866, 63867, - 63868, 63869, 63870, 63871, 63872, 63873, 63874, 63875, 63876, 63877, - 63878, 63879, 63880, 63881, 63882, 63883, 63884, 63885, 63886, 63887, - 63888, 63889, 63890, 63891, 63892, 63893, 63894, 63895, 63896, 63897, - 63898, 63899, 63900, 63901, 63902, 63903, 63904, 63905, 63906, 63907, - 63908, 63909, 63910, 63911, 63912, 63913, 63914, 63915, 63916, 63917, - 63918, 63919, 63920, 63921, 63922, 63923, 63924, 63925, 63926, 63927, - 63928, 63929, 63930, 63931, 63932, 63933, 63934, 63935, 63936, 63937, - 63938, 63939, 63940, 63941, 63942, 63943, 63944, 63945, 63946, 63947, - 63948, 63949, 63950, 63951, 63952, 63953, 63954, 63955, 63956, 63957, - 63958, 63959, 63960, 63961, 63962, 63963, 63964, 63965, 63966, 63967, - 63968, 63969, 63970, 63971, 63972, 63973, 63974, 63975, 63976, 63977, - 63978, 63979, 63980, 63981, 63982, 63983, 63984, 63985, 63986, 63987, - 63988, 63989, 63990, 63991, 63992, 63993, 63994, 63995, 63996, 63997, - 63998, 63999, 64000, 64001, 64002, 64003, 64004, 64005, 64006, 64007, - 64008, 64009, 64010, 64011, 64012, 64013, 64016, 64018, 64021, 64022, - 64023, 64024, 64025, 64026, 64027, 64028, 64029, 64030, 64032, 64034, - 64037, 64038, 64042, 64043, 64044, 64045, 64046, 64047, 64048, 64049, - 64050, 64051, 64052, 64053, 64054, 64055, 64056, 64057, 64058, 64059, - 64060, 64061, 64062, 64063, 64064, 64065, 64066, 64067, 64068, 64069, - 64070, 64071, 64072, 64073, 64074, 64075, 64076, 64077, 64078, 64079, - 64080, 64081, 64082, 64083, 64084, 64085, 64086, 64087, 64088, 64089, - 64090, 64091, 64092, 64093, 64094, 64095, 64096, 64097, 64098, 64099, - 64100, 64101, 64102, 64103, 64104, 64105, 64106, 64107, 64108, 64109, - 64112, 64113, 64114, 64115, 64116, 64117, 64118, 64119, 64120, 64121, - 64122, 64123, 64124, 64125, 64126, 64127, 64128, 64129, 64130, 64131, - 64132, 64133, 64134, 64135, 64136, 64137, 64138, 64139, 64140, 64141, - 64142, 64143, 64144, 64145, 64146, 64147, 64148, 64149, 64150, 64151, - 64152, 64153, 64154, 64155, 64156, 64157, 64158, 64159, 64160, 64161, - 64162, 64163, 64164, 64165, 64166, 64167, 64168, 64169, 64170, 64171, - 64172, 64173, 64174, 64175, 64176, 64177, 64178, 64179, 64180, 64181, - 64182, 64183, 64184, 64185, 64186, 64187, 64188, 64189, 64190, 64191, - 64192, 64193, 64194, 64195, 64196, 64197, 64198, 64199, 64200, 64201, - 64202, 64203, 64204, 64205, 64206, 64207, 64208, 64209, 64210, 64211, - 64212, 64213, 64214, 64215, 64216, 64217, 64285, 64287, 64298, 64299, - 64300, 64301, 64302, 64303, 64304, 64305, 64306, 64307, 64308, 64309, - 64310, 64312, 64313, 64314, 64315, 64316, 64318, 64320, 64321, 64323, - 64324, 64326, 64327, 64328, 64329, 64330, 64331, 64332, 64333, 64334, - 69785, 69786, 69787, 69788, 69797, 69803, 69818, 69927, 69934, 69935, - 69937, 69938, 119127, 119128, 119134, 119135, 119136, 119137, 119138, - 119139, 119140, 119141, 119150, 119151, 119152, 119153, 119154, - 119225, 119226, 119227, 119228, 119229, 119230, 119231, 119232, - 131362, 132380, 132389, 132427, 132666, 133124, 133342, 133676, - 133987, 136420, 136872, 136938, 137672, 138008, 138507, 138724, - 138726, 139651, 139679, 140081, 141012, 141380, 141386, 142092, - 142321, 143370, 144056, 144223, 144275, 144284, 144323, 144341, - 144493, 145059, 145575, 146061, 146170, 146620, 146718, 147153, - 147294, 147342, 148067, 148206, 148395, 149000, 149301, 149524, - 150582, 150674, 151457, 151480, 151620, 151794, 151795, 151833, - 151859, 152137, 152605, 153126, 153242, 153285, 153980, 154279, - 154539, 154752, 154832, 155526, 156122, 156200, 156231, 156377, - 156478, 156890, 156963, 157096, 157607, 157621, 158524, 158774, - 158933, 159083, 159532, 159665, 159954, 160714, 161383, 161966, - 162150, 162984, 163539, 163631, 165330, 165357, 165678, 166906, - 167287, 168261, 168415, 168474, 168970, 169110, 169398, 170800, - 172238, 172293, 172558, 172689, 172946, 173568, 194560, 194561, - 194562, 194563, 194564, 194565, 194566, 194567, 194568, 194569, - 194570, 194571, 194572, 194573, 194574, 194575, 194576, 194577, - 194578, 194579, 194580, 194581, 194582, 194583, 194584, 194585, - 194586, 194587, 194588, 194589, 194590, 194591, 194592, 194593, - 194594, 194595, 194596, 194597, 194598, 194599, 194600, 194601, - 194602, 194603, 194604, 194605, 194606, 194607, 194608, 194609, - 194610, 194611, 194612, 194613, 194614, 194615, 194616, 194617, - 194618, 194619, 194620, 194621, 194622, 194623, 194624, 194625, - 194626, 194627, 194628, 194629, 194630, 194631, 194632, 194633, - 194634, 194635, 194636, 194637, 194638, 194639, 194640, 194641, - 194642, 194643, 194644, 194645, 194646, 194647, 194648, 194649, - 194650, 194651, 194652, 194653, 194654, 194655, 194656, 194657, - 194658, 194659, 194660, 194661, 194662, 194663, 194664, 194665, - 194666, 194667, 194668, 194669, 194670, 194671, 194672, 194673, - 194674, 194675, 194676, 194677, 194678, 194679, 194680, 194681, - 194682, 194683, 194684, 194685, 194686, 194687, 194688, 194689, - 194690, 194691, 194692, 194693, 194694, 194695, 194696, 194697, - 194698, 194699, 194700, 194701, 194702, 194703, 194704, 194705, - 194706, 194707, 194708, 194709, 194710, 194711, 194712, 194713, - 194714, 194715, 194716, 194717, 194718, 194719, 194720, 194721, - 194722, 194723, 194724, 194725, 194726, 194727, 194728, 194729, - 194730, 194731, 194732, 194733, 194734, 194735, 194736, 194737, - 194738, 194739, 194740, 194741, 194742, 194743, 194744, 194745, - 194746, 194747, 194748, 194749, 194750, 194751, 194752, 194753, - 194754, 194755, 194756, 194757, 194758, 194759, 194760, 194761, - 194762, 194763, 194764, 194765, 194766, 194767, 194768, 194769, - 194770, 194771, 194772, 194773, 194774, 194775, 194776, 194777, - 194778, 194779, 194780, 194781, 194782, 194783, 194784, 194785, - 194786, 194787, 194788, 194789, 194790, 194791, 194792, 194793, - 194794, 194795, 194796, 194797, 194798, 194799, 194800, 194801, - 194802, 194803, 194804, 194805, 194806, 194807, 194808, 194809, - 194810, 194811, 194812, 194813, 194814, 194815, 194816, 194817, - 194818, 194819, 194820, 194821, 194822, 194823, 194824, 194825, - 194826, 194827, 194828, 194829, 194830, 194831, 194832, 194833, - 194834, 194835, 194836, 194837, 194838, 194839, 194840, 194841, - 194842, 194843, 194844, 194845, 194846, 194847, 194848, 194849, - 194850, 194851, 194852, 194853, 194854, 194855, 194856, 194857, - 194858, 194859, 194860, 194861, 194862, 194863, 194864, 194865, - 194866, 194867, 194868, 194869, 194870, 194871, 194872, 194873, - 194874, 194875, 194876, 194877, 194878, 194879, 194880, 194881, - 194882, 194883, 194884, 194885, 194886, 194887, 194888, 194889, - 194890, 194891, 194892, 194893, 194894, 194895, 194896, 194897, - 194898, 194899, 194900, 194901, 194902, 194903, 194904, 194905, - 194906, 194907, 194908, 194909, 194910, 194911, 194912, 194913, - 194914, 194915, 194916, 194917, 194918, 194919, 194920, 194921, - 194922, 194923, 194924, 194925, 194926, 194927, 194928, 194929, - 194930, 194931, 194932, 194933, 194934, 194935, 194936, 194937, - 194938, 194939, 194940, 194941, 194942, 194943, 194944, 194945, - 194946, 194947, 194948, 194949, 194950, 194951, 194952, 194953, - 194954, 194955, 194956, 194957, 194958, 194959, 194960, 194961, - 194962, 194963, 194964, 194965, 194966, 194967, 194968, 194969, - 194970, 194971, 194972, 194973, 194974, 194975, 194976, 194977, - 194978, 194979, 194980, 194981, 194982, 194983, 194984, 194985, - 194986, 194987, 194988, 194989, 194990, 194991, 194992, 194993, - 194994, 194995, 194996, 194997, 194998, 194999, 195000, 195001, - 195002, 195003, 195004, 195005, 195006, 195007, 195008, 195009, - 195010, 195011, 195012, 195013, 195014, 195015, 195016, 195017, - 195018, 195019, 195020, 195021, 195022, 195023, 195024, 195025, - 195026, 195027, 195028, 195029, 195030, 195031, 195032, 195033, - 195034, 195035, 195036, 195037, 195038, 195039, 195040, 195041, - 195042, 195043, 195044, 195045, 195046, 195047, 195048, 195049, - 195050, 195051, 195052, 195053, 195054, 195055, 195056, 195057, - 195058, 195059, 195060, 195061, 195062, 195063, 195064, 195065, - 195066, 195067, 195068, 195069, 195070, 195071, 195072, 195073, - 195074, 195075, 195076, 195077, 195078, 195079, 195080, 195081, - 195082, 195083, 195084, 195085, 195086, 195087, 195088, 195089, - 195090, 195091, 195092, 195093, 195094, 195095, 195096, 195097, - 195098, 195099, 195100, 195101 -}; + 0, 59, 60, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 168, 180, 183, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 209, 210, 211, 212, 213, 214, 216, 217, 218, + 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 241, 242, 243, 244, 245, 246, 248, 249, 250, + 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 308, 309, 310, 311, 313, 314, 315, + 316, 317, 318, 323, 324, 325, 326, 327, 328, 332, 333, 334, 335, 336, + 337, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 416, 417, 431, 432, 439, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 478, 479, 480, 481, 482, 483, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 500, 501, 504, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 542, 543, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 561, 562, 563, 658, 697, 768, 769, 770, + 771, 772, 774, 775, 776, 777, 778, 779, 780, 783, 785, 787, 788, 795, + 803, 804, 805, 806, 807, 808, 813, 814, 816, 817, 824, 832, 833, 834, + 835, 836, 837, 884, 894, 901, 902, 903, 904, 905, 906, 908, 910, 911, + 912, 913, 917, 919, 921, 927, 929, 933, 937, 938, 939, 940, 941, 942, + 943, 944, 945, 949, 951, 953, 959, 961, 965, 969, 970, 971, 972, 973, + 974, 978, 979, 980, 1024, 1025, 1027, 1030, 1031, 1036, 1037, 1038, 1040, 1043, + 1045, 1046, 1047, 1048, 1049, 1050, 1054, 1059, 1063, 1067, 1069, 1072, 1075, 1077, + 1078, 1079, 1080, 1081, 1082, 1086, 1091, 1095, 1099, 1101, 1104, 1105, 1107, 1110, + 1111, 1116, 1117, 1118, 1140, 1141, 1142, 1143, 1217, 1218, 1232, 1233, 1234, 1235, + 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1250, 1251, 1252, 1253, + 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, + 1268, 1269, 1272, 1273, 1460, 1463, 1464, 1465, 1468, 1471, 1473, 1474, 1488, 1489, + 1490, 1491, 1492, 1493, 1494, 1496, 1497, 1498, 1499, 1500, 1502, 1504, 1505, 1507, + 1508, 1510, 1511, 1512, 1513, 1514, 1522, 1570, 1571, 1572, 1573, 1574, 1575, 1608, + 1610, 1619, 1620, 1621, 1728, 1729, 1730, 1746, 1747, 1749, 2325, 2326, 2327, 2332, + 2337, 2338, 2344, 2345, 2347, 2351, 2352, 2353, 2355, 2356, 2364, 2392, 2393, 2394, + 2395, 2396, 2397, 2398, 2399, 2465, 2466, 2479, 2492, 2494, 2503, 2507, 2508, 2519, + 2524, 2525, 2527, 2582, 2583, 2588, 2603, 2610, 2611, 2614, 2616, 2620, 2649, 2650, + 2651, 2654, 2849, 2850, 2876, 2878, 2887, 2888, 2891, 2892, 2902, 2903, 2908, 2909, + 2962, 2964, 3006, 3014, 3015, 3018, 3019, 3020, 3031, 3142, 3144, 3158, 3263, 3264, + 3266, 3270, 3271, 3272, 3274, 3275, 3285, 3286, 3390, 3398, 3399, 3402, 3403, 3404, + 3415, 3530, 3535, 3545, 3546, 3548, 3549, 3550, 3551, 3904, 3906, 3907, 3916, 3917, + 3921, 3922, 3926, 3927, 3931, 3932, 3945, 3953, 3954, 3955, 3956, 3957, 3958, 3960, + 3968, 3969, 3984, 3986, 3987, 3996, 3997, 4001, 4002, 4006, 4007, 4011, 4012, 4018, + 4019, 4021, 4023, 4025, 4133, 4134, 4142, 6917, 6918, 6919, 6920, 6921, 6922, 6923, + 6924, 6925, 6926, 6929, 6930, 6965, 6970, 6971, 6972, 6973, 6974, 6975, 6976, 6977, + 6978, 6979, 7680, 7681, 7682, 7683, 7684, 7685, 7686, 7687, 7688, 7689, 7690, 7691, + 7692, 7693, 7694, 7695, 7696, 7697, 7698, 7699, 7700, 7701, 7702, 7703, 7704, 7705, + 7706, 7707, 7708, 7709, 7710, 7711, 7712, 7713, 7714, 7715, 7716, 7717, 7718, 7719, + 7720, 7721, 7722, 7723, 7724, 7725, 7726, 7727, 7728, 7729, 7730, 7731, 7732, 7733, + 7734, 7735, 7736, 7737, 7738, 7739, 7740, 7741, 7742, 7743, 7744, 7745, 7746, 7747, + 7748, 7749, 7750, 7751, 7752, 7753, 7754, 7755, 7756, 7757, 7758, 7759, 7760, 7761, + 7762, 7763, 7764, 7765, 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 7775, + 7776, 7777, 7778, 7779, 7780, 7781, 7782, 7783, 7784, 7785, 7786, 7787, 7788, 7789, + 7790, 7791, 7792, 7793, 7794, 7795, 7796, 7797, 7798, 7799, 7800, 7801, 7802, 7803, + 7804, 7805, 7806, 7807, 7808, 7809, 7810, 7811, 7812, 7813, 7814, 7815, 7816, 7817, + 7818, 7819, 7820, 7821, 7822, 7823, 7824, 7825, 7826, 7827, 7828, 7829, 7830, 7831, + 7832, 7833, 7835, 7840, 7841, 7842, 7843, 7844, 7845, 7846, 7847, 7848, 7849, 7850, + 7851, 7852, 7853, 7854, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7863, 7864, + 7865, 7866, 7867, 7868, 7869, 7870, 7871, 7872, 7873, 7874, 7875, 7876, 7877, 7878, + 7879, 7880, 7881, 7882, 7883, 7884, 7885, 7886, 7887, 7888, 7889, 7890, 7891, 7892, + 7893, 7894, 7895, 7896, 7897, 7898, 7899, 7900, 7901, 7902, 7903, 7904, 7905, 7906, + 7907, 7908, 7909, 7910, 7911, 7912, 7913, 7914, 7915, 7916, 7917, 7918, 7919, 7920, + 7921, 7922, 7923, 7924, 7925, 7926, 7927, 7928, 7929, 7936, 7937, 7938, 7939, 7940, + 7941, 7942, 7943, 7944, 7945, 7946, 7947, 7948, 7949, 7950, 7951, 7952, 7953, 7954, + 7955, 7956, 7957, 7960, 7961, 7962, 7963, 7964, 7965, 7968, 7969, 7970, 7971, 7972, + 7973, 7974, 7975, 7976, 7977, 7978, 7979, 7980, 7981, 7982, 7983, 7984, 7985, 7986, + 7987, 7988, 7989, 7990, 7991, 7992, 7993, 7994, 7995, 7996, 7997, 7998, 7999, 8000, + 8001, 8002, 8003, 8004, 8005, 8008, 8009, 8010, 8011, 8012, 8013, 8016, 8017, 8018, + 8019, 8020, 8021, 8022, 8023, 8025, 8027, 8029, 8031, 8032, 8033, 8034, 8035, 8036, + 8037, 8038, 8039, 8040, 8041, 8042, 8043, 8044, 8045, 8046, 8047, 8048, 8049, 8050, + 8051, 8052, 8053, 8054, 8055, 8056, 8057, 8058, 8059, 8060, 8061, 8064, 8065, 8066, + 8067, 8068, 8069, 8070, 8071, 8072, 8073, 8074, 8075, 8076, 8077, 8078, 8079, 8080, + 8081, 8082, 8083, 8084, 8085, 8086, 8087, 8088, 8089, 8090, 8091, 8092, 8093, 8094, + 8095, 8096, 8097, 8098, 8099, 8100, 8101, 8102, 8103, 8104, 8105, 8106, 8107, 8108, + 8109, 8110, 8111, 8112, 8113, 8114, 8115, 8116, 8118, 8119, 8120, 8121, 8122, 8123, + 8124, 8126, 8127, 8129, 8130, 8131, 8132, 8134, 8135, 8136, 8137, 8138, 8139, 8140, + 8141, 8142, 8143, 8144, 8145, 8146, 8147, 8150, 8151, 8152, 8153, 8154, 8155, 8157, + 8158, 8159, 8160, 8161, 8162, 8163, 8164, 8165, 8166, 8167, 8168, 8169, 8170, 8171, + 8172, 8173, 8174, 8175, 8178, 8179, 8180, 8182, 8183, 8184, 8185, 8186, 8187, 8188, + 8189, 8190, 8192, 8193, 8194, 8195, 8486, 8490, 8491, 8592, 8594, 8596, 8602, 8603, + 8622, 8653, 8654, 8655, 8656, 8658, 8660, 8707, 8708, 8712, 8713, 8715, 8716, 8739, + 8740, 8741, 8742, 8764, 8769, 8771, 8772, 8773, 8775, 8776, 8777, 8781, 8800, 8801, + 8802, 8804, 8805, 8813, 8814, 8815, 8816, 8817, 8818, 8819, 8820, 8821, 8822, 8823, + 8824, 8825, 8826, 8827, 8828, 8829, 8832, 8833, 8834, 8835, 8836, 8837, 8838, 8839, + 8840, 8841, 8849, 8850, 8866, 8872, 8873, 8875, 8876, 8877, 8878, 8879, 8882, 8883, + 8884, 8885, 8928, 8929, 8930, 8931, 8938, 8939, 8940, 8941, 9001, 9002, 10972, 10973, + 12296, 12297, 12358, 12363, 12364, 12365, 12366, 12367, 12368, 12369, 12370, 12371, 12372, 12373, + 12374, 12375, 12376, 12377, 12378, 12379, 12380, 12381, 12382, 12383, 12384, 12385, 12386, 12388, + 12389, 12390, 12391, 12392, 12393, 12399, 12400, 12401, 12402, 12403, 12404, 12405, 12406, 12407, + 12408, 12409, 12410, 12411, 12412, 12413, 12436, 12441, 12442, 12445, 12446, 12454, 12459, 12460, + 12461, 12462, 12463, 12464, 12465, 12466, 12467, 12468, 12469, 12470, 12471, 12472, 12473, 12474, + 12475, 12476, 12477, 12478, 12479, 12480, 12481, 12482, 12484, 12485, 12486, 12487, 12488, 12489, + 12495, 12496, 12497, 12498, 12499, 12500, 12501, 12502, 12503, 12504, 12505, 12506, 12507, 12508, + 12509, 12527, 12528, 12529, 12530, 12532, 12535, 12536, 12537, 12538, 12541, 12542, 13470, 13497, + 13499, 13535, 13589, 14062, 14076, 14209, 14383, 14434, 14460, 14535, 14563, 14620, 14650, 14894, + 14956, 15076, 15112, 15129, 15177, 15261, 15384, 15438, 15667, 15766, 16044, 16056, 16155, 16380, + 16392, 16408, 16441, 16454, 16534, 16611, 16687, 16898, 16935, 17056, 17153, 17204, 17241, 17365, + 17369, 17419, 17515, 17707, 17757, 17761, 17771, 17879, 17913, 17973, 18110, 18119, 18837, 18918, + 19054, 19062, 19122, 19251, 19406, 19662, 19693, 19704, 19798, 19981, 20006, 20018, 20024, 20025, + 20029, 20033, 20098, 20102, 20142, 20160, 20172, 20196, 20320, 20352, 20358, 20363, 20398, 20411, + 20415, 20482, 20523, 20602, 20633, 20687, 20698, 20711, 20800, 20805, 20813, 20820, 20836, 20839, + 20840, 20841, 20845, 20855, 20864, 20877, 20882, 20885, 20887, 20900, 20908, 20917, 20919, 20937, + 20940, 20956, 20958, 20981, 20995, 20999, 21015, 21033, 21050, 21051, 21062, 21106, 21111, 21129, + 21147, 21155, 21171, 21191, 21193, 21202, 21214, 21220, 21237, 21242, 21253, 21254, 21271, 21311, + 21321, 21329, 21338, 21363, 21365, 21373, 21375, 21443, 21450, 21471, 21477, 21483, 21489, 21510, + 21519, 21533, 21560, 21570, 21576, 21608, 21662, 21666, 21693, 21750, 21776, 21843, 21845, 21859, + 21892, 21895, 21913, 21917, 21931, 21939, 21952, 21954, 21986, 22022, 22097, 22120, 22132, 22265, + 22294, 22295, 22411, 22478, 22516, 22541, 22577, 22578, 22592, 22618, 22622, 22696, 22700, 22707, + 22744, 22751, 22766, 22770, 22775, 22790, 22810, 22818, 22852, 22856, 22865, 22868, 22882, 22899, + 23000, 23020, 23067, 23079, 23138, 23142, 23221, 23304, 23336, 23358, 23429, 23491, 23512, 23527, + 23534, 23539, 23551, 23558, 23586, 23615, 23648, 23650, 23652, 23653, 23662, 23693, 23744, 23833, + 23875, 23888, 23915, 23918, 23932, 23986, 23994, 24033, 24034, 24061, 24104, 24125, 24169, 24180, + 24230, 24240, 24243, 24246, 24265, 24266, 24274, 24275, 24281, 24300, 24318, 24324, 24354, 24403, + 24418, 24425, 24427, 24459, 24474, 24489, 24493, 24525, 24535, 24565, 24569, 24594, 24604, 24693, + 24705, 24724, 24775, 24792, 24801, 24840, 24900, 24904, 24908, 24910, 24928, 24936, 24954, 24974, + 24976, 24996, 25007, 25010, 25054, 25074, 25078, 25088, 25104, 25115, 25134, 25140, 25181, 25265, + 25289, 25295, 25299, 25300, 25340, 25342, 25405, 25424, 25448, 25467, 25475, 25504, 25513, 25540, + 25541, 25572, 25628, 25634, 25682, 25705, 25719, 25726, 25754, 25757, 25796, 25935, 25942, 25964, + 25976, 26009, 26053, 26082, 26083, 26131, 26185, 26228, 26248, 26257, 26268, 26292, 26310, 26356, + 26360, 26368, 26391, 26395, 26401, 26446, 26451, 26454, 26462, 26491, 26501, 26519, 26611, 26618, + 26647, 26655, 26706, 26753, 26757, 26766, 26792, 26900, 26946, 27043, 27114, 27138, 27155, 27304, + 27347, 27355, 27396, 27425, 27476, 27506, 27511, 27513, 27551, 27566, 27578, 27579, 27726, 27751, + 27784, 27839, 27852, 27853, 27877, 27926, 27931, 27934, 27956, 27966, 27969, 28009, 28010, 28023, + 28024, 28037, 28107, 28122, 28138, 28153, 28186, 28207, 28270, 28316, 28346, 28359, 28363, 28369, + 28379, 28431, 28450, 28451, 28526, 28614, 28651, 28670, 28699, 28702, 28729, 28746, 28784, 28791, + 28797, 28825, 28845, 28872, 28889, 28997, 29001, 29038, 29084, 29134, 29136, 29200, 29211, 29224, + 29227, 29237, 29264, 29282, 29312, 29333, 29359, 29376, 29436, 29482, 29557, 29562, 29575, 29579, + 29605, 29618, 29662, 29702, 29705, 29730, 29767, 29788, 29801, 29809, 29829, 29833, 29848, 29898, + 29958, 29988, 30011, 30014, 30041, 30053, 30064, 30178, 30224, 30237, 30239, 30274, 30313, 30410, + 30427, 30439, 30452, 30465, 30494, 30495, 30528, 30538, 30603, 30631, 30798, 30827, 30860, 30865, + 30922, 30924, 30971, 31018, 31036, 31038, 31048, 31049, 31056, 31062, 31069, 31070, 31077, 31103, + 31117, 31118, 31119, 31150, 31178, 31211, 31260, 31296, 31306, 31311, 31361, 31409, 31435, 31470, + 31520, 31680, 31686, 31689, 31806, 31840, 31867, 31890, 31934, 31954, 31958, 31971, 31975, 31976, + 32000, 32016, 32034, 32047, 32091, 32099, 32160, 32190, 32199, 32244, 32258, 32265, 32311, 32321, + 32325, 32574, 32626, 32633, 32634, 32645, 32661, 32666, 32701, 32762, 32769, 32773, 32838, 32864, + 32879, 32880, 32894, 32907, 32941, 32946, 33027, 33086, 33240, 33256, 33261, 33281, 33284, 33304, + 33391, 33401, 33419, 33425, 33437, 33457, 33459, 33469, 33509, 33510, 33565, 33571, 33590, 33618, + 33619, 33635, 33709, 33725, 33737, 33738, 33740, 33756, 33767, 33775, 33777, 33853, 33865, 33879, + 34030, 34033, 34035, 34044, 34070, 34148, 34253, 34298, 34310, 34322, 34349, 34367, 34384, 34396, + 34407, 34409, 34440, 34473, 34530, 34574, 34600, 34667, 34681, 34694, 34746, 34785, 34817, 34847, + 34892, 34912, 34915, 35010, 35023, 35031, 35038, 35041, 35064, 35066, 35088, 35137, 35172, 35206, + 35211, 35222, 35488, 35498, 35519, 35531, 35538, 35542, 35565, 35576, 35582, 35585, 35641, 35672, + 35712, 35722, 35912, 35925, 36011, 36033, 36034, 36040, 36051, 36104, 36123, 36215, 36284, 36299, + 36335, 36336, 36554, 36564, 36646, 36650, 36664, 36667, 36706, 36766, 36784, 36790, 36899, 36920, + 36978, 36988, 37007, 37012, 37070, 37086, 37105, 37117, 37137, 37147, 37226, 37273, 37300, 37324, + 37327, 37329, 37428, 37432, 37494, 37500, 37591, 37592, 37636, 37706, 37881, 37909, 38283, 38317, + 38327, 38446, 38475, 38477, 38517, 38520, 38524, 38534, 38563, 38583, 38584, 38595, 38626, 38627, + 38646, 38647, 38691, 38706, 38728, 38742, 38875, 38880, 38911, 38923, 38936, 38953, 38971, 39006, + 39138, 39151, 39164, 39208, 39209, 39335, 39362, 39409, 39422, 39530, 39698, 39791, 40000, 40023, + 40189, 40295, 40372, 40442, 40478, 40575, 40599, 40607, 40635, 40654, 40697, 40702, 40709, 40719, + 40726, 40763, 40771, 40845, 40846, 40860, 63744, 63745, 63746, 63747, 63748, 63749, 63750, 63751, + 63752, 63753, 63754, 63755, 63756, 63757, 63758, 63759, 63760, 63761, 63762, 63763, 63764, 63765, + 63766, 63767, 63768, 63769, 63770, 63771, 63772, 63773, 63774, 63775, 63776, 63777, 63778, 63779, + 63780, 63781, 63782, 63783, 63784, 63785, 63786, 63787, 63788, 63789, 63790, 63791, 63792, 63793, + 63794, 63795, 63796, 63797, 63798, 63799, 63800, 63801, 63802, 63803, 63804, 63805, 63806, 63807, + 63808, 63809, 63810, 63811, 63812, 63813, 63814, 63815, 63816, 63817, 63818, 63819, 63820, 63821, + 63822, 63823, 63824, 63825, 63826, 63827, 63828, 63829, 63830, 63831, 63832, 63833, 63834, 63835, + 63836, 63837, 63838, 63839, 63840, 63841, 63842, 63843, 63844, 63845, 63846, 63847, 63848, 63849, + 63850, 63851, 63852, 63853, 63854, 63855, 63856, 63857, 63858, 63859, 63860, 63861, 63862, 63863, + 63864, 63865, 63866, 63867, 63868, 63869, 63870, 63871, 63872, 63873, 63874, 63875, 63876, 63877, + 63878, 63879, 63880, 63881, 63882, 63883, 63884, 63885, 63886, 63887, 63888, 63889, 63890, 63891, + 63892, 63893, 63894, 63895, 63896, 63897, 63898, 63899, 63900, 63901, 63902, 63903, 63904, 63905, + 63906, 63907, 63908, 63909, 63910, 63911, 63912, 63913, 63914, 63915, 63916, 63917, 63918, 63919, + 63920, 63921, 63922, 63923, 63924, 63925, 63926, 63927, 63928, 63929, 63930, 63931, 63932, 63933, + 63934, 63935, 63936, 63937, 63938, 63939, 63940, 63941, 63942, 63943, 63944, 63945, 63946, 63947, + 63948, 63949, 63950, 63951, 63952, 63953, 63954, 63955, 63956, 63957, 63958, 63959, 63960, 63961, + 63962, 63963, 63964, 63965, 63966, 63967, 63968, 63969, 63970, 63971, 63972, 63973, 63974, 63975, + 63976, 63977, 63978, 63979, 63980, 63981, 63982, 63983, 63984, 63985, 63986, 63987, 63988, 63989, + 63990, 63991, 63992, 63993, 63994, 63995, 63996, 63997, 63998, 63999, 64000, 64001, 64002, 64003, + 64004, 64005, 64006, 64007, 64008, 64009, 64010, 64011, 64012, 64013, 64016, 64018, 64021, 64022, + 64023, 64024, 64025, 64026, 64027, 64028, 64029, 64030, 64032, 64034, 64037, 64038, 64042, 64043, + 64044, 64045, 64046, 64047, 64048, 64049, 64050, 64051, 64052, 64053, 64054, 64055, 64056, 64057, + 64058, 64059, 64060, 64061, 64062, 64063, 64064, 64065, 64066, 64067, 64068, 64069, 64070, 64071, + 64072, 64073, 64074, 64075, 64076, 64077, 64078, 64079, 64080, 64081, 64082, 64083, 64084, 64085, + 64086, 64087, 64088, 64089, 64090, 64091, 64092, 64093, 64094, 64095, 64096, 64097, 64098, 64099, + 64100, 64101, 64102, 64103, 64104, 64105, 64106, 64107, 64108, 64109, 64112, 64113, 64114, 64115, + 64116, 64117, 64118, 64119, 64120, 64121, 64122, 64123, 64124, 64125, 64126, 64127, 64128, 64129, + 64130, 64131, 64132, 64133, 64134, 64135, 64136, 64137, 64138, 64139, 64140, 64141, 64142, 64143, + 64144, 64145, 64146, 64147, 64148, 64149, 64150, 64151, 64152, 64153, 64154, 64155, 64156, 64157, + 64158, 64159, 64160, 64161, 64162, 64163, 64164, 64165, 64166, 64167, 64168, 64169, 64170, 64171, + 64172, 64173, 64174, 64175, 64176, 64177, 64178, 64179, 64180, 64181, 64182, 64183, 64184, 64185, + 64186, 64187, 64188, 64189, 64190, 64191, 64192, 64193, 64194, 64195, 64196, 64197, 64198, 64199, + 64200, 64201, 64202, 64203, 64204, 64205, 64206, 64207, 64208, 64209, 64210, 64211, 64212, 64213, + 64214, 64215, 64216, 64217, 64285, 64287, 64298, 64299, 64300, 64301, 64302, 64303, 64304, 64305, + 64306, 64307, 64308, 64309, 64310, 64312, 64313, 64314, 64315, 64316, 64318, 64320, 64321, 64323, + 64324, 64326, 64327, 64328, 64329, 64330, 64331, 64332, 64333, 64334, 69785, 69786, 69787, 69788, + 69797, 69803, 69818, 69927, 69934, 69935, 69937, 69938, 119127, 119128, 119134, 119135, 119136, 119137, + 119138, 119139, 119140, 119141, 119150, 119151, 119152, 119153, 119154, 119225, 119226, 119227, 119228, 119229, + 119230, 119231, 119232, 131362, 132380, 132389, 132427, 132666, 133124, 133342, 133676, 133987, 136420, 136872, + 136938, 137672, 138008, 138507, 138724, 138726, 139651, 139679, 140081, 141012, 141380, 141386, 142092, 142321, + 143370, 144056, 144223, 144275, 144284, 144323, 144341, 144493, 145059, 145575, 146061, 146170, 146620, 146718, + 147153, 147294, 147342, 148067, 148206, 148395, 149000, 149301, 149524, 150582, 150674, 151457, 151480, 151620, + 151794, 151795, 151833, 151859, 152137, 152605, 153126, 153242, 153285, 153980, 154279, 154539, 154752, 154832, + 155526, 156122, 156200, 156231, 156377, 156478, 156890, 156963, 157096, 157607, 157621, 158524, 158774, 158933, + 159083, 159532, 159665, 159954, 160714, 161383, 161966, 162150, 162984, 163539, 163631, 165330, 165357, 165678, + 166906, 167287, 168261, 168415, 168474, 168970, 169110, 169398, 170800, 172238, 172293, 172558, 172689, 172946, + 173568, 194560, 194561, 194562, 194563, 194564, 194565, 194566, 194567, 194568, 194569, 194570, 194571, 194572, + 194573, 194574, 194575, 194576, 194577, 194578, 194579, 194580, 194581, 194582, 194583, 194584, 194585, 194586, + 194587, 194588, 194589, 194590, 194591, 194592, 194593, 194594, 194595, 194596, 194597, 194598, 194599, 194600, + 194601, 194602, 194603, 194604, 194605, 194606, 194607, 194608, 194609, 194610, 194611, 194612, 194613, 194614, + 194615, 194616, 194617, 194618, 194619, 194620, 194621, 194622, 194623, 194624, 194625, 194626, 194627, 194628, + 194629, 194630, 194631, 194632, 194633, 194634, 194635, 194636, 194637, 194638, 194639, 194640, 194641, 194642, + 194643, 194644, 194645, 194646, 194647, 194648, 194649, 194650, 194651, 194652, 194653, 194654, 194655, 194656, + 194657, 194658, 194659, 194660, 194661, 194662, 194663, 194664, 194665, 194666, 194667, 194668, 194669, 194670, + 194671, 194672, 194673, 194674, 194675, 194676, 194677, 194678, 194679, 194680, 194681, 194682, 194683, 194684, + 194685, 194686, 194687, 194688, 194689, 194690, 194691, 194692, 194693, 194694, 194695, 194696, 194697, 194698, + 194699, 194700, 194701, 194702, 194703, 194704, 194705, 194706, 194707, 194708, 194709, 194710, 194711, 194712, + 194713, 194714, 194715, 194716, 194717, 194718, 194719, 194720, 194721, 194722, 194723, 194724, 194725, 194726, + 194727, 194728, 194729, 194730, 194731, 194732, 194733, 194734, 194735, 194736, 194737, 194738, 194739, 194740, + 194741, 194742, 194743, 194744, 194745, 194746, 194747, 194748, 194749, 194750, 194751, 194752, 194753, 194754, + 194755, 194756, 194757, 194758, 194759, 194760, 194761, 194762, 194763, 194764, 194765, 194766, 194767, 194768, + 194769, 194770, 194771, 194772, 194773, 194774, 194775, 194776, 194777, 194778, 194779, 194780, 194781, 194782, + 194783, 194784, 194785, 194786, 194787, 194788, 194789, 194790, 194791, 194792, 194793, 194794, 194795, 194796, + 194797, 194798, 194799, 194800, 194801, 194802, 194803, 194804, 194805, 194806, 194807, 194808, 194809, 194810, + 194811, 194812, 194813, 194814, 194815, 194816, 194817, 194818, 194819, 194820, 194821, 194822, 194823, 194824, + 194825, 194826, 194827, 194828, 194829, 194830, 194831, 194832, 194833, 194834, 194835, 194836, 194837, 194838, + 194839, 194840, 194841, 194842, 194843, 194844, 194845, 194846, 194847, 194848, 194849, 194850, 194851, 194852, + 194853, 194854, 194855, 194856, 194857, 194858, 194859, 194860, 194861, 194862, 194863, 194864, 194865, 194866, + 194867, 194868, 194869, 194870, 194871, 194872, 194873, 194874, 194875, 194876, 194877, 194878, 194879, 194880, + 194881, 194882, 194883, 194884, 194885, 194886, 194887, 194888, 194889, 194890, 194891, 194892, 194893, 194894, + 194895, 194896, 194897, 194898, 194899, 194900, 194901, 194902, 194903, 194904, 194905, 194906, 194907, 194908, + 194909, 194910, 194911, 194912, 194913, 194914, 194915, 194916, 194917, 194918, 194919, 194920, 194921, 194922, + 194923, 194924, 194925, 194926, 194927, 194928, 194929, 194930, 194931, 194932, 194933, 194934, 194935, 194936, + 194937, 194938, 194939, 194940, 194941, 194942, 194943, 194944, 194945, 194946, 194947, 194948, 194949, 194950, + 194951, 194952, 194953, 194954, 194955, 194956, 194957, 194958, 194959, 194960, 194961, 194962, 194963, 194964, + 194965, 194966, 194967, 194968, 194969, 194970, 194971, 194972, 194973, 194974, 194975, 194976, 194977, 194978, + 194979, 194980, 194981, 194982, 194983, 194984, 194985, 194986, 194987, 194988, 194989, 194990, 194991, 194992, + 194993, 194994, 194995, 194996, 194997, 194998, 194999, 195000, 195001, 195002, 195003, 195004, 195005, 195006, + 195007, 195008, 195009, 195010, 195011, 195012, 195013, 195014, 195015, 195016, 195017, 195018, 195019, 195020, + 195021, 195022, 195023, 195024, 195025, 195026, 195027, 195028, 195029, 195030, 195031, 195032, 195033, 195034, + 195035, 195036, 195037, 195038, 195039, 195040, 195041, 195042, 195043, 195044, 195045, 195046, 195047, 195048, + 195049, 195050, 195051, 195052, 195053, 195054, 195055, 195056, 195057, 195058, 195059, 195060, 195061, 195062, + 195063, 195064, 195065, 195066, 195067, 195068, 195069, 195070, 195071, 195072, 195073, 195074, 195075, 195076, + 195077, 195078, 195079, 195080, 195081, 195082, 195083, 195084, 195085, 195086, 195087, 195088, 195089, 195090, + 195091, 195092, 195093, 195094, 195095, 195096, 195097, 195098, 195099, 195100, 195101}; static const uint16_t comp_seq[] = { - 33432, 663, 33114, 1208, 33114, 1202, 33114, 1209, 319, 59, 322, 62, - 330, 230, 331, 273, 325, 303, 341, 120, 332, 275, 327, 845, 324, 118, - 338, 688, 321, 61, 336, 843, 326, 63, 320, 60, 323, 116, 33096, 64, - 345, 694, 325, 690, 33104, 692, 330, 128, 320, 122, 340, 66, 325, 126, - 33089, 124, 330, 130, 340, 704, 325, 698, 342, 706, 345, 702, 33104, - 700, 336, 867, 341, 138, 332, 279, 342, 712, 330, 140, 326, 70, 321, - 69, 324, 134, 322, 871, 344, 714, 323, 132, 331, 277, 325, 136, 319, - 67, 340, 305, 320, 68, 33095, 869, 34077, 1308, 321, 142, 330, 252, - 324, 144, 320, 263, 340, 148, 323, 720, 33093, 146, 336, 724, 330, - 301, 326, 726, 340, 728, 321, 150, 325, 722, 33111, 730, 330, 232, - 323, 154, 332, 283, 320, 72, 327, 883, 336, 885, 319, 71, 322, 152, - 331, 281, 324, 156, 321, 73, 325, 160, 326, 74, 344, 732, 33109, 158, - 33089, 161, 336, 738, 320, 736, 345, 740, 330, 254, 33108, 163, 336, - 742, 340, 167, 345, 746, 342, 748, 330, 169, 33088, 165, 34077, 1266, - 320, 171, 330, 175, 319, 265, 325, 756, 340, 173, 336, 758, 322, 75, - 342, 762, 33113, 760, 335, 225, 325, 311, 327, 889, 331, 285, 326, 80, - 323, 177, 321, 78, 341, 256, 319, 76, 320, 77, 330, 234, 336, 887, - 322, 79, 332, 287, 324, 179, 33097, 181, 320, 772, 33093, 774, 34077, - 1270, 345, 782, 325, 776, 330, 187, 340, 185, 331, 289, 336, 778, 320, - 183, 33100, 291, 325, 784, 321, 191, 330, 195, 320, 189, 340, 193, - 339, 297, 33104, 786, 342, 800, 330, 199, 325, 794, 339, 299, 345, - 798, 340, 197, 33104, 796, 323, 203, 320, 83, 337, 802, 344, 804, 329, - 209, 330, 236, 322, 201, 331, 293, 321, 84, 328, 207, 332, 295, 341, - 211, 326, 85, 335, 227, 324, 205, 319, 82, 336, 911, 327, 913, 33110, - 806, 336, 814, 33090, 812, 319, 816, 325, 822, 321, 213, 336, 824, - 326, 820, 33088, 818, 326, 828, 33093, 826, 325, 830, 326, 217, 327, - 929, 336, 927, 319, 925, 321, 215, 323, 315, 320, 86, 33090, 931, 320, - 218, 325, 220, 345, 836, 336, 834, 330, 222, 33089, 832, 34077, 1280, - 34077, 1282, 34077, 1284, 327, 846, 330, 231, 323, 117, 336, 844, 325, - 304, 331, 274, 324, 119, 319, 87, 332, 276, 321, 89, 338, 689, 326, - 91, 341, 121, 320, 88, 322, 90, 33096, 92, 336, 693, 345, 695, 33093, - 691, 325, 127, 340, 94, 321, 125, 320, 123, 33098, 129, 336, 701, 342, - 707, 340, 705, 325, 699, 345, 703, 33098, 131, 336, 868, 323, 133, - 330, 141, 332, 280, 342, 713, 326, 98, 324, 135, 321, 97, 319, 95, - 344, 715, 327, 870, 320, 96, 322, 872, 331, 278, 325, 137, 340, 306, - 33109, 139, 34077, 1290, 321, 143, 325, 147, 330, 253, 324, 145, 340, - 149, 323, 721, 33088, 264, 325, 723, 330, 302, 345, 838, 326, 727, - 321, 151, 340, 729, 336, 725, 33111, 731, 331, 282, 320, 100, 332, - 284, 327, 884, 336, 886, 322, 153, 326, 102, 324, 157, 330, 233, 341, - 159, 319, 99, 344, 733, 323, 155, 33089, 101, 330, 262, 33089, 162, - 345, 741, 330, 255, 320, 737, 340, 164, 33104, 739, 336, 743, 330, - 170, 340, 168, 345, 747, 342, 749, 33088, 166, 336, 755, 325, 753, - 33088, 751, 345, 761, 319, 266, 340, 174, 320, 172, 325, 757, 336, - 759, 342, 763, 330, 176, 33090, 103, 330, 235, 321, 106, 336, 888, - 326, 108, 341, 257, 327, 890, 325, 312, 319, 104, 322, 107, 323, 178, - 331, 286, 320, 105, 329, 182, 324, 180, 332, 288, 33103, 226, 325, - 775, 33088, 773, 1310, 1298, 34077, 1297, 330, 196, 336, 787, 325, - 785, 320, 190, 339, 298, 340, 194, 33089, 192, 326, 839, 336, 797, - 330, 200, 342, 801, 339, 300, 325, 795, 345, 799, 33108, 198, 335, - 228, 329, 210, 320, 111, 337, 803, 319, 110, 331, 294, 326, 113, 342, - 807, 341, 212, 322, 202, 344, 805, 324, 206, 332, 296, 330, 237, 327, - 914, 321, 112, 323, 204, 336, 912, 33096, 208, 322, 813, 33104, 815, - 320, 819, 321, 214, 325, 823, 328, 840, 336, 825, 326, 821, 33087, - 817, 1310, 1304, 34077, 1303, 325, 831, 323, 316, 319, 926, 326, 115, - 336, 928, 321, 216, 328, 841, 320, 114, 327, 930, 33090, 932, 345, - 837, 336, 835, 325, 221, 321, 833, 330, 223, 33088, 219, 1309, 1306, - 34078, 1307, 35430, 2657, 35430, 2659, 34077, 1312, 35430, 2661, - 34077, 1363, 319, 1149, 349, 1109, 33088, 355, 34077, 1315, 34077, - 1317, 34077, 1319, 34077, 1321, 34077, 1323, 34077, 1325, 34077, 1327, - 34077, 1329, 34077, 1331, 34077, 1333, 34077, 1335, 34077, 1337, 327, - 851, 322, 853, 320, 847, 33087, 849, 33091, 246, 33088, 267, 34077, - 1341, 33088, 696, 34077, 1343, 322, 879, 319, 875, 320, 873, 33095, - 877, 1310, 1346, 34077, 1345, 1310, 1349, 34077, 1348, 327, 895, 322, - 897, 319, 893, 33088, 891, 1309, 1351, 34078, 1352, 33091, 307, 1310, - 1355, 34077, 1354, 1309, 1357, 34078, 1358, 319, 244, 330, 242, 320, - 240, 33091, 238, 327, 852, 319, 850, 322, 854, 33088, 848, 33091, 247, - 33088, 268, 323, 251, 33088, 270, 33088, 697, 320, 874, 327, 878, 322, - 880, 33087, 876, 33088, 735, 34077, 1365, 34077, 1366, 34077, 1367, - 319, 894, 320, 892, 322, 898, 33095, 896, 320, 765, 326, 767, 33091, - 310, 33091, 308, 33088, 272, 320, 241, 323, 239, 319, 245, 33098, 243, - 34077, 1369, 320, 857, 319, 859, 322, 863, 33095, 861, 320, 858, 327, - 862, 322, 864, 33087, 860, 319, 708, 33088, 710, 320, 711, 33087, 709, - 33310, 535, 33310, 539, 35431, 2664, 35431, 2665, 33310, 541, 319, - 768, 33088, 770, 320, 771, 33087, 769, 33093, 788, 33093, 789, 33093, - 790, 33093, 791, 33088, 808, 33088, 809, 33094, 810, 33094, 811, - 33093, 842, 33114, 1174, 33114, 1175, 33114, 1176, 322, 907, 336, 909, - 327, 905, 319, 903, 33088, 901, 319, 904, 336, 910, 327, 906, 320, - 902, 33090, 908, 33093, 718, 320, 915, 319, 917, 327, 919, 322, 921, - 33104, 923, 319, 918, 336, 924, 320, 916, 327, 920, 33090, 922, 33098, - 260, 34077, 1264, 559, 558, 33323, 557, 336, 754, 325, 752, 33088, - 750, 33114, 1177, 33114, 1179, 33114, 1178, 34077, 1268, 33091, 258, - 33091, 259, 34077, 1272, 34077, 1274, 33114, 1184, 33114, 1186, 34077, - 1276, 34077, 1278, 33114, 1190, 33114, 1192, 33091, 248, 33091, 249, - 33092, 716, 33092, 717, 33091, 313, 33091, 314, 33114, 1194, 33114, - 1196, 33114, 1198, 34077, 1286, 33114, 1200, 33114, 1207, 34077, 1288, - 33114, 1204, 33114, 1210, 33114, 1211, 34077, 1292, 33114, 1214, - 33114, 1215, 33114, 1218, 33114, 1219, 33114, 1224, 33114, 1225, - 33114, 1248, 33114, 1249, 33114, 1228, 33114, 1229, 33114, 1232, - 33114, 1233, 33114, 1250, 33098, 261, 1310, 1295, 34077, 1294, 33114, - 1240, 33114, 1241, 33114, 1242, 33114, 1243, 332, 292, 330, 188, 345, - 783, 340, 186, 325, 777, 336, 779, 331, 290, 33088, 184, 33114, 1252, - 33114, 1253, 33114, 1254, 33114, 1255, 1309, 1300, 34078, 1301, 326, - 829, 33093, 827, 33445, 666, 33445, 668, 33445, 670, 33445, 672, - 33445, 674, 33445, 676, 33445, 679, 33445, 681, 33445, 684, 33445, - 685, 33445, 687, 585, 583, 584, 581, 33347, 582, 319, 1104, 323, 1103, - 324, 1102, 334, 942, 352, 1106, 320, 356, 33101, 941, 33364, 589, 320, - 358, 319, 1115, 334, 956, 33101, 955, 352, 1119, 334, 970, 320, 359, - 319, 1117, 33101, 969, 319, 1131, 326, 373, 333, 985, 323, 1130, 324, - 1129, 320, 360, 33102, 986, 319, 1157, 334, 1000, 320, 361, 33101, - 999, 33102, 1148, 324, 1144, 326, 374, 320, 362, 319, 1146, 334, 1013, - 33091, 1145, 352, 1161, 334, 1026, 319, 1159, 320, 363, 33101, 1025, - 33120, 1099, 33120, 1112, 320, 375, 334, 934, 323, 1096, 352, 1098, - 349, 1100, 333, 933, 324, 1095, 33087, 1033, 320, 376, 334, 950, 319, - 1035, 33101, 949, 319, 1037, 334, 962, 320, 377, 333, 961, 352, 1111, - 33117, 1113, 333, 977, 323, 1124, 326, 388, 320, 378, 349, 1127, 334, - 978, 324, 1123, 33087, 1039, 319, 1041, 334, 994, 320, 390, 33101, - 993, 333, 1140, 33102, 1141, 319, 1043, 333, 1005, 320, 391, 326, 389, - 324, 1136, 334, 1006, 323, 1137, 33117, 1142, 590, 593, 33364, 595, - 33358, 594, 320, 392, 352, 1153, 349, 1155, 333, 1017, 319, 1045, - 33102, 1018, 320, 364, 319, 1125, 33117, 1128, 320, 379, 319, 1138, - 33117, 1143, 33120, 1154, 326, 395, 33088, 394, 33093, 719, 33094, - 400, 324, 444, 33094, 446, 33088, 398, 319, 396, 324, 448, 33094, 397, - 326, 454, 33092, 442, 33094, 456, 324, 410, 319, 402, 326, 460, 33091, - 458, 33088, 401, 33094, 462, 326, 472, 323, 470, 324, 403, 33097, 474, - 33094, 476, 33094, 478, 33094, 468, 324, 445, 33094, 447, 33088, 432, - 319, 430, 324, 449, 33094, 431, 326, 455, 33092, 443, 33094, 457, 324, - 423, 326, 461, 323, 459, 33087, 436, 33088, 435, 33094, 463, 323, 471, - 329, 475, 324, 437, 33094, 473, 33367, 598, 33094, 477, 33094, 479, - 33094, 469, 33094, 434, 33099, 440, 33099, 441, 33120, 1092, 34077, - 1339, 320, 269, 33091, 250, 33376, 601, 609, 605, 602, 606, 33376, - 604, 33376, 607, 33094, 452, 33094, 453, 33088, 734, 33094, 466, - 33094, 467, 323, 309, 320, 764, 33094, 766, 33088, 271, 610, 613, - 33384, 615, 33378, 614, 34077, 1364, 624, 623, 617, 620, 33386, 621, - 33385, 622, 521, 514, 520, 512, 33287, 511, 33091, 744, 33091, 745, - 33288, 513, 33288, 515, 33091, 780, 33091, 781, 33114, 1188, 33093, - 792, 33093, 793, 324, 865, 33089, 855, 324, 866, 33089, 856, 33089, - 881, 33089, 882, 33288, 524, 33089, 899, 33089, 900, 33288, 526, - 33288, 522, 320, 937, 319, 935, 352, 1047, 33117, 939, 320, 938, 319, - 936, 352, 1048, 33117, 940, 33120, 1049, 33120, 1050, 33120, 1051, - 33120, 1052, 33120, 1053, 33120, 1054, 349, 947, 319, 943, 320, 945, - 33120, 1055, 320, 946, 319, 944, 352, 1056, 33117, 948, 33120, 1057, - 33120, 1058, 33120, 1059, 33120, 1060, 33120, 1061, 33120, 1062, 320, - 953, 33087, 951, 319, 952, 33088, 954, 320, 959, 33087, 957, 319, 958, - 33088, 960, 319, 963, 320, 965, 349, 967, 33120, 1063, 352, 1064, 319, - 964, 320, 966, 33117, 968, 33120, 1065, 33120, 1066, 33120, 1067, - 33120, 1068, 33120, 1069, 33120, 1070, 352, 1071, 320, 973, 319, 971, - 33117, 975, 320, 974, 319, 972, 352, 1072, 33117, 976, 33120, 1073, - 33120, 1074, 33120, 1075, 33120, 1076, 33120, 1077, 33120, 1078, 319, - 979, 320, 981, 33117, 983, 320, 982, 319, 980, 33117, 984, 319, 987, - 320, 989, 33117, 991, 320, 990, 319, 988, 33117, 992, 320, 997, 33087, - 995, 319, 996, 33088, 998, 320, 1003, 33087, 1001, 319, 1002, 33088, - 1004, 319, 1007, 320, 1009, 33117, 1011, 320, 1010, 319, 1008, 33117, - 1012, 320, 1015, 319, 1014, 33117, 1016, 349, 1023, 319, 1019, 352, - 1079, 33088, 1021, 320, 1022, 319, 1020, 352, 1080, 33117, 1024, - 33120, 1081, 33120, 1082, 33120, 1083, 33120, 1084, 33120, 1085, - 33120, 1086, 352, 1087, 320, 1029, 319, 1027, 33117, 1031, 352, 1088, - 319, 1028, 320, 1030, 33117, 1032, 33120, 1089, 33120, 1090, 33120, - 1091, 33114, 1251, 33120, 1093, 33120, 1094, 33120, 1097, 33120, 1110, - 33120, 1152, 33120, 1101, 320, 1121, 319, 1120, 33117, 1122, 33120, - 1114, 33120, 1156, 319, 1133, 320, 1134, 33117, 1135 -}; + 33432, 663, 33114, 1208, 33114, 1202, 33114, 1209, 319, 59, 322, 62, 330, 230, 331, 273, 325, 303, + 341, 120, 332, 275, 327, 845, 324, 118, 338, 688, 321, 61, 336, 843, 326, 63, 320, 60, + 323, 116, 33096, 64, 345, 694, 325, 690, 33104, 692, 330, 128, 320, 122, 340, 66, 325, 126, + 33089, 124, 330, 130, 340, 704, 325, 698, 342, 706, 345, 702, 33104, 700, 336, 867, 341, 138, + 332, 279, 342, 712, 330, 140, 326, 70, 321, 69, 324, 134, 322, 871, 344, 714, 323, 132, + 331, 277, 325, 136, 319, 67, 340, 305, 320, 68, 33095, 869, 34077, 1308, 321, 142, 330, 252, + 324, 144, 320, 263, 340, 148, 323, 720, 33093, 146, 336, 724, 330, 301, 326, 726, 340, 728, + 321, 150, 325, 722, 33111, 730, 330, 232, 323, 154, 332, 283, 320, 72, 327, 883, 336, 885, + 319, 71, 322, 152, 331, 281, 324, 156, 321, 73, 325, 160, 326, 74, 344, 732, 33109, 158, + 33089, 161, 336, 738, 320, 736, 345, 740, 330, 254, 33108, 163, 336, 742, 340, 167, 345, 746, + 342, 748, 330, 169, 33088, 165, 34077, 1266, 320, 171, 330, 175, 319, 265, 325, 756, 340, 173, + 336, 758, 322, 75, 342, 762, 33113, 760, 335, 225, 325, 311, 327, 889, 331, 285, 326, 80, + 323, 177, 321, 78, 341, 256, 319, 76, 320, 77, 330, 234, 336, 887, 322, 79, 332, 287, + 324, 179, 33097, 181, 320, 772, 33093, 774, 34077, 1270, 345, 782, 325, 776, 330, 187, 340, 185, + 331, 289, 336, 778, 320, 183, 33100, 291, 325, 784, 321, 191, 330, 195, 320, 189, 340, 193, + 339, 297, 33104, 786, 342, 800, 330, 199, 325, 794, 339, 299, 345, 798, 340, 197, 33104, 796, + 323, 203, 320, 83, 337, 802, 344, 804, 329, 209, 330, 236, 322, 201, 331, 293, 321, 84, + 328, 207, 332, 295, 341, 211, 326, 85, 335, 227, 324, 205, 319, 82, 336, 911, 327, 913, + 33110, 806, 336, 814, 33090, 812, 319, 816, 325, 822, 321, 213, 336, 824, 326, 820, 33088, 818, + 326, 828, 33093, 826, 325, 830, 326, 217, 327, 929, 336, 927, 319, 925, 321, 215, 323, 315, + 320, 86, 33090, 931, 320, 218, 325, 220, 345, 836, 336, 834, 330, 222, 33089, 832, 34077, 1280, + 34077, 1282, 34077, 1284, 327, 846, 330, 231, 323, 117, 336, 844, 325, 304, 331, 274, 324, 119, + 319, 87, 332, 276, 321, 89, 338, 689, 326, 91, 341, 121, 320, 88, 322, 90, 33096, 92, + 336, 693, 345, 695, 33093, 691, 325, 127, 340, 94, 321, 125, 320, 123, 33098, 129, 336, 701, + 342, 707, 340, 705, 325, 699, 345, 703, 33098, 131, 336, 868, 323, 133, 330, 141, 332, 280, + 342, 713, 326, 98, 324, 135, 321, 97, 319, 95, 344, 715, 327, 870, 320, 96, 322, 872, + 331, 278, 325, 137, 340, 306, 33109, 139, 34077, 1290, 321, 143, 325, 147, 330, 253, 324, 145, + 340, 149, 323, 721, 33088, 264, 325, 723, 330, 302, 345, 838, 326, 727, 321, 151, 340, 729, + 336, 725, 33111, 731, 331, 282, 320, 100, 332, 284, 327, 884, 336, 886, 322, 153, 326, 102, + 324, 157, 330, 233, 341, 159, 319, 99, 344, 733, 323, 155, 33089, 101, 330, 262, 33089, 162, + 345, 741, 330, 255, 320, 737, 340, 164, 33104, 739, 336, 743, 330, 170, 340, 168, 345, 747, + 342, 749, 33088, 166, 336, 755, 325, 753, 33088, 751, 345, 761, 319, 266, 340, 174, 320, 172, + 325, 757, 336, 759, 342, 763, 330, 176, 33090, 103, 330, 235, 321, 106, 336, 888, 326, 108, + 341, 257, 327, 890, 325, 312, 319, 104, 322, 107, 323, 178, 331, 286, 320, 105, 329, 182, + 324, 180, 332, 288, 33103, 226, 325, 775, 33088, 773, 1310, 1298, 34077, 1297, 330, 196, 336, 787, + 325, 785, 320, 190, 339, 298, 340, 194, 33089, 192, 326, 839, 336, 797, 330, 200, 342, 801, + 339, 300, 325, 795, 345, 799, 33108, 198, 335, 228, 329, 210, 320, 111, 337, 803, 319, 110, + 331, 294, 326, 113, 342, 807, 341, 212, 322, 202, 344, 805, 324, 206, 332, 296, 330, 237, + 327, 914, 321, 112, 323, 204, 336, 912, 33096, 208, 322, 813, 33104, 815, 320, 819, 321, 214, + 325, 823, 328, 840, 336, 825, 326, 821, 33087, 817, 1310, 1304, 34077, 1303, 325, 831, 323, 316, + 319, 926, 326, 115, 336, 928, 321, 216, 328, 841, 320, 114, 327, 930, 33090, 932, 345, 837, + 336, 835, 325, 221, 321, 833, 330, 223, 33088, 219, 1309, 1306, 34078, 1307, 35430, 2657, 35430, 2659, + 34077, 1312, 35430, 2661, 34077, 1363, 319, 1149, 349, 1109, 33088, 355, 34077, 1315, 34077, 1317, 34077, 1319, + 34077, 1321, 34077, 1323, 34077, 1325, 34077, 1327, 34077, 1329, 34077, 1331, 34077, 1333, 34077, 1335, 34077, 1337, + 327, 851, 322, 853, 320, 847, 33087, 849, 33091, 246, 33088, 267, 34077, 1341, 33088, 696, 34077, 1343, + 322, 879, 319, 875, 320, 873, 33095, 877, 1310, 1346, 34077, 1345, 1310, 1349, 34077, 1348, 327, 895, + 322, 897, 319, 893, 33088, 891, 1309, 1351, 34078, 1352, 33091, 307, 1310, 1355, 34077, 1354, 1309, 1357, + 34078, 1358, 319, 244, 330, 242, 320, 240, 33091, 238, 327, 852, 319, 850, 322, 854, 33088, 848, + 33091, 247, 33088, 268, 323, 251, 33088, 270, 33088, 697, 320, 874, 327, 878, 322, 880, 33087, 876, + 33088, 735, 34077, 1365, 34077, 1366, 34077, 1367, 319, 894, 320, 892, 322, 898, 33095, 896, 320, 765, + 326, 767, 33091, 310, 33091, 308, 33088, 272, 320, 241, 323, 239, 319, 245, 33098, 243, 34077, 1369, + 320, 857, 319, 859, 322, 863, 33095, 861, 320, 858, 327, 862, 322, 864, 33087, 860, 319, 708, + 33088, 710, 320, 711, 33087, 709, 33310, 535, 33310, 539, 35431, 2664, 35431, 2665, 33310, 541, 319, 768, + 33088, 770, 320, 771, 33087, 769, 33093, 788, 33093, 789, 33093, 790, 33093, 791, 33088, 808, 33088, 809, + 33094, 810, 33094, 811, 33093, 842, 33114, 1174, 33114, 1175, 33114, 1176, 322, 907, 336, 909, 327, 905, + 319, 903, 33088, 901, 319, 904, 336, 910, 327, 906, 320, 902, 33090, 908, 33093, 718, 320, 915, + 319, 917, 327, 919, 322, 921, 33104, 923, 319, 918, 336, 924, 320, 916, 327, 920, 33090, 922, + 33098, 260, 34077, 1264, 559, 558, 33323, 557, 336, 754, 325, 752, 33088, 750, 33114, 1177, 33114, 1179, + 33114, 1178, 34077, 1268, 33091, 258, 33091, 259, 34077, 1272, 34077, 1274, 33114, 1184, 33114, 1186, 34077, 1276, + 34077, 1278, 33114, 1190, 33114, 1192, 33091, 248, 33091, 249, 33092, 716, 33092, 717, 33091, 313, 33091, 314, + 33114, 1194, 33114, 1196, 33114, 1198, 34077, 1286, 33114, 1200, 33114, 1207, 34077, 1288, 33114, 1204, 33114, 1210, + 33114, 1211, 34077, 1292, 33114, 1214, 33114, 1215, 33114, 1218, 33114, 1219, 33114, 1224, 33114, 1225, 33114, 1248, + 33114, 1249, 33114, 1228, 33114, 1229, 33114, 1232, 33114, 1233, 33114, 1250, 33098, 261, 1310, 1295, 34077, 1294, + 33114, 1240, 33114, 1241, 33114, 1242, 33114, 1243, 332, 292, 330, 188, 345, 783, 340, 186, 325, 777, + 336, 779, 331, 290, 33088, 184, 33114, 1252, 33114, 1253, 33114, 1254, 33114, 1255, 1309, 1300, 34078, 1301, + 326, 829, 33093, 827, 33445, 666, 33445, 668, 33445, 670, 33445, 672, 33445, 674, 33445, 676, 33445, 679, + 33445, 681, 33445, 684, 33445, 685, 33445, 687, 585, 583, 584, 581, 33347, 582, 319, 1104, 323, 1103, + 324, 1102, 334, 942, 352, 1106, 320, 356, 33101, 941, 33364, 589, 320, 358, 319, 1115, 334, 956, + 33101, 955, 352, 1119, 334, 970, 320, 359, 319, 1117, 33101, 969, 319, 1131, 326, 373, 333, 985, + 323, 1130, 324, 1129, 320, 360, 33102, 986, 319, 1157, 334, 1000, 320, 361, 33101, 999, 33102, 1148, + 324, 1144, 326, 374, 320, 362, 319, 1146, 334, 1013, 33091, 1145, 352, 1161, 334, 1026, 319, 1159, + 320, 363, 33101, 1025, 33120, 1099, 33120, 1112, 320, 375, 334, 934, 323, 1096, 352, 1098, 349, 1100, + 333, 933, 324, 1095, 33087, 1033, 320, 376, 334, 950, 319, 1035, 33101, 949, 319, 1037, 334, 962, + 320, 377, 333, 961, 352, 1111, 33117, 1113, 333, 977, 323, 1124, 326, 388, 320, 378, 349, 1127, + 334, 978, 324, 1123, 33087, 1039, 319, 1041, 334, 994, 320, 390, 33101, 993, 333, 1140, 33102, 1141, + 319, 1043, 333, 1005, 320, 391, 326, 389, 324, 1136, 334, 1006, 323, 1137, 33117, 1142, 590, 593, + 33364, 595, 33358, 594, 320, 392, 352, 1153, 349, 1155, 333, 1017, 319, 1045, 33102, 1018, 320, 364, + 319, 1125, 33117, 1128, 320, 379, 319, 1138, 33117, 1143, 33120, 1154, 326, 395, 33088, 394, 33093, 719, + 33094, 400, 324, 444, 33094, 446, 33088, 398, 319, 396, 324, 448, 33094, 397, 326, 454, 33092, 442, + 33094, 456, 324, 410, 319, 402, 326, 460, 33091, 458, 33088, 401, 33094, 462, 326, 472, 323, 470, + 324, 403, 33097, 474, 33094, 476, 33094, 478, 33094, 468, 324, 445, 33094, 447, 33088, 432, 319, 430, + 324, 449, 33094, 431, 326, 455, 33092, 443, 33094, 457, 324, 423, 326, 461, 323, 459, 33087, 436, + 33088, 435, 33094, 463, 323, 471, 329, 475, 324, 437, 33094, 473, 33367, 598, 33094, 477, 33094, 479, + 33094, 469, 33094, 434, 33099, 440, 33099, 441, 33120, 1092, 34077, 1339, 320, 269, 33091, 250, 33376, 601, + 609, 605, 602, 606, 33376, 604, 33376, 607, 33094, 452, 33094, 453, 33088, 734, 33094, 466, 33094, 467, + 323, 309, 320, 764, 33094, 766, 33088, 271, 610, 613, 33384, 615, 33378, 614, 34077, 1364, 624, 623, + 617, 620, 33386, 621, 33385, 622, 521, 514, 520, 512, 33287, 511, 33091, 744, 33091, 745, 33288, 513, + 33288, 515, 33091, 780, 33091, 781, 33114, 1188, 33093, 792, 33093, 793, 324, 865, 33089, 855, 324, 866, + 33089, 856, 33089, 881, 33089, 882, 33288, 524, 33089, 899, 33089, 900, 33288, 526, 33288, 522, 320, 937, + 319, 935, 352, 1047, 33117, 939, 320, 938, 319, 936, 352, 1048, 33117, 940, 33120, 1049, 33120, 1050, + 33120, 1051, 33120, 1052, 33120, 1053, 33120, 1054, 349, 947, 319, 943, 320, 945, 33120, 1055, 320, 946, + 319, 944, 352, 1056, 33117, 948, 33120, 1057, 33120, 1058, 33120, 1059, 33120, 1060, 33120, 1061, 33120, 1062, + 320, 953, 33087, 951, 319, 952, 33088, 954, 320, 959, 33087, 957, 319, 958, 33088, 960, 319, 963, + 320, 965, 349, 967, 33120, 1063, 352, 1064, 319, 964, 320, 966, 33117, 968, 33120, 1065, 33120, 1066, + 33120, 1067, 33120, 1068, 33120, 1069, 33120, 1070, 352, 1071, 320, 973, 319, 971, 33117, 975, 320, 974, + 319, 972, 352, 1072, 33117, 976, 33120, 1073, 33120, 1074, 33120, 1075, 33120, 1076, 33120, 1077, 33120, 1078, + 319, 979, 320, 981, 33117, 983, 320, 982, 319, 980, 33117, 984, 319, 987, 320, 989, 33117, 991, + 320, 990, 319, 988, 33117, 992, 320, 997, 33087, 995, 319, 996, 33088, 998, 320, 1003, 33087, 1001, + 319, 1002, 33088, 1004, 319, 1007, 320, 1009, 33117, 1011, 320, 1010, 319, 1008, 33117, 1012, 320, 1015, + 319, 1014, 33117, 1016, 349, 1023, 319, 1019, 352, 1079, 33088, 1021, 320, 1022, 319, 1020, 352, 1080, + 33117, 1024, 33120, 1081, 33120, 1082, 33120, 1083, 33120, 1084, 33120, 1085, 33120, 1086, 352, 1087, 320, 1029, + 319, 1027, 33117, 1031, 352, 1088, 319, 1028, 320, 1030, 33117, 1032, 33120, 1089, 33120, 1090, 33120, 1091, + 33114, 1251, 33120, 1093, 33120, 1094, 33120, 1097, 33120, 1110, 33120, 1152, 33120, 1101, 320, 1121, 319, 1120, + 33117, 1122, 33120, 1114, 33120, 1156, 319, 1133, 320, 1134, 33117, 1135}; static const uint16_t decomp_seq[] = { - 0, 1166, 1167, 2783, 2784, 1989, 2075, 2064, 5, 319, 5, 320, 5, 321, - 5, 322, 5, 326, 5, 328, 7, 340, 9, 319, 9, 320, 9, 321, 9, 326, 13, - 319, 13, 320, 13, 321, 13, 326, 18, 322, 19, 319, 19, 320, 19, 321, - 19, 322, 19, 326, 24, 319, 24, 320, 24, 321, 24, 326, 28, 320, 31, - 319, 31, 320, 31, 321, 31, 322, 31, 326, 31, 328, 33, 340, 35, 319, - 35, 320, 35, 321, 35, 326, 39, 319, 39, 320, 39, 321, 39, 326, 44, - 322, 45, 319, 45, 320, 45, 321, 45, 322, 45, 326, 50, 319, 50, 320, - 50, 321, 50, 326, 54, 320, 54, 326, 5, 323, 31, 323, 5, 324, 31, 324, - 5, 341, 31, 341, 7, 320, 33, 320, 7, 321, 33, 321, 7, 325, 33, 325, 7, - 330, 33, 330, 8, 330, 34, 330, 9, 323, 35, 323, 9, 324, 35, 324, 9, - 325, 35, 325, 9, 341, 35, 341, 9, 330, 35, 330, 11, 321, 37, 321, 11, - 324, 37, 324, 11, 325, 37, 325, 11, 340, 37, 340, 12, 321, 38, 321, - 372, 13, 322, 39, 322, 13, 323, 39, 323, 13, 324, 39, 324, 13, 341, - 39, 341, 13, 325, 14, 321, 40, 321, 15, 340, 41, 340, 16, 320, 42, - 320, 16, 340, 42, 340, 16, 330, 42, 330, 18, 320, 44, 320, 18, 340, - 44, 340, 18, 330, 44, 330, 19, 323, 45, 323, 19, 324, 45, 324, 19, - 329, 45, 329, 21, 320, 47, 320, 21, 340, 47, 340, 21, 330, 47, 330, - 22, 320, 48, 320, 22, 321, 48, 321, 22, 340, 48, 340, 22, 330, 48, - 330, 23, 340, 49, 340, 23, 330, 49, 330, 24, 322, 50, 322, 24, 323, - 50, 323, 24, 324, 50, 324, 24, 328, 50, 328, 24, 329, 50, 329, 24, - 341, 50, 341, 26, 321, 52, 321, 28, 321, 54, 321, 28, 326, 29, 320, - 55, 320, 29, 325, 55, 325, 29, 330, 55, 330, 1171, 346, 1172, 346, 19, - 335, 45, 335, 1173, 346, 24, 335, 50, 335, 2000, 5, 330, 31, 330, 13, - 330, 39, 330, 19, 330, 45, 330, 24, 330, 50, 330, 24, 326, 323, 50, - 326, 323, 24, 326, 320, 50, 326, 320, 24, 326, 330, 50, 326, 330, 24, - 326, 319, 50, 326, 319, 5, 326, 323, 31, 326, 323, 5, 325, 323, 31, - 325, 323, 65, 323, 93, 323, 11, 330, 37, 330, 15, 330, 41, 330, 19, - 341, 45, 341, 19, 341, 323, 45, 341, 323, 229, 330, 317, 330, 40, 330, - 11, 320, 37, 320, 18, 319, 44, 319, 5, 328, 320, 31, 328, 320, 65, - 320, 93, 320, 81, 320, 109, 320, 5, 331, 31, 331, 5, 332, 31, 332, 9, - 331, 35, 331, 9, 332, 35, 332, 13, 331, 39, 331, 13, 332, 39, 332, 19, - 331, 45, 331, 19, 332, 45, 332, 21, 331, 47, 331, 21, 332, 47, 332, - 24, 331, 50, 331, 24, 332, 50, 332, 22, 339, 48, 339, 23, 339, 49, - 339, 12, 330, 38, 330, 1189, 346, 1191, 346, 9, 340, 35, 340, 19, 326, - 323, 45, 326, 323, 19, 322, 323, 45, 322, 323, 19, 325, 45, 325, 19, - 325, 323, 45, 325, 323, 28, 323, 54, 323, 1193, 346, 1195, 346, 1197, - 346, 1199, 346, 3, 346, 1203, 346, 1201, 346, 2, 346, 4, 346, 1205, - 346, 1206, 346, 1212, 346, 1213, 346, 1216, 346, 1217, 346, 1220, 346, - 1221, 346, 1226, 346, 1227, 346, 1230, 346, 1231, 346, 1993, 1236, - 346, 1237, 346, 1238, 346, 1239, 346, 2790, 1222, 346, 1223, 346, - 1234, 346, 1235, 346, 1244, 346, 1245, 346, 1246, 346, 1247, 346, - 1260, 1261, 333, 498, 484, 318, 1, 501, 484, 56, 320, 365, 320, 58, - 366, 320, 367, 320, 368, 320, 369, 320, 371, 320, 372, 320, 383, 326, - 320, 503, 484, 368, 326, 371, 326, 380, 320, 381, 320, 382, 320, 383, - 320, 386, 326, 320, 384, 320, 386, 320, 387, 320, 1418, 393, 320, 393, - 326, 406, 319, 406, 326, 405, 320, 399, 326, 411, 320, 409, 319, 413, - 324, 409, 324, 1982, 422, 324, 419, 319, 419, 326, 418, 320, 433, 326, - 424, 320, 422, 319, 426, 324, 1419, 438, 331, 439, 331, 1990, 407, - 324, 420, 324, 404, 324, 417, 324, 404, 326, 417, 326, 406, 324, 419, - 324, 450, 326, 451, 326, 407, 326, 420, 326, 408, 326, 421, 326, 409, - 323, 422, 323, 409, 326, 422, 326, 412, 326, 425, 326, 464, 326, 465, - 326, 416, 326, 429, 326, 413, 323, 426, 323, 413, 326, 426, 326, 413, - 329, 426, 329, 414, 326, 427, 326, 415, 326, 428, 326, 1977, 516, 519, - 516, 520, 517, 520, 516, 521, 518, 520, 1420, 527, 520, 523, 520, 525, - 520, 1992, 534, 542, 538, 542, 540, 542, 528, 542, 529, 542, 530, 542, - 531, 542, 532, 542, 533, 542, 536, 542, 537, 542, 556, 555, 556, 559, - 551, 554, 552, 554, 553, 554, 567, 571, 570, 571, 2776, 563, 571, 564, - 571, 565, 571, 566, 571, 1180, 346, 1182, 346, 1181, 346, 1259, 346, - 580, 584, 580, 579, 580, 585, 576, 578, 577, 578, 588, 596, 591, 590, - 592, 590, 591, 596, 1183, 346, 1185, 346, 597, 599, 1187, 346, 600, - 608, 603, 608, 603, 609, 603, 602, 603, 602, 608, 611, 610, 612, 610, - 611, 616, 619, 617, 619, 618, 619, 618, 617, 619, 624, 626, 660, 628, - 660, 630, 660, 632, 660, 634, 660, 625, 659, 637, 638, 637, 640, 657, - 644, 658, 644, 637, 644, 647, 660, 649, 660, 651, 660, 653, 660, 655, - 660, 646, 659, 1892, 1895, 1406, 662, 664, 1897, 1263, 1309, 1265, - 1309, 1267, 1309, 1269, 1309, 1271, 1309, 1273, 1309, 1275, 1309, - 1277, 1309, 1279, 1309, 1281, 1309, 1283, 1309, 1285, 1309, 1287, - 1309, 1289, 1309, 1291, 1309, 1293, 1309, 1293, 1310, 1296, 1309, - 1296, 1310, 1299, 1309, 1299, 1310, 1302, 1309, 1302, 1310, 1305, - 1309, 1305, 1310, 1262, 1309, 2753, 2656, 2662, 2658, 2662, 1311, - 1309, 2660, 2662, 1314, 1309, 1316, 1309, 1318, 1309, 1320, 1309, - 1322, 1309, 1324, 1309, 1326, 1309, 1328, 1309, 1330, 1309, 1332, - 1309, 1334, 1309, 1336, 1309, 1338, 1309, 1340, 1309, 1342, 1309, - 1344, 1309, 1344, 1310, 1347, 1309, 1347, 1310, 1350, 1309, 1350, - 1310, 1353, 1309, 1353, 1310, 1356, 1309, 1356, 1310, 1903, 1313, - 1309, 1359, 1309, 1360, 1309, 1361, 1309, 1362, 1309, 1368, 1309, - 1407, 2666, 2663, 2667, 2663, 1906, 2668, 2677, 2669, 2677, 2669, - 2677, 2678, 2669, 2677, 2679, 2669, 2677, 2680, 2669, 2677, 2681, - 2669, 2677, 2682, 1907, 1408, 2756, 2683, 2677, 2684, 2677, 2683, - 2677, 2678, 2684, 2677, 2678, 2683, 2677, 2679, 2684, 2677, 2679, - 1913, 1409, 1917, 1915, 1918, 2758, 1923, 1898, 1410, 1926, 1928, - 1932, 1411, 1899, 2760, 2761, 1412, 2762, 1936, 2763, 1938, 1941, - 1943, 2764, 2754, 2765, 1945, 2766, 1947, 2718, 1413, 1951, 1952, - 1415, 1953, 1588, 2767, 2768, 2719, 2720, 1773, 1777, 1774, 1775, - 1778, 2794, 1957, 1779, 2729, 1772, 1785, 1786, 1958, 1394, 1790, - 1789, 2730, 1783, 2067, 1796, 2731, 2732, 1797, 1802, 1416, 1801, - 1800, 1395, 1803, 1806, 1963, 1805, 1808, 2693, 1811, 2755, 2733, - 1962, 1814, 2735, 1819, 1821, 1822, 1964, 2736, 1824, 1825, 2737, - 2738, 1500, 1831, 1833, 1396, 1834, 1397, 1965, 1840, 1841, 1843, - 1844, 1966, 1847, 1398, 1849, 2739, 1851, 1967, 2740, 1854, 2709, - 1856, 2741, 1969, 2742, 2743, 1399, 1971, 1400, 1864, 2769, 2745, - 2744, 2746, 2747, 1866, 1968, 1867, 1869, 1402, 1870, 1970, 1403, - 1404, 2749, 1872, 1874, 1975, 1877, 1405, 2750, 1885, 2751, 1976, - 2752, 1442, 1440, 1443, 2691, 1450, 1454, 1455, 1457, 1459, 1460, - 1463, 1461, 1370, 2695, 1466, 1467, 1468, 1473, 2692, 1371, 1469, - 1475, 2694, 1478, 1479, 1448, 1480, 1481, 2789, 1487, 1488, 1373, - 1493, 1494, 1495, 1496, 1374, 1501, 1502, 1505, 1507, 1508, 1509, - 1510, 1512, 1513, 1514, 1515, 1517, 1518, 2698, 1804, 1520, 1521, - 2699, 1523, 1524, 1525, 1532, 1528, 1530, 1531, 1533, 1535, 1536, - 1537, 1539, 1540, 1542, 1544, 1545, 1547, 1554, 1549, 1555, 1550, - 1552, 1489, 1570, 1557, 1558, 1559, 1556, 1561, 1560, 1566, 2700, - 1571, 1572, 1573, 1574, 1575, 1580, 2701, 2702, 1583, 1584, 1585, - 1582, 1587, 1375, 1376, 1589, 1591, 2703, 1593, 1594, 1595, 1597, - 2704, 1598, 1599, 1637, 1600, 1377, 1602, 1606, 1608, 1607, 2706, - 1610, 2707, 1613, 1612, 1614, 1617, 1618, 1378, 1619, 1620, 1621, - 1622, 1379, 2708, 1380, 1625, 1626, 1627, 1629, 2799, 1634, 2710, - 1636, 1381, 2717, 2759, 1638, 1640, 1382, 1642, 1645, 1646, 1648, - 1652, 1384, 1383, 1653, 2711, 1654, 1659, 1660, 1661, 1664, 1665, - 1669, 1667, 1668, 1670, 1671, 1672, 1674, 1675, 1678, 1679, 1683, - 1687, 2714, 1686, 1684, 1688, 1690, 1695, 2715, 1697, 1694, 1692, - 1385, 1699, 1701, 1703, 1700, 1386, 1705, 1707, 2716, 1712, 1722, - 1714, 1389, 1717, 1388, 1387, 1476, 1477, 1723, 1718, 1950, 1414, - 1724, 1725, 1726, 1730, 1728, 2721, 1390, 1735, 1732, 1738, 1740, - 2723, 1741, 1737, 1743, 1391, 1744, 1745, 1746, 1749, 2724, 1751, - 1392, 1753, 2725, 1754, 1393, 1755, 1758, 1760, 1761, 2726, 2705, - 2727, 1762, 2728, 1765, 1767, 1763, 1769, 2046, 1721, 2060, 2051, - 1791, 1439, 1522, 2161, 1578, 2087, 1541, 1577, 1860, 1937, 1999, - 2012, 2024, 2074, 1747, 1770, 1810, 1836, 1985, 2082, 2135, 1444, - 1516, 1752, 1818, 1998, 2146, 1611, 1798, 1994, 2028, 1680, 1954, - 2015, 1776, 1828, 2076, 1452, 1482, 1504, 1704, 1750, 1817, 1863, - 1942, 1996, 2001, 2058, 2117, 2139, 2145, 1889, 1924, 1978, 2094, - 2147, 2037, 1569, 1635, 1909, 1948, 1823, 1876, 2050, 2115, 1568, - 1603, 1748, 1781, 1793, 1921, 1930, 2102, 1503, 1949, 1485, 1484, - 1896, 1925, 1984, 2104, 2044, 1681, 2040, 1441, 1649, 1832, 1878, - 1456, 1643, 1437, 1766, 1708, 1920, 1519, 1564, 1865, 1986, 2033, - 2068, 1764, 1685, 1691, 1853, 1446, 1471, 1483, 1739, 1916, 1960, - 2036, 2086, 1506, 1529, 1581, 1633, 1710, 1799, 1879, 2099, 2137, - 2148, 2151, 1498, 1720, 1756, 2066, 1623, 1666, 1673, 1702, 1795, - 1812, 1845, 1894, 1927, 1946, 2062, 1988, 2070, 2095, 1490, 1499, - 1534, 1809, 2019, 1628, 1647, 1689, 1759, 1908, 1830, 1449, 1553, - 1616, 1650, 1835, 1842, 1939, 1944, 2088, 2114, 2118, 2124, 1453, - 1893, 2084, 2110, 1656, 1445, 1462, 1596, 1601, 1709, 1815, 1859, - 1991, 2073, 2159, 1716, 2101, 1497, 1731, 1734, 1787, 1838, 1852, - 1873, 1919, 2127, 1472, 1676, 2105, 1458, 1609, 1782, 2063, 1641, - 1658, 1736, 2107, 1491, 1526, 1605, 1713, 1727, 1742, 1768, 1837, - 1855, 1935, 2020, 2023, 2085, 2112, 1511, 1788, 1527, 1816, 1846, - 1995, 2108, 2141, 2149, 1733, 1780, 1955, 1902, 1904, 1911, 1827, - 1807, 2043, 1447, 1972, 1492, 1624, 1682, 1914, 1592, 1771, 1719, - 2065, 2016, 2103, 2030, 1631, 1464, 1546, 1434, 2773, 1563, 1435, - 1715, 2797, 2798, 1486, 1829, 1861, 1880, 1887, 1888, 2119, 1912, - 1940, 1997, 2774, 2039, 2071, 2079, 2775, 2129, 2130, 2131, 2144, - 2077, 2109, 1543, 1551, 1562, 1565, 1604, 1663, 1711, 1784, 1794, - 1813, 1820, 1839, 1875, 1881, 1883, 1882, 1884, 1886, 1890, 1891, - 1900, 1905, 1929, 1931, 1934, 1956, 1961, 1987, 2026, 2031, 2041, - 2042, 2052, 2053, 2069, 2113, 2122, 2126, 1651, 2734, 1959, 2009, - 1438, 1470, 1451, 1465, 1474, 1538, 1548, 1567, 1576, 1579, 1586, - 1590, 1630, 1632, 1639, 1644, 1655, 1657, 1662, 1677, 1693, 1696, - 1698, 1706, 1729, 1757, 1792, 1871, 1826, 1848, 1850, 1857, 1858, - 1862, 1868, 1901, 1910, 1922, 1933, 1973, 1983, 2010, 2027, 2029, - 2034, 2035, 2038, 2045, 2072, 2083, 2090, 2106, 2120, 2123, 2138, - 2713, 2712, 2722, 1401, 2748, 2757, 2781, 2158, 2160, 2032, 2047, - 2780, 2048, 2049, 2054, 665, 677, 667, 677, 2002, 669, 677, 2055, 671, - 677, 673, 677, 2782, 675, 677, 2696, 496, 480, 510, 481, 2056, 2003, - 2059, 508, 486, 508, 487, 508, 484, 486, 508, 484, 487, 488, 481, 488, - 482, 488, 484, 489, 484, 490, 484, 491, 484, 492, 484, 493, 484, 494, - 484, 495, 484, 496, 484, 497, 484, 678, 677, 499, 484, 680, 677, 500, - 484, 682, 677, 683, 677, 686, 677, 504, 484, 2005, 505, 484, 506, 484, - 507, 484, 509, 484, 493, 483, 489, 485, 498, 485, 504, 485, 2078, - 2080, 2785, 2004, 2081, 2089, 2092, 2093, 2091, 2007, 2096, 2097, - 2786, 2098, 1426, 1974, 2006, 2100, 2787, 1427, 2771, 2111, 1615, - 2116, 2788, 2772, 1428, 1429, 2008, 2121, 2791, 1430, 2792, 2125, - 2793, 2128, 1431, 2011, 2132, 2133, 2134, 2136, 1432, 1979, 1421, - 2061, 2140, 2142, 1433, 2013, 2143, 2795, 2796, 2014, 2150, 1436, - 2152, 1422, 2153, 2154, 2155, 2156, 2157, 2017, 2800, 1980, 2018, - 2777, 2697, 2021, 2022, 1423, 1981, 2025, 1372, 2778, 2057, 2779, - 1424, 2770, 1425, 5, 338, 31, 338, 6, 325, 32, 325, 6, 336, 32, 336, - 6, 345, 32, 345, 7, 340, 320, 33, 340, 320, 8, 325, 34, 325, 8, 336, - 34, 336, 8, 345, 34, 345, 8, 340, 34, 340, 8, 342, 34, 342, 9, 323, - 319, 35, 323, 319, 9, 323, 320, 35, 323, 320, 9, 342, 35, 342, 9, 344, - 35, 344, 9, 340, 324, 35, 340, 324, 10, 325, 36, 325, 11, 323, 37, - 323, 12, 325, 38, 325, 12, 336, 38, 336, 12, 326, 38, 326, 12, 340, - 38, 340, 12, 343, 38, 343, 13, 344, 39, 344, 13, 326, 320, 39, 326, - 320, 15, 320, 41, 320, 15, 336, 41, 336, 15, 345, 41, 345, 16, 336, - 42, 336, 16, 336, 323, 42, 336, 323, 16, 345, 42, 345, 16, 342, 42, - 342, 17, 320, 43, 320, 17, 325, 43, 325, 17, 336, 43, 336, 18, 325, - 44, 325, 18, 336, 44, 336, 18, 345, 44, 345, 18, 342, 44, 342, 19, - 322, 320, 45, 322, 320, 19, 322, 326, 45, 322, 326, 19, 323, 319, 45, - 323, 319, 19, 323, 320, 45, 323, 320, 20, 320, 46, 320, 20, 325, 46, - 325, 21, 325, 47, 325, 21, 336, 47, 336, 21, 336, 323, 47, 336, 323, - 21, 345, 47, 345, 22, 325, 48, 325, 22, 336, 48, 336, 22, 320, 325, - 48, 320, 325, 22, 330, 325, 48, 330, 325, 22, 336, 325, 48, 336, 325, - 23, 325, 49, 325, 23, 336, 49, 336, 23, 345, 49, 345, 23, 342, 49, - 342, 24, 337, 50, 337, 24, 344, 50, 344, 24, 342, 50, 342, 24, 322, - 320, 50, 322, 320, 24, 323, 326, 50, 323, 326, 25, 322, 51, 322, 25, - 336, 51, 336, 26, 319, 52, 319, 26, 320, 52, 320, 26, 326, 52, 326, - 26, 325, 52, 325, 26, 336, 52, 336, 27, 325, 53, 325, 27, 326, 53, - 326, 28, 325, 54, 325, 29, 321, 55, 321, 29, 336, 55, 336, 29, 345, - 55, 345, 38, 345, 49, 326, 52, 328, 54, 328, 224, 325, 1417, 5, 336, - 31, 336, 5, 327, 31, 327, 5, 321, 320, 31, 321, 320, 5, 321, 319, 31, - 321, 319, 5, 321, 327, 31, 321, 327, 5, 321, 322, 31, 321, 322, 5, - 336, 321, 31, 336, 321, 5, 324, 320, 31, 324, 320, 5, 324, 319, 31, - 324, 319, 5, 324, 327, 31, 324, 327, 5, 324, 322, 31, 324, 322, 5, - 336, 324, 31, 336, 324, 9, 336, 35, 336, 9, 327, 35, 327, 9, 322, 35, - 322, 9, 321, 320, 35, 321, 320, 9, 321, 319, 35, 321, 319, 9, 321, - 327, 35, 321, 327, 9, 321, 322, 35, 321, 322, 9, 336, 321, 35, 336, - 321, 13, 327, 39, 327, 13, 336, 39, 336, 19, 336, 45, 336, 19, 327, - 45, 327, 19, 321, 320, 45, 321, 320, 19, 321, 319, 45, 321, 319, 19, - 321, 327, 45, 321, 327, 19, 321, 322, 45, 321, 322, 19, 336, 321, 45, - 336, 321, 19, 335, 320, 45, 335, 320, 19, 335, 319, 45, 335, 319, 19, - 335, 327, 45, 335, 327, 19, 335, 322, 45, 335, 322, 19, 335, 336, 45, - 335, 336, 24, 336, 50, 336, 24, 327, 50, 327, 24, 335, 320, 50, 335, - 320, 24, 335, 319, 50, 335, 319, 24, 335, 327, 50, 335, 327, 24, 335, - 322, 50, 335, 322, 24, 335, 336, 50, 335, 336, 28, 319, 54, 319, 28, - 336, 54, 336, 28, 327, 54, 327, 28, 322, 54, 322, 380, 333, 380, 334, - 380, 333, 319, 380, 334, 319, 380, 333, 320, 380, 334, 320, 380, 333, - 349, 380, 334, 349, 365, 333, 365, 334, 365, 333, 319, 365, 334, 319, - 365, 333, 320, 365, 334, 320, 365, 333, 349, 365, 334, 349, 381, 333, - 381, 334, 381, 333, 319, 381, 334, 319, 381, 333, 320, 381, 334, 320, - 366, 333, 366, 334, 366, 333, 319, 366, 334, 319, 366, 333, 320, 366, - 334, 320, 382, 333, 382, 334, 382, 333, 319, 382, 334, 319, 382, 333, - 320, 382, 334, 320, 382, 333, 349, 382, 334, 349, 367, 333, 367, 334, - 367, 333, 319, 367, 334, 319, 367, 333, 320, 367, 334, 320, 367, 333, - 349, 367, 334, 349, 383, 333, 383, 334, 383, 333, 319, 383, 334, 319, - 383, 333, 320, 383, 334, 320, 383, 333, 349, 383, 334, 349, 368, 333, - 368, 334, 368, 333, 319, 368, 334, 319, 368, 333, 320, 368, 334, 320, - 368, 333, 349, 368, 334, 349, 384, 333, 384, 334, 384, 333, 319, 384, - 334, 319, 384, 333, 320, 384, 334, 320, 369, 333, 369, 334, 369, 333, - 319, 369, 334, 319, 369, 333, 320, 369, 334, 320, 386, 333, 386, 334, - 386, 333, 319, 386, 334, 319, 386, 333, 320, 386, 334, 320, 386, 333, - 349, 386, 334, 349, 371, 334, 371, 334, 319, 371, 334, 320, 371, 334, - 349, 387, 333, 387, 334, 387, 333, 319, 387, 334, 319, 387, 333, 320, - 387, 334, 320, 387, 333, 349, 387, 334, 349, 372, 333, 372, 334, 372, - 333, 319, 372, 334, 319, 372, 333, 320, 372, 334, 320, 372, 333, 349, - 372, 334, 349, 380, 319, 381, 319, 382, 319, 383, 319, 384, 319, 386, - 319, 387, 319, 380, 333, 352, 380, 334, 352, 380, 333, 319, 352, 380, - 334, 319, 352, 380, 333, 320, 352, 380, 334, 320, 352, 380, 333, 349, - 352, 380, 334, 349, 352, 365, 333, 352, 365, 334, 352, 365, 333, 319, - 352, 365, 334, 319, 352, 365, 333, 320, 352, 365, 334, 320, 352, 365, - 333, 349, 352, 365, 334, 349, 352, 382, 333, 352, 382, 334, 352, 382, - 333, 319, 352, 382, 334, 319, 352, 382, 333, 320, 352, 382, 334, 320, - 352, 382, 333, 349, 352, 382, 334, 349, 352, 367, 333, 352, 367, 334, - 352, 367, 333, 319, 352, 367, 334, 319, 352, 367, 333, 320, 352, 367, - 334, 320, 352, 367, 333, 349, 352, 367, 334, 349, 352, 387, 333, 352, - 387, 334, 352, 387, 333, 319, 352, 387, 334, 319, 352, 387, 333, 320, - 352, 387, 334, 320, 352, 387, 333, 349, 352, 387, 334, 349, 352, 372, - 333, 352, 372, 334, 352, 372, 333, 319, 352, 372, 334, 319, 352, 372, - 333, 320, 352, 372, 334, 320, 352, 372, 333, 349, 352, 372, 334, 349, - 352, 380, 324, 380, 323, 380, 319, 352, 380, 352, 380, 320, 352, 502, - 484, 380, 349, 380, 349, 352, 365, 324, 365, 323, 365, 319, 365, 352, - 56, 349, 382, 319, 352, 382, 352, 382, 320, 352, 382, 349, 382, 349, - 352, 366, 319, 367, 319, 367, 352, 1108, 319, 1108, 320, 1108, 349, - 383, 324, 383, 323, 383, 326, 319, 383, 349, 383, 326, 349, 368, 324, - 368, 323, 368, 319, 1163, 319, 1163, 320, 1163, 349, 386, 324, 386, - 323, 386, 326, 319, 385, 333, 385, 334, 386, 349, 386, 326, 349, 371, - 324, 371, 323, 371, 319, 370, 334, 56, 319, 30, 387, 319, 352, 387, - 352, 387, 320, 352, 387, 349, 387, 349, 352, 369, 319, 372, 319, 372, - 352, 57 -}; + 0, 1166, 1167, 2783, 2784, 1989, 2075, 2064, 5, 319, 5, 320, 5, 321, 5, 322, 5, 326, 5, + 328, 7, 340, 9, 319, 9, 320, 9, 321, 9, 326, 13, 319, 13, 320, 13, 321, 13, 326, + 18, 322, 19, 319, 19, 320, 19, 321, 19, 322, 19, 326, 24, 319, 24, 320, 24, 321, 24, + 326, 28, 320, 31, 319, 31, 320, 31, 321, 31, 322, 31, 326, 31, 328, 33, 340, 35, 319, + 35, 320, 35, 321, 35, 326, 39, 319, 39, 320, 39, 321, 39, 326, 44, 322, 45, 319, 45, + 320, 45, 321, 45, 322, 45, 326, 50, 319, 50, 320, 50, 321, 50, 326, 54, 320, 54, 326, + 5, 323, 31, 323, 5, 324, 31, 324, 5, 341, 31, 341, 7, 320, 33, 320, 7, 321, 33, + 321, 7, 325, 33, 325, 7, 330, 33, 330, 8, 330, 34, 330, 9, 323, 35, 323, 9, 324, + 35, 324, 9, 325, 35, 325, 9, 341, 35, 341, 9, 330, 35, 330, 11, 321, 37, 321, 11, + 324, 37, 324, 11, 325, 37, 325, 11, 340, 37, 340, 12, 321, 38, 321, 372, 13, 322, 39, + 322, 13, 323, 39, 323, 13, 324, 39, 324, 13, 341, 39, 341, 13, 325, 14, 321, 40, 321, + 15, 340, 41, 340, 16, 320, 42, 320, 16, 340, 42, 340, 16, 330, 42, 330, 18, 320, 44, + 320, 18, 340, 44, 340, 18, 330, 44, 330, 19, 323, 45, 323, 19, 324, 45, 324, 19, 329, + 45, 329, 21, 320, 47, 320, 21, 340, 47, 340, 21, 330, 47, 330, 22, 320, 48, 320, 22, + 321, 48, 321, 22, 340, 48, 340, 22, 330, 48, 330, 23, 340, 49, 340, 23, 330, 49, 330, + 24, 322, 50, 322, 24, 323, 50, 323, 24, 324, 50, 324, 24, 328, 50, 328, 24, 329, 50, + 329, 24, 341, 50, 341, 26, 321, 52, 321, 28, 321, 54, 321, 28, 326, 29, 320, 55, 320, + 29, 325, 55, 325, 29, 330, 55, 330, 1171, 346, 1172, 346, 19, 335, 45, 335, 1173, 346, 24, + 335, 50, 335, 2000, 5, 330, 31, 330, 13, 330, 39, 330, 19, 330, 45, 330, 24, 330, 50, + 330, 24, 326, 323, 50, 326, 323, 24, 326, 320, 50, 326, 320, 24, 326, 330, 50, 326, 330, + 24, 326, 319, 50, 326, 319, 5, 326, 323, 31, 326, 323, 5, 325, 323, 31, 325, 323, 65, + 323, 93, 323, 11, 330, 37, 330, 15, 330, 41, 330, 19, 341, 45, 341, 19, 341, 323, 45, + 341, 323, 229, 330, 317, 330, 40, 330, 11, 320, 37, 320, 18, 319, 44, 319, 5, 328, 320, + 31, 328, 320, 65, 320, 93, 320, 81, 320, 109, 320, 5, 331, 31, 331, 5, 332, 31, 332, + 9, 331, 35, 331, 9, 332, 35, 332, 13, 331, 39, 331, 13, 332, 39, 332, 19, 331, 45, + 331, 19, 332, 45, 332, 21, 331, 47, 331, 21, 332, 47, 332, 24, 331, 50, 331, 24, 332, + 50, 332, 22, 339, 48, 339, 23, 339, 49, 339, 12, 330, 38, 330, 1189, 346, 1191, 346, 9, + 340, 35, 340, 19, 326, 323, 45, 326, 323, 19, 322, 323, 45, 322, 323, 19, 325, 45, 325, + 19, 325, 323, 45, 325, 323, 28, 323, 54, 323, 1193, 346, 1195, 346, 1197, 346, 1199, 346, 3, + 346, 1203, 346, 1201, 346, 2, 346, 4, 346, 1205, 346, 1206, 346, 1212, 346, 1213, 346, 1216, 346, + 1217, 346, 1220, 346, 1221, 346, 1226, 346, 1227, 346, 1230, 346, 1231, 346, 1993, 1236, 346, 1237, 346, + 1238, 346, 1239, 346, 2790, 1222, 346, 1223, 346, 1234, 346, 1235, 346, 1244, 346, 1245, 346, 1246, 346, + 1247, 346, 1260, 1261, 333, 498, 484, 318, 1, 501, 484, 56, 320, 365, 320, 58, 366, 320, 367, + 320, 368, 320, 369, 320, 371, 320, 372, 320, 383, 326, 320, 503, 484, 368, 326, 371, 326, 380, + 320, 381, 320, 382, 320, 383, 320, 386, 326, 320, 384, 320, 386, 320, 387, 320, 1418, 393, 320, + 393, 326, 406, 319, 406, 326, 405, 320, 399, 326, 411, 320, 409, 319, 413, 324, 409, 324, 1982, + 422, 324, 419, 319, 419, 326, 418, 320, 433, 326, 424, 320, 422, 319, 426, 324, 1419, 438, 331, + 439, 331, 1990, 407, 324, 420, 324, 404, 324, 417, 324, 404, 326, 417, 326, 406, 324, 419, 324, + 450, 326, 451, 326, 407, 326, 420, 326, 408, 326, 421, 326, 409, 323, 422, 323, 409, 326, 422, + 326, 412, 326, 425, 326, 464, 326, 465, 326, 416, 326, 429, 326, 413, 323, 426, 323, 413, 326, + 426, 326, 413, 329, 426, 329, 414, 326, 427, 326, 415, 326, 428, 326, 1977, 516, 519, 516, 520, + 517, 520, 516, 521, 518, 520, 1420, 527, 520, 523, 520, 525, 520, 1992, 534, 542, 538, 542, 540, + 542, 528, 542, 529, 542, 530, 542, 531, 542, 532, 542, 533, 542, 536, 542, 537, 542, 556, 555, + 556, 559, 551, 554, 552, 554, 553, 554, 567, 571, 570, 571, 2776, 563, 571, 564, 571, 565, 571, + 566, 571, 1180, 346, 1182, 346, 1181, 346, 1259, 346, 580, 584, 580, 579, 580, 585, 576, 578, 577, + 578, 588, 596, 591, 590, 592, 590, 591, 596, 1183, 346, 1185, 346, 597, 599, 1187, 346, 600, 608, + 603, 608, 603, 609, 603, 602, 603, 602, 608, 611, 610, 612, 610, 611, 616, 619, 617, 619, 618, + 619, 618, 617, 619, 624, 626, 660, 628, 660, 630, 660, 632, 660, 634, 660, 625, 659, 637, 638, + 637, 640, 657, 644, 658, 644, 637, 644, 647, 660, 649, 660, 651, 660, 653, 660, 655, 660, 646, + 659, 1892, 1895, 1406, 662, 664, 1897, 1263, 1309, 1265, 1309, 1267, 1309, 1269, 1309, 1271, 1309, 1273, 1309, + 1275, 1309, 1277, 1309, 1279, 1309, 1281, 1309, 1283, 1309, 1285, 1309, 1287, 1309, 1289, 1309, 1291, 1309, 1293, + 1309, 1293, 1310, 1296, 1309, 1296, 1310, 1299, 1309, 1299, 1310, 1302, 1309, 1302, 1310, 1305, 1309, 1305, 1310, + 1262, 1309, 2753, 2656, 2662, 2658, 2662, 1311, 1309, 2660, 2662, 1314, 1309, 1316, 1309, 1318, 1309, 1320, 1309, + 1322, 1309, 1324, 1309, 1326, 1309, 1328, 1309, 1330, 1309, 1332, 1309, 1334, 1309, 1336, 1309, 1338, 1309, 1340, + 1309, 1342, 1309, 1344, 1309, 1344, 1310, 1347, 1309, 1347, 1310, 1350, 1309, 1350, 1310, 1353, 1309, 1353, 1310, + 1356, 1309, 1356, 1310, 1903, 1313, 1309, 1359, 1309, 1360, 1309, 1361, 1309, 1362, 1309, 1368, 1309, 1407, 2666, + 2663, 2667, 2663, 1906, 2668, 2677, 2669, 2677, 2669, 2677, 2678, 2669, 2677, 2679, 2669, 2677, 2680, 2669, 2677, + 2681, 2669, 2677, 2682, 1907, 1408, 2756, 2683, 2677, 2684, 2677, 2683, 2677, 2678, 2684, 2677, 2678, 2683, 2677, + 2679, 2684, 2677, 2679, 1913, 1409, 1917, 1915, 1918, 2758, 1923, 1898, 1410, 1926, 1928, 1932, 1411, 1899, 2760, + 2761, 1412, 2762, 1936, 2763, 1938, 1941, 1943, 2764, 2754, 2765, 1945, 2766, 1947, 2718, 1413, 1951, 1952, 1415, + 1953, 1588, 2767, 2768, 2719, 2720, 1773, 1777, 1774, 1775, 1778, 2794, 1957, 1779, 2729, 1772, 1785, 1786, 1958, + 1394, 1790, 1789, 2730, 1783, 2067, 1796, 2731, 2732, 1797, 1802, 1416, 1801, 1800, 1395, 1803, 1806, 1963, 1805, + 1808, 2693, 1811, 2755, 2733, 1962, 1814, 2735, 1819, 1821, 1822, 1964, 2736, 1824, 1825, 2737, 2738, 1500, 1831, + 1833, 1396, 1834, 1397, 1965, 1840, 1841, 1843, 1844, 1966, 1847, 1398, 1849, 2739, 1851, 1967, 2740, 1854, 2709, + 1856, 2741, 1969, 2742, 2743, 1399, 1971, 1400, 1864, 2769, 2745, 2744, 2746, 2747, 1866, 1968, 1867, 1869, 1402, + 1870, 1970, 1403, 1404, 2749, 1872, 1874, 1975, 1877, 1405, 2750, 1885, 2751, 1976, 2752, 1442, 1440, 1443, 2691, + 1450, 1454, 1455, 1457, 1459, 1460, 1463, 1461, 1370, 2695, 1466, 1467, 1468, 1473, 2692, 1371, 1469, 1475, 2694, + 1478, 1479, 1448, 1480, 1481, 2789, 1487, 1488, 1373, 1493, 1494, 1495, 1496, 1374, 1501, 1502, 1505, 1507, 1508, + 1509, 1510, 1512, 1513, 1514, 1515, 1517, 1518, 2698, 1804, 1520, 1521, 2699, 1523, 1524, 1525, 1532, 1528, 1530, + 1531, 1533, 1535, 1536, 1537, 1539, 1540, 1542, 1544, 1545, 1547, 1554, 1549, 1555, 1550, 1552, 1489, 1570, 1557, + 1558, 1559, 1556, 1561, 1560, 1566, 2700, 1571, 1572, 1573, 1574, 1575, 1580, 2701, 2702, 1583, 1584, 1585, 1582, + 1587, 1375, 1376, 1589, 1591, 2703, 1593, 1594, 1595, 1597, 2704, 1598, 1599, 1637, 1600, 1377, 1602, 1606, 1608, + 1607, 2706, 1610, 2707, 1613, 1612, 1614, 1617, 1618, 1378, 1619, 1620, 1621, 1622, 1379, 2708, 1380, 1625, 1626, + 1627, 1629, 2799, 1634, 2710, 1636, 1381, 2717, 2759, 1638, 1640, 1382, 1642, 1645, 1646, 1648, 1652, 1384, 1383, + 1653, 2711, 1654, 1659, 1660, 1661, 1664, 1665, 1669, 1667, 1668, 1670, 1671, 1672, 1674, 1675, 1678, 1679, 1683, + 1687, 2714, 1686, 1684, 1688, 1690, 1695, 2715, 1697, 1694, 1692, 1385, 1699, 1701, 1703, 1700, 1386, 1705, 1707, + 2716, 1712, 1722, 1714, 1389, 1717, 1388, 1387, 1476, 1477, 1723, 1718, 1950, 1414, 1724, 1725, 1726, 1730, 1728, + 2721, 1390, 1735, 1732, 1738, 1740, 2723, 1741, 1737, 1743, 1391, 1744, 1745, 1746, 1749, 2724, 1751, 1392, 1753, + 2725, 1754, 1393, 1755, 1758, 1760, 1761, 2726, 2705, 2727, 1762, 2728, 1765, 1767, 1763, 1769, 2046, 1721, 2060, + 2051, 1791, 1439, 1522, 2161, 1578, 2087, 1541, 1577, 1860, 1937, 1999, 2012, 2024, 2074, 1747, 1770, 1810, 1836, + 1985, 2082, 2135, 1444, 1516, 1752, 1818, 1998, 2146, 1611, 1798, 1994, 2028, 1680, 1954, 2015, 1776, 1828, 2076, + 1452, 1482, 1504, 1704, 1750, 1817, 1863, 1942, 1996, 2001, 2058, 2117, 2139, 2145, 1889, 1924, 1978, 2094, 2147, + 2037, 1569, 1635, 1909, 1948, 1823, 1876, 2050, 2115, 1568, 1603, 1748, 1781, 1793, 1921, 1930, 2102, 1503, 1949, + 1485, 1484, 1896, 1925, 1984, 2104, 2044, 1681, 2040, 1441, 1649, 1832, 1878, 1456, 1643, 1437, 1766, 1708, 1920, + 1519, 1564, 1865, 1986, 2033, 2068, 1764, 1685, 1691, 1853, 1446, 1471, 1483, 1739, 1916, 1960, 2036, 2086, 1506, + 1529, 1581, 1633, 1710, 1799, 1879, 2099, 2137, 2148, 2151, 1498, 1720, 1756, 2066, 1623, 1666, 1673, 1702, 1795, + 1812, 1845, 1894, 1927, 1946, 2062, 1988, 2070, 2095, 1490, 1499, 1534, 1809, 2019, 1628, 1647, 1689, 1759, 1908, + 1830, 1449, 1553, 1616, 1650, 1835, 1842, 1939, 1944, 2088, 2114, 2118, 2124, 1453, 1893, 2084, 2110, 1656, 1445, + 1462, 1596, 1601, 1709, 1815, 1859, 1991, 2073, 2159, 1716, 2101, 1497, 1731, 1734, 1787, 1838, 1852, 1873, 1919, + 2127, 1472, 1676, 2105, 1458, 1609, 1782, 2063, 1641, 1658, 1736, 2107, 1491, 1526, 1605, 1713, 1727, 1742, 1768, + 1837, 1855, 1935, 2020, 2023, 2085, 2112, 1511, 1788, 1527, 1816, 1846, 1995, 2108, 2141, 2149, 1733, 1780, 1955, + 1902, 1904, 1911, 1827, 1807, 2043, 1447, 1972, 1492, 1624, 1682, 1914, 1592, 1771, 1719, 2065, 2016, 2103, 2030, + 1631, 1464, 1546, 1434, 2773, 1563, 1435, 1715, 2797, 2798, 1486, 1829, 1861, 1880, 1887, 1888, 2119, 1912, 1940, + 1997, 2774, 2039, 2071, 2079, 2775, 2129, 2130, 2131, 2144, 2077, 2109, 1543, 1551, 1562, 1565, 1604, 1663, 1711, + 1784, 1794, 1813, 1820, 1839, 1875, 1881, 1883, 1882, 1884, 1886, 1890, 1891, 1900, 1905, 1929, 1931, 1934, 1956, + 1961, 1987, 2026, 2031, 2041, 2042, 2052, 2053, 2069, 2113, 2122, 2126, 1651, 2734, 1959, 2009, 1438, 1470, 1451, + 1465, 1474, 1538, 1548, 1567, 1576, 1579, 1586, 1590, 1630, 1632, 1639, 1644, 1655, 1657, 1662, 1677, 1693, 1696, + 1698, 1706, 1729, 1757, 1792, 1871, 1826, 1848, 1850, 1857, 1858, 1862, 1868, 1901, 1910, 1922, 1933, 1973, 1983, + 2010, 2027, 2029, 2034, 2035, 2038, 2045, 2072, 2083, 2090, 2106, 2120, 2123, 2138, 2713, 2712, 2722, 1401, 2748, + 2757, 2781, 2158, 2160, 2032, 2047, 2780, 2048, 2049, 2054, 665, 677, 667, 677, 2002, 669, 677, 2055, 671, + 677, 673, 677, 2782, 675, 677, 2696, 496, 480, 510, 481, 2056, 2003, 2059, 508, 486, 508, 487, 508, + 484, 486, 508, 484, 487, 488, 481, 488, 482, 488, 484, 489, 484, 490, 484, 491, 484, 492, 484, + 493, 484, 494, 484, 495, 484, 496, 484, 497, 484, 678, 677, 499, 484, 680, 677, 500, 484, 682, + 677, 683, 677, 686, 677, 504, 484, 2005, 505, 484, 506, 484, 507, 484, 509, 484, 493, 483, 489, + 485, 498, 485, 504, 485, 2078, 2080, 2785, 2004, 2081, 2089, 2092, 2093, 2091, 2007, 2096, 2097, 2786, 2098, + 1426, 1974, 2006, 2100, 2787, 1427, 2771, 2111, 1615, 2116, 2788, 2772, 1428, 1429, 2008, 2121, 2791, 1430, 2792, + 2125, 2793, 2128, 1431, 2011, 2132, 2133, 2134, 2136, 1432, 1979, 1421, 2061, 2140, 2142, 1433, 2013, 2143, 2795, + 2796, 2014, 2150, 1436, 2152, 1422, 2153, 2154, 2155, 2156, 2157, 2017, 2800, 1980, 2018, 2777, 2697, 2021, 2022, + 1423, 1981, 2025, 1372, 2778, 2057, 2779, 1424, 2770, 1425, 5, 338, 31, 338, 6, 325, 32, 325, 6, + 336, 32, 336, 6, 345, 32, 345, 7, 340, 320, 33, 340, 320, 8, 325, 34, 325, 8, 336, + 34, 336, 8, 345, 34, 345, 8, 340, 34, 340, 8, 342, 34, 342, 9, 323, 319, 35, 323, + 319, 9, 323, 320, 35, 323, 320, 9, 342, 35, 342, 9, 344, 35, 344, 9, 340, 324, 35, + 340, 324, 10, 325, 36, 325, 11, 323, 37, 323, 12, 325, 38, 325, 12, 336, 38, 336, 12, + 326, 38, 326, 12, 340, 38, 340, 12, 343, 38, 343, 13, 344, 39, 344, 13, 326, 320, 39, + 326, 320, 15, 320, 41, 320, 15, 336, 41, 336, 15, 345, 41, 345, 16, 336, 42, 336, 16, + 336, 323, 42, 336, 323, 16, 345, 42, 345, 16, 342, 42, 342, 17, 320, 43, 320, 17, 325, + 43, 325, 17, 336, 43, 336, 18, 325, 44, 325, 18, 336, 44, 336, 18, 345, 44, 345, 18, + 342, 44, 342, 19, 322, 320, 45, 322, 320, 19, 322, 326, 45, 322, 326, 19, 323, 319, 45, + 323, 319, 19, 323, 320, 45, 323, 320, 20, 320, 46, 320, 20, 325, 46, 325, 21, 325, 47, + 325, 21, 336, 47, 336, 21, 336, 323, 47, 336, 323, 21, 345, 47, 345, 22, 325, 48, 325, + 22, 336, 48, 336, 22, 320, 325, 48, 320, 325, 22, 330, 325, 48, 330, 325, 22, 336, 325, + 48, 336, 325, 23, 325, 49, 325, 23, 336, 49, 336, 23, 345, 49, 345, 23, 342, 49, 342, + 24, 337, 50, 337, 24, 344, 50, 344, 24, 342, 50, 342, 24, 322, 320, 50, 322, 320, 24, + 323, 326, 50, 323, 326, 25, 322, 51, 322, 25, 336, 51, 336, 26, 319, 52, 319, 26, 320, + 52, 320, 26, 326, 52, 326, 26, 325, 52, 325, 26, 336, 52, 336, 27, 325, 53, 325, 27, + 326, 53, 326, 28, 325, 54, 325, 29, 321, 55, 321, 29, 336, 55, 336, 29, 345, 55, 345, + 38, 345, 49, 326, 52, 328, 54, 328, 224, 325, 1417, 5, 336, 31, 336, 5, 327, 31, 327, + 5, 321, 320, 31, 321, 320, 5, 321, 319, 31, 321, 319, 5, 321, 327, 31, 321, 327, 5, + 321, 322, 31, 321, 322, 5, 336, 321, 31, 336, 321, 5, 324, 320, 31, 324, 320, 5, 324, + 319, 31, 324, 319, 5, 324, 327, 31, 324, 327, 5, 324, 322, 31, 324, 322, 5, 336, 324, + 31, 336, 324, 9, 336, 35, 336, 9, 327, 35, 327, 9, 322, 35, 322, 9, 321, 320, 35, + 321, 320, 9, 321, 319, 35, 321, 319, 9, 321, 327, 35, 321, 327, 9, 321, 322, 35, 321, + 322, 9, 336, 321, 35, 336, 321, 13, 327, 39, 327, 13, 336, 39, 336, 19, 336, 45, 336, + 19, 327, 45, 327, 19, 321, 320, 45, 321, 320, 19, 321, 319, 45, 321, 319, 19, 321, 327, + 45, 321, 327, 19, 321, 322, 45, 321, 322, 19, 336, 321, 45, 336, 321, 19, 335, 320, 45, + 335, 320, 19, 335, 319, 45, 335, 319, 19, 335, 327, 45, 335, 327, 19, 335, 322, 45, 335, + 322, 19, 335, 336, 45, 335, 336, 24, 336, 50, 336, 24, 327, 50, 327, 24, 335, 320, 50, + 335, 320, 24, 335, 319, 50, 335, 319, 24, 335, 327, 50, 335, 327, 24, 335, 322, 50, 335, + 322, 24, 335, 336, 50, 335, 336, 28, 319, 54, 319, 28, 336, 54, 336, 28, 327, 54, 327, + 28, 322, 54, 322, 380, 333, 380, 334, 380, 333, 319, 380, 334, 319, 380, 333, 320, 380, 334, + 320, 380, 333, 349, 380, 334, 349, 365, 333, 365, 334, 365, 333, 319, 365, 334, 319, 365, 333, + 320, 365, 334, 320, 365, 333, 349, 365, 334, 349, 381, 333, 381, 334, 381, 333, 319, 381, 334, + 319, 381, 333, 320, 381, 334, 320, 366, 333, 366, 334, 366, 333, 319, 366, 334, 319, 366, 333, + 320, 366, 334, 320, 382, 333, 382, 334, 382, 333, 319, 382, 334, 319, 382, 333, 320, 382, 334, + 320, 382, 333, 349, 382, 334, 349, 367, 333, 367, 334, 367, 333, 319, 367, 334, 319, 367, 333, + 320, 367, 334, 320, 367, 333, 349, 367, 334, 349, 383, 333, 383, 334, 383, 333, 319, 383, 334, + 319, 383, 333, 320, 383, 334, 320, 383, 333, 349, 383, 334, 349, 368, 333, 368, 334, 368, 333, + 319, 368, 334, 319, 368, 333, 320, 368, 334, 320, 368, 333, 349, 368, 334, 349, 384, 333, 384, + 334, 384, 333, 319, 384, 334, 319, 384, 333, 320, 384, 334, 320, 369, 333, 369, 334, 369, 333, + 319, 369, 334, 319, 369, 333, 320, 369, 334, 320, 386, 333, 386, 334, 386, 333, 319, 386, 334, + 319, 386, 333, 320, 386, 334, 320, 386, 333, 349, 386, 334, 349, 371, 334, 371, 334, 319, 371, + 334, 320, 371, 334, 349, 387, 333, 387, 334, 387, 333, 319, 387, 334, 319, 387, 333, 320, 387, + 334, 320, 387, 333, 349, 387, 334, 349, 372, 333, 372, 334, 372, 333, 319, 372, 334, 319, 372, + 333, 320, 372, 334, 320, 372, 333, 349, 372, 334, 349, 380, 319, 381, 319, 382, 319, 383, 319, + 384, 319, 386, 319, 387, 319, 380, 333, 352, 380, 334, 352, 380, 333, 319, 352, 380, 334, 319, + 352, 380, 333, 320, 352, 380, 334, 320, 352, 380, 333, 349, 352, 380, 334, 349, 352, 365, 333, + 352, 365, 334, 352, 365, 333, 319, 352, 365, 334, 319, 352, 365, 333, 320, 352, 365, 334, 320, + 352, 365, 333, 349, 352, 365, 334, 349, 352, 382, 333, 352, 382, 334, 352, 382, 333, 319, 352, + 382, 334, 319, 352, 382, 333, 320, 352, 382, 334, 320, 352, 382, 333, 349, 352, 382, 334, 349, + 352, 367, 333, 352, 367, 334, 352, 367, 333, 319, 352, 367, 334, 319, 352, 367, 333, 320, 352, + 367, 334, 320, 352, 367, 333, 349, 352, 367, 334, 349, 352, 387, 333, 352, 387, 334, 352, 387, + 333, 319, 352, 387, 334, 319, 352, 387, 333, 320, 352, 387, 334, 320, 352, 387, 333, 349, 352, + 387, 334, 349, 352, 372, 333, 352, 372, 334, 352, 372, 333, 319, 352, 372, 334, 319, 352, 372, + 333, 320, 352, 372, 334, 320, 352, 372, 333, 349, 352, 372, 334, 349, 352, 380, 324, 380, 323, + 380, 319, 352, 380, 352, 380, 320, 352, 502, 484, 380, 349, 380, 349, 352, 365, 324, 365, 323, + 365, 319, 365, 352, 56, 349, 382, 319, 352, 382, 352, 382, 320, 352, 382, 349, 382, 349, 352, + 366, 319, 367, 319, 367, 352, 1108, 319, 1108, 320, 1108, 349, 383, 324, 383, 323, 383, 326, 319, + 383, 349, 383, 326, 349, 368, 324, 368, 323, 368, 319, 1163, 319, 1163, 320, 1163, 349, 386, 324, + 386, 323, 386, 326, 319, 385, 333, 385, 334, 386, 349, 386, 326, 349, 371, 324, 371, 323, 371, + 319, 370, 334, 56, 319, 30, 387, 319, 352, 387, 352, 387, 320, 352, 387, 349, 387, 349, 352, + 369, 319, 372, 319, 372, 352, 57}; static const uint8_t decomp_idx_t1[] = { - 0, 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 7, 8, 9, 10, 11, 0, 12, 0, 0, - 0, 0, 13, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 0, 17, 18, 19, 0, - 0, 0, 20, 21, 22, 0, 23, 0, 24, 0, 25, 0, 26, 0, 0, 0, 0, 0, 27, 28, - 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, - 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 63, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 69, - 70, 71, 72, 73, 74, 75, 76 -}; + 0, 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 7, 8, 9, 10, 11, 0, 12, 0, 0, 0, 0, 13, 0, 0, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 16, 0, 17, 18, 19, 0, 0, 0, 20, 21, 22, 0, 23, 0, 24, 0, 25, 0, 26, 0, 0, 0, 0, + 0, 27, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 65, 66, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 69, 70, 71, 72, 73, 74, 75, 76}; static const uint16_t decomp_idx_t2[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16392, 16394, - 16396, 16398, 16400, 16402, 0, 16404, 16406, 16408, 16410, 16412, - 16414, 16416, 16418, 16420, 0, 16422, 16424, 16426, 16428, 16430, - 16432, 0, 0, 16434, 16436, 16438, 16440, 16442, 0, 0, 16444, 16446, - 16448, 16450, 16452, 16454, 0, 16456, 16458, 16460, 16462, 16464, - 16466, 16468, 16470, 16472, 0, 16474, 16476, 16478, 16480, 16482, - 16484, 0, 0, 16486, 16488, 16490, 16492, 16494, 0, 16496, 16498, - 16500, 16502, 16504, 16506, 16508, 16510, 16512, 16514, 16516, 16518, - 16520, 16522, 16524, 16526, 16528, 0, 0, 16530, 16532, 16534, 16536, - 16538, 16540, 16542, 16544, 16546, 16548, 16550, 16552, 16554, 16556, - 16558, 16560, 16562, 16564, 16566, 16568, 0, 0, 16571, 16573, 16575, - 16577, 16579, 16581, 16583, 16585, 16587, 0, 0, 0, 16589, 16591, - 16593, 16595, 0, 16597, 16599, 16601, 16603, 16605, 16607, 0, 0, 0, 0, - 16609, 16611, 16613, 16615, 16617, 16619, 0, 0, 0, 16621, 16623, - 16625, 16627, 16629, 16631, 0, 0, 16633, 16635, 16637, 16639, 16641, - 16643, 16645, 16647, 16649, 16651, 16653, 16655, 16657, 16659, 16661, - 16663, 16665, 16667, 0, 0, 16669, 16671, 16673, 16675, 16677, 16679, - 16681, 16683, 16685, 16687, 16689, 16691, 16693, 16695, 16697, 16699, - 16701, 16703, 16705, 16707, 16709, 16711, 16713, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16719, 16721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16725, - 16727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16730, 16732, 16734, 16736, 16738, 16740, 16742, - 16744, 33130, 33133, 33136, 33139, 33142, 33145, 33148, 33151, 0, - 33154, 33157, 33160, 33163, 16782, 16784, 0, 0, 16786, 16788, 16790, - 16792, 16794, 16796, 33182, 33185, 16804, 16806, 16808, 0, 0, 0, - 16810, 16812, 0, 0, 16814, 16816, 33202, 33205, 16824, 16826, 16828, - 16830, 16832, 16834, 16836, 16838, 16840, 16842, 16844, 16846, 16848, - 16850, 16852, 16854, 16856, 16858, 16860, 16862, 16864, 16866, 16868, - 16870, 16872, 16874, 16876, 16878, 16880, 16882, 16884, 16886, 0, 0, - 16888, 16890, 0, 0, 0, 0, 0, 0, 16776, 16779, 16896, 16898, 33284, - 33287, 33290, 33293, 16912, 16914, 33300, 33303, 16922, 16924, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 11, 0, 612, 16753, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 17003, 17005, 623, 17008, 17010, - 17012, 0, 17014, 0, 17016, 17018, 33404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17025, 17027, 17029, - 17031, 17033, 17035, 33421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17020, 17037, 17040, 17042, 17044, 0, - 0, 0, 0, 17047, 17049, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17051, 17053, 0, 17055, 0, 0, 0, 17057, 0, 0, 0, 0, 17059, - 17061, 17063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17065, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 17068, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17070, 17072, 0, 17074, 0, 0, 0, 17076, 0, 0, 0, 0, 17078, - 17080, 17082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17085, 17087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17090, 17092, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17094, 17096, 17098, 17100, 0, 0, - 17102, 17104, 0, 0, 17106, 17108, 17110, 17112, 17114, 17116, 0, 0, - 17118, 17120, 17122, 17124, 17126, 17128, 0, 0, 17130, 17132, 17134, - 17136, 17138, 17140, 17142, 17144, 17146, 17148, 17150, 17152, 0, 0, - 17154, 17156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17159, - 17161, 17163, 17165, 17167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17170, 0, 17172, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17177, 0, 0, 0, 0, 0, 0, 0, 17179, 0, 0, 17181, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17183, 17185, 17187, 17189, 17191, 17193, - 17195, 17197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17199, 17201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17203, - 17205, 0, 17207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17209, 0, 0, - 17211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17214, 17216, 17218, 0, 0, - 17220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17230, 0, - 0, 17232, 17234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17236, - 17238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17242, 17244, - 17246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17252, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17256, 0, 0, 0, 0, 0, 0, 17258, 17260, 0, 17262, 33648, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17267, 17269, 17271, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17273, 0, 17275, 33661, 17280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17284, 0, 0, 0, 0, - 17286, 0, 0, 0, 0, 17288, 0, 0, 0, 0, 17290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17294, 0, 17296, 17298, - 0, 17300, 0, 0, 0, 0, 0, 0, 0, 0, 17302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17306, 0, 0, 0, - 0, 17308, 0, 0, 0, 0, 17310, 0, 0, 0, 0, 17312, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18275, 0, 18277, 0, - 18280, 0, 18283, 0, 18285, 0, 0, 0, 18288, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 18332, 0, 18336, 0, 0, 18340, 18342, 0, 18344, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18446, 18448, 18450, 18452, - 18454, 18456, 18458, 18460, 34846, 34849, 18468, 18470, 18472, 18474, - 18476, 18478, 18480, 18482, 18484, 18486, 34872, 34875, 34878, 34881, - 18500, 18502, 18504, 18506, 34892, 34895, 18514, 18516, 18518, 18520, - 18522, 18524, 18526, 18528, 18530, 18532, 18534, 18536, 18538, 18540, - 18542, 18544, 34930, 34933, 18552, 18554, 18556, 18558, 18560, 18562, - 18564, 18566, 34952, 34955, 18574, 18576, 18578, 18580, 18582, 18584, - 18586, 18588, 18590, 18592, 18594, 18596, 18598, 18600, 18602, 18604, - 18606, 18608, 34994, 34997, 35000, 35003, 35006, 35009, 35012, 35015, - 18634, 18636, 18638, 18640, 18642, 18644, 18646, 18648, 35034, 35037, - 18656, 18658, 18660, 18662, 18664, 18666, 35052, 35055, 35058, 35061, - 35064, 35067, 18686, 18688, 18690, 18692, 18694, 18696, 18698, 18700, - 18702, 18704, 18706, 18708, 18710, 18712, 35098, 35101, 35104, 35107, - 18726, 18728, 18730, 18732, 18734, 18736, 18738, 18740, 18742, 18744, - 18746, 18748, 18750, 18752, 18754, 18756, 18758, 18760, 18762, 18764, - 18766, 18768, 18770, 18772, 18774, 18776, 18778, 18780, 18782, 18784, - 0, 18786, 0, 0, 0, 0, 18789, 18791, 18793, 18795, 35181, 35184, 35187, - 35190, 35193, 35196, 35199, 35202, 35205, 35208, 35211, 35214, 35217, - 35220, 35223, 35226, 35229, 35232, 35235, 35238, 18857, 18859, 18861, - 18863, 18865, 18867, 35253, 35256, 35259, 35262, 35265, 35268, 35271, - 35274, 35277, 35280, 18899, 18901, 18903, 18905, 18907, 18909, 18911, - 18913, 35299, 35302, 35305, 35308, 35311, 35314, 35317, 35320, 35323, - 35326, 35329, 35332, 35335, 35338, 35341, 35344, 35347, 35350, 35353, - 35356, 18975, 18977, 18979, 18981, 35367, 35370, 35373, 35376, 35379, - 35382, 35385, 35388, 35391, 35394, 19013, 19015, 19017, 19019, 19021, - 19023, 19025, 19027, 0, 0, 0, 0, 0, 0, 19029, 19031, 35417, 35420, - 35423, 35426, 35429, 35432, 19051, 19053, 35439, 35442, 35445, 35448, - 35451, 35454, 19073, 19075, 35461, 35464, 35467, 35470, 0, 0, 19089, - 19091, 35477, 35480, 35483, 35486, 0, 0, 19105, 19107, 35493, 35496, - 35499, 35502, 35505, 35508, 19127, 19129, 35515, 35518, 35521, 35524, - 35527, 35530, 19149, 19151, 35537, 35540, 35543, 35546, 35549, 35552, - 19171, 19173, 35559, 35562, 35565, 35568, 35571, 35574, 19193, 19195, - 35581, 35584, 35587, 35590, 0, 0, 19209, 19211, 35597, 35600, 35603, - 35606, 0, 0, 19225, 19227, 35613, 35616, 35619, 35622, 35625, 35628, - 0, 19247, 0, 35633, 0, 35636, 0, 35639, 19258, 19260, 35646, 35649, - 35652, 35655, 35658, 35661, 19280, 19282, 35668, 35671, 35674, 35677, - 35680, 35683, 19302, 17029, 19304, 17031, 19306, 17033, 19308, 17035, - 19310, 17040, 19312, 17042, 19314, 17044, 0, 0, 35700, 35703, 52090, - 52094, 52098, 52102, 52106, 52110, 35730, 35733, 52120, 52124, 52128, - 52132, 52136, 52140, 35760, 35763, 52150, 52154, 52158, 52162, 52166, - 52170, 35790, 35793, 52180, 52184, 52188, 52192, 52196, 52200, 35820, - 35823, 52210, 52214, 52218, 52222, 52226, 52230, 35850, 35853, 52240, - 52244, 52248, 52252, 52256, 52260, 19496, 19498, 35884, 19503, 35889, - 0, 19510, 35896, 19515, 19517, 19519, 17005, 19521, 0, 636, 0, 0, - 19523, 35909, 19528, 35914, 0, 19533, 35919, 19538, 17008, 19540, - 17010, 19542, 19544, 19546, 19548, 19550, 19552, 35938, 33404, 0, 0, - 19557, 35943, 19562, 19564, 19566, 17012, 0, 19568, 19570, 19572, - 19574, 19576, 35962, 33421, 19581, 19583, 19585, 35971, 19590, 19592, - 19594, 17016, 19596, 19598, 17003, 3216, 0, 0, 35985, 19604, 35990, 0, - 19609, 35995, 19614, 17014, 19616, 17018, 19618, 3236, 0, 0, 1, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 209, 16402, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16715, 16717, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16723, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17222, 17224, 17226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17248, 0, 0, 0, 0, 17250, 0, 0, - 17254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16892, 0, 16894, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16926, 0, 0, 16928, 0, 0, 16930, 0, - 16932, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16934, 0, 16936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16938, 16940, 16942, - 16944, 16946, 0, 0, 16948, 16950, 0, 0, 16952, 16954, 0, 0, 0, 0, 0, - 0, 16956, 16958, 0, 0, 16960, 16962, 0, 0, 16964, 16966, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16969, 16971, 16973, 16975, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16978, 16980, - 16982, 16984, 0, 0, 0, 0, 0, 0, 16986, 16988, 16990, 16992, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 610, 611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17228, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17322, 0, - 17324, 0, 17326, 0, 17328, 0, 17330, 0, 17332, 0, 17334, 0, 17336, 0, - 17338, 0, 17340, 0, 17342, 0, 17344, 0, 0, 17346, 0, 17348, 0, 17350, - 0, 0, 0, 0, 0, 0, 17352, 17354, 0, 17356, 17358, 0, 17360, 17362, 0, - 17364, 17366, 0, 17368, 17370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17379, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17383, 0, 17385, 0, 17387, 0, - 17389, 0, 17391, 0, 17393, 0, 17395, 0, 17397, 0, 17399, 0, 17401, 0, - 17403, 0, 17405, 0, 0, 17407, 0, 17409, 0, 17411, 0, 0, 0, 0, 0, 0, - 17413, 17415, 0, 17417, 17419, 0, 17421, 17423, 0, 17425, 17427, 0, - 17429, 17431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17434, 0, 0, 17436, 17438, 17440, 17442, 0, 0, 0, 17444, 0, - 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1505, 1506, 1507, - 1508, 1509, 1419, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, - 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, - 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1388, 1458, 1536, 1537, - 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, - 1549, 1550, 1551, 1552, 1241, 1553, 1554, 1555, 1556, 1557, 1558, - 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, - 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, - 1581, 1582, 1583, 1584, 1516, 1585, 1586, 1357, 1587, 1588, 1214, - 1293, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, - 1599, 1600, 1487, 1601, 1602, 1603, 1231, 1604, 1605, 1606, 1607, - 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, - 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, - 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, - 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1600, 1648, 1649, 1650, - 1651, 1652, 1653, 1654, 1655, 1357, 1656, 1657, 1658, 1659, 1660, - 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, - 1672, 1673, 1674, 1675, 1516, 1676, 1677, 1678, 1679, 1680, 1681, - 1682, 1683, 1684, 1685, 1148, 1686, 1687, 1688, 1689, 1690, 1691, - 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1588, - 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, - 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, - 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, - 1735, 1736, 1737, 1327, 1738, 1739, 1740, 1741, 1742, 1743, 1744, - 1745, 1746, 1747, 1748, 1749, 1750, 0, 0, 1753, 0, 1755, 0, 0, 1758, - 1759, 1760, 1761, 1762, 1763, 932, 1764, 1765, 1766, 0, 1767, 0, 1769, - 0, 0, 1770, 1771, 0, 0, 0, 1773, 1774, 1775, 1776, 1777, 1778, 1255, - 1260, 1264, 1288, 1289, 1295, 1779, 1323, 1780, 1781, 1782, 1783, - 1366, 1406, 1784, 1413, 1418, 1442, 1785, 1449, 1468, 1147, 1786, - 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1246, 1796, - 1797, 1798, 937, 1799, 1800, 1637, 1801, 1802, 1803, 1128, 1804, 1805, - 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1770, 1814, - 1815, 1816, 1817, 1818, 1819, 0, 0, 1821, 1277, 1822, 1823, 1824, - 1825, 1287, 1290, 1779, 1826, 1318, 1827, 1753, 1828, 1829, 1830, - 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1411, 1838, 1413, 1839, - 1418, 1840, 1841, 1842, 1843, 1844, 1755, 1458, 1459, 1845, 1846, - 1487, 1148, 1847, 1160, 1787, 1171, 1788, 1848, 1187, 1849, 1759, - 1204, 1850, 1851, 1852, 1853, 1760, 1854, 1224, 1233, 1855, 1243, - 1856, 1800, 1857, 1858, 1637, 1859, 1128, 1860, 1861, 1862, 1863, - 1864, 1808, 1865, 1769, 1866, 1809, 1585, 1867, 1810, 1868, 1812, 7, - 1869, 1870, 1871, 1872, 1814, 1764, 1873, 1815, 1874, 1816, 1875, - 1505, 1876, 1877, 1878, 1473, 1879, 1234, 1880, 1881, 1882, 1883, - 1884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 18291, 0, 18293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18298, 18300, 34686, - 34689, 18308, 18310, 18312, 18314, 18316, 18318, 18320, 18322, 18324, - 0, 18326, 18328, 18330, 16997, 18334, 0, 18338, 0, 17001, 19508, 0, - 17023, 18346, 0, 18349, 18351, 18353, 18302, 18355, 18357, 18359, - 18361, 18363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17375, 0, 17377, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17447, 17449, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17452, 17454, 33840, 33843, 33846, 33849, - 33852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17474, 17476, - 33862, 33865, 33868, 33871, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, - 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, - 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, - 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, - 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1299, 1299, 1300, 1301, - 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, - 1313, 1314, 1315, 1316, 1317, 1317, 1318, 1319, 1320, 1321, 1322, - 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, - 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, - 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1353, 1354, - 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, - 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, - 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, - 1388, 1389, 1390, 1391, 1391, 1152, 1392, 1392, 1393, 1394, 1395, - 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, - 1407, 1408, 1409, 1410, 1411, 1410, 1412, 1413, 1414, 1415, 1416, - 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, - 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, - 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, - 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, - 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, - 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, - 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, - 1494, 1495, 1496, 1497, 1146, 1147, 1148, 1149, 1150, 1153, 1154, - 1155, 1156, 1157, 1159, 1160, 1161, 1162, 1163, 1165, 1166, 1167, - 1168, 1169, 1171, 1172, 1173, 1174, 1175, 1177, 1178, 1179, 1180, - 1182, 1184, 1185, 1186, 1187, 1188, 1190, 1191, 1192, 1193, 1194, - 1196, 1197, 1198, 1199, 1200, 1200, 1202, 1203, 1204, 1205, 1207, - 1208, 1209, 1210, 1211, 1213, 1214, 1215, 1216, 1217, 1219, 1220, - 1221, 1223, 1224, 1226, 1227, 1228, 1229, 1230, 1232, 1232, 1233, - 1234, 1235, 1237, 1238, 1239, 1240, 1241, 1243, 1244, 1245, 1246, - 1247, 1249, 932, 933, 934, 937, 1113, 1119, 990, 1130, 1130, 1049, - 1062, 1181, 1067, 1087, 1088, 1089, 1106, 1107, 1108, 1109, 1110, - 1111, 1112, 1114, 1115, 1116, 1117, 1118, 1120, 1121, 1122, 1123, - 1124, 1125, 1126, 1127, 1128, 1129, 1131, 1132, 1133, 1134, 1135, - 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1152, - 1158, 1164, 1170, 1176, 1183, 1189, 1195, 1201, 1206, 1212, 1218, - 1225, 1231, 1236, 1242, 1248, 1222, 774, 683, 1806, 1996, 2024, 2046, - 2053, 2060, 2006, 2001, 2404, 5, 705, 792, 829, 584, 1752, 662, 700, - 1768, 1772, 785, 345, 1548, 1895, 1912, 1964, 1984, 1990, 1997, 1862, - 2009, 1820, 2018, 2025, 2030, 2034, 2038, 2044, 2047, 2048, 2050, - 2051, 2052, 2054, 2055, 2056, 2058, 2059, 2061, 1885, 1867, 1868, - 1886, 1887, 1888, 1889, 1890, 1898, 1903, 1906, 2057, 1911, 1913, - 2049, 2026, 7, 3, 4, 6, 1981, 1982, 1983, 1985, 1986, 1987, 1988, - 1989, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2002, 2003, - 2004, 2005, 593, 2007, 2008, 2010, 2011, 2012, 2013, 1874, 1874, 2014, - 2015, 2016, 2017, 2019, 2020, 2021, 2022, 2023, 1151, 1875, 2027, - 2028, 2029, 1751, 2031, 2032, 1754, 2033, 1756, 1757, 2035, 2036, - 2037, 2039, 2040, 2041, 2042, 2043, 2045 -}; + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16392, 16394, 16396, 16398, 16400, 16402, 0, 16404, 16406, 16408, 16410, 16412, 16414, 16416, 16418, 16420, + 0, 16422, 16424, 16426, 16428, 16430, 16432, 0, 0, 16434, 16436, 16438, 16440, 16442, 0, 0, + 16444, 16446, 16448, 16450, 16452, 16454, 0, 16456, 16458, 16460, 16462, 16464, 16466, 16468, 16470, 16472, + 0, 16474, 16476, 16478, 16480, 16482, 16484, 0, 0, 16486, 16488, 16490, 16492, 16494, 0, 16496, + 16498, 16500, 16502, 16504, 16506, 16508, 16510, 16512, 16514, 16516, 16518, 16520, 16522, 16524, 16526, 16528, + 0, 0, 16530, 16532, 16534, 16536, 16538, 16540, 16542, 16544, 16546, 16548, 16550, 16552, 16554, 16556, + 16558, 16560, 16562, 16564, 16566, 16568, 0, 0, 16571, 16573, 16575, 16577, 16579, 16581, 16583, 16585, + 16587, 0, 0, 0, 16589, 16591, 16593, 16595, 0, 16597, 16599, 16601, 16603, 16605, 16607, 0, + 0, 0, 0, 16609, 16611, 16613, 16615, 16617, 16619, 0, 0, 0, 16621, 16623, 16625, 16627, + 16629, 16631, 0, 0, 16633, 16635, 16637, 16639, 16641, 16643, 16645, 16647, 16649, 16651, 16653, 16655, + 16657, 16659, 16661, 16663, 16665, 16667, 0, 0, 16669, 16671, 16673, 16675, 16677, 16679, 16681, 16683, + 16685, 16687, 16689, 16691, 16693, 16695, 16697, 16699, 16701, 16703, 16705, 16707, 16709, 16711, 16713, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16719, 16721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16725, + 16727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16730, 16732, 16734, + 16736, 16738, 16740, 16742, 16744, 33130, 33133, 33136, 33139, 33142, 33145, 33148, 33151, 0, 33154, 33157, + 33160, 33163, 16782, 16784, 0, 0, 16786, 16788, 16790, 16792, 16794, 16796, 33182, 33185, 16804, 16806, + 16808, 0, 0, 0, 16810, 16812, 0, 0, 16814, 16816, 33202, 33205, 16824, 16826, 16828, 16830, + 16832, 16834, 16836, 16838, 16840, 16842, 16844, 16846, 16848, 16850, 16852, 16854, 16856, 16858, 16860, 16862, + 16864, 16866, 16868, 16870, 16872, 16874, 16876, 16878, 16880, 16882, 16884, 16886, 0, 0, 16888, 16890, + 0, 0, 0, 0, 0, 0, 16776, 16779, 16896, 16898, 33284, 33287, 33290, 33293, 16912, 16914, + 33300, 33303, 16922, 16924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 11, 0, 612, 16753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, 0, + 0, 0, 0, 0, 0, 17003, 17005, 623, 17008, 17010, 17012, 0, 17014, 0, 17016, 17018, + 33404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17025, 17027, 17029, 17031, 17033, 17035, + 33421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17020, 17037, 17040, 17042, 17044, 0, + 0, 0, 0, 17047, 17049, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17051, 17053, 0, 17055, 0, 0, 0, 17057, 0, 0, 0, 0, 17059, 17061, 17063, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17065, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17068, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17070, 17072, 0, 17074, 0, 0, 0, 17076, 0, 0, 0, 0, 17078, 17080, 17082, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17085, 17087, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17090, 17092, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17094, 17096, 17098, 17100, 0, 0, 17102, 17104, 0, 0, 17106, 17108, 17110, 17112, 17114, 17116, + 0, 0, 17118, 17120, 17122, 17124, 17126, 17128, 0, 0, 17130, 17132, 17134, 17136, 17138, 17140, + 17142, 17144, 17146, 17148, 17150, 17152, 0, 0, 17154, 17156, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 17159, 17161, 17163, 17165, 17167, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17170, 0, 17172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17177, 0, 0, 0, 0, 0, 0, + 0, 17179, 0, 0, 17181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17183, 17185, 17187, 17189, 17191, 17193, 17195, 17197, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17199, 17201, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17203, 17205, 0, 17207, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17209, 0, 0, 17211, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17214, 17216, 17218, 0, 0, 17220, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17230, 0, 0, 17232, 17234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17236, 17238, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17242, 17244, 17246, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17252, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17256, 0, 0, 0, 0, 0, 0, 17258, 17260, 0, 17262, 33648, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17267, 17269, 17271, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17273, 0, 17275, 33661, 17280, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17284, 0, 0, + 0, 0, 17286, 0, 0, 0, 0, 17288, 0, 0, 0, 0, 17290, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17292, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17294, 0, 17296, 17298, 0, 17300, 0, 0, 0, 0, 0, 0, 0, + 0, 17302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17306, 0, 0, + 0, 0, 17308, 0, 0, 0, 0, 17310, 0, 0, 0, 0, 17312, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17314, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17319, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 18275, 0, 18277, 0, 18280, 0, 18283, 0, 18285, 0, + 0, 0, 18288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18332, 0, 18336, 0, 0, + 18340, 18342, 0, 18344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 18446, 18448, 18450, 18452, 18454, 18456, 18458, 18460, 34846, 34849, 18468, 18470, 18472, 18474, 18476, 18478, + 18480, 18482, 18484, 18486, 34872, 34875, 34878, 34881, 18500, 18502, 18504, 18506, 34892, 34895, 18514, 18516, + 18518, 18520, 18522, 18524, 18526, 18528, 18530, 18532, 18534, 18536, 18538, 18540, 18542, 18544, 34930, 34933, + 18552, 18554, 18556, 18558, 18560, 18562, 18564, 18566, 34952, 34955, 18574, 18576, 18578, 18580, 18582, 18584, + 18586, 18588, 18590, 18592, 18594, 18596, 18598, 18600, 18602, 18604, 18606, 18608, 34994, 34997, 35000, 35003, + 35006, 35009, 35012, 35015, 18634, 18636, 18638, 18640, 18642, 18644, 18646, 18648, 35034, 35037, 18656, 18658, + 18660, 18662, 18664, 18666, 35052, 35055, 35058, 35061, 35064, 35067, 18686, 18688, 18690, 18692, 18694, 18696, + 18698, 18700, 18702, 18704, 18706, 18708, 18710, 18712, 35098, 35101, 35104, 35107, 18726, 18728, 18730, 18732, + 18734, 18736, 18738, 18740, 18742, 18744, 18746, 18748, 18750, 18752, 18754, 18756, 18758, 18760, 18762, 18764, + 18766, 18768, 18770, 18772, 18774, 18776, 18778, 18780, 18782, 18784, 0, 18786, 0, 0, 0, 0, + 18789, 18791, 18793, 18795, 35181, 35184, 35187, 35190, 35193, 35196, 35199, 35202, 35205, 35208, 35211, 35214, + 35217, 35220, 35223, 35226, 35229, 35232, 35235, 35238, 18857, 18859, 18861, 18863, 18865, 18867, 35253, 35256, + 35259, 35262, 35265, 35268, 35271, 35274, 35277, 35280, 18899, 18901, 18903, 18905, 18907, 18909, 18911, 18913, + 35299, 35302, 35305, 35308, 35311, 35314, 35317, 35320, 35323, 35326, 35329, 35332, 35335, 35338, 35341, 35344, + 35347, 35350, 35353, 35356, 18975, 18977, 18979, 18981, 35367, 35370, 35373, 35376, 35379, 35382, 35385, 35388, + 35391, 35394, 19013, 19015, 19017, 19019, 19021, 19023, 19025, 19027, 0, 0, 0, 0, 0, 0, + 19029, 19031, 35417, 35420, 35423, 35426, 35429, 35432, 19051, 19053, 35439, 35442, 35445, 35448, 35451, 35454, + 19073, 19075, 35461, 35464, 35467, 35470, 0, 0, 19089, 19091, 35477, 35480, 35483, 35486, 0, 0, + 19105, 19107, 35493, 35496, 35499, 35502, 35505, 35508, 19127, 19129, 35515, 35518, 35521, 35524, 35527, 35530, + 19149, 19151, 35537, 35540, 35543, 35546, 35549, 35552, 19171, 19173, 35559, 35562, 35565, 35568, 35571, 35574, + 19193, 19195, 35581, 35584, 35587, 35590, 0, 0, 19209, 19211, 35597, 35600, 35603, 35606, 0, 0, + 19225, 19227, 35613, 35616, 35619, 35622, 35625, 35628, 0, 19247, 0, 35633, 0, 35636, 0, 35639, + 19258, 19260, 35646, 35649, 35652, 35655, 35658, 35661, 19280, 19282, 35668, 35671, 35674, 35677, 35680, 35683, + 19302, 17029, 19304, 17031, 19306, 17033, 19308, 17035, 19310, 17040, 19312, 17042, 19314, 17044, 0, 0, + 35700, 35703, 52090, 52094, 52098, 52102, 52106, 52110, 35730, 35733, 52120, 52124, 52128, 52132, 52136, 52140, + 35760, 35763, 52150, 52154, 52158, 52162, 52166, 52170, 35790, 35793, 52180, 52184, 52188, 52192, 52196, 52200, + 35820, 35823, 52210, 52214, 52218, 52222, 52226, 52230, 35850, 35853, 52240, 52244, 52248, 52252, 52256, 52260, + 19496, 19498, 35884, 19503, 35889, 0, 19510, 35896, 19515, 19517, 19519, 17005, 19521, 0, 636, 0, + 0, 19523, 35909, 19528, 35914, 0, 19533, 35919, 19538, 17008, 19540, 17010, 19542, 19544, 19546, 19548, + 19550, 19552, 35938, 33404, 0, 0, 19557, 35943, 19562, 19564, 19566, 17012, 0, 19568, 19570, 19572, + 19574, 19576, 35962, 33421, 19581, 19583, 19585, 35971, 19590, 19592, 19594, 17016, 19596, 19598, 17003, 3216, + 0, 0, 35985, 19604, 35990, 0, 19609, 35995, 19614, 17014, 19616, 17018, 19618, 3236, 0, 0, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 209, 16402, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16715, 16717, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16723, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17222, 17224, 17226, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17248, 0, 0, 0, 0, 17250, 0, 0, 17254, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16892, 0, 16894, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16926, 0, 0, 16928, 0, 0, 16930, 0, 16932, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16934, 0, 16936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16938, 16940, 16942, + 16944, 16946, 0, 0, 16948, 16950, 0, 0, 16952, 16954, 0, 0, 0, 0, 0, 0, + 16956, 16958, 0, 0, 16960, 16962, 0, 0, 16964, 16966, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16969, 16971, 16973, 16975, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16978, 16980, 16982, 16984, 0, 0, 0, 0, 0, 0, 16986, 16988, 16990, 16992, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 610, 611, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17228, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17322, 0, 17324, 0, + 17326, 0, 17328, 0, 17330, 0, 17332, 0, 17334, 0, 17336, 0, 17338, 0, 17340, 0, + 17342, 0, 17344, 0, 0, 17346, 0, 17348, 0, 17350, 0, 0, 0, 0, 0, 0, + 17352, 17354, 0, 17356, 17358, 0, 17360, 17362, 0, 17364, 17366, 0, 17368, 17370, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17379, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17383, 0, 17385, 0, + 17387, 0, 17389, 0, 17391, 0, 17393, 0, 17395, 0, 17397, 0, 17399, 0, 17401, 0, + 17403, 0, 17405, 0, 0, 17407, 0, 17409, 0, 17411, 0, 0, 0, 0, 0, 0, + 17413, 17415, 0, 17417, 17419, 0, 17421, 17423, 0, 17425, 17427, 0, 17429, 17431, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17434, 0, 0, 17436, 17438, 17440, 17442, 0, 0, 0, 17444, 0, + 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1505, 1506, 1507, 1508, 1509, 1419, 1510, 1511, + 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, + 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1388, 1458, 1536, 1537, 1538, 1539, 1540, 1541, + 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1241, 1553, 1554, 1555, 1556, + 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, + 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1516, 1585, 1586, 1357, + 1587, 1588, 1214, 1293, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, + 1487, 1601, 1602, 1603, 1231, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, + 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, + 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, + 1647, 1600, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1357, 1656, 1657, 1658, 1659, 1660, + 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1516, + 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1148, 1686, 1687, 1688, 1689, 1690, + 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1588, 1702, 1703, 1704, 1705, + 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, + 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, + 1327, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 0, 0, + 1753, 0, 1755, 0, 0, 1758, 1759, 1760, 1761, 1762, 1763, 932, 1764, 1765, 1766, 0, + 1767, 0, 1769, 0, 0, 1770, 1771, 0, 0, 0, 1773, 1774, 1775, 1776, 1777, 1778, + 1255, 1260, 1264, 1288, 1289, 1295, 1779, 1323, 1780, 1781, 1782, 1783, 1366, 1406, 1784, 1413, + 1418, 1442, 1785, 1449, 1468, 1147, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, + 1246, 1796, 1797, 1798, 937, 1799, 1800, 1637, 1801, 1802, 1803, 1128, 1804, 1805, 1805, 1806, + 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1770, 1814, 1815, 1816, 1817, 1818, 1819, 0, 0, + 1821, 1277, 1822, 1823, 1824, 1825, 1287, 1290, 1779, 1826, 1318, 1827, 1753, 1828, 1829, 1830, + 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1411, 1838, 1413, 1839, 1418, 1840, 1841, 1842, 1843, + 1844, 1755, 1458, 1459, 1845, 1846, 1487, 1148, 1847, 1160, 1787, 1171, 1788, 1848, 1187, 1849, + 1759, 1204, 1850, 1851, 1852, 1853, 1760, 1854, 1224, 1233, 1855, 1243, 1856, 1800, 1857, 1858, + 1637, 1859, 1128, 1860, 1861, 1862, 1863, 1864, 1808, 1865, 1769, 1866, 1809, 1585, 1867, 1810, + 1868, 1812, 7, 1869, 1870, 1871, 1872, 1814, 1764, 1873, 1815, 1874, 1816, 1875, 1505, 1876, + 1877, 1878, 1473, 1879, 1234, 1880, 1881, 1882, 1883, 1884, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18291, 0, 18293, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18298, 18300, 34686, 34689, 18308, 18310, + 18312, 18314, 18316, 18318, 18320, 18322, 18324, 0, 18326, 18328, 18330, 16997, 18334, 0, 18338, 0, + 17001, 19508, 0, 17023, 18346, 0, 18349, 18351, 18353, 18302, 18355, 18357, 18359, 18361, 18363, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17375, 0, 17377, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17381, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17447, 17449, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17452, 17454, + 33840, 33843, 33846, 33849, 33852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17474, 17476, 33862, 33865, 33868, + 33871, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, + 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, + 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, + 1298, 1299, 1299, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, + 1312, 1313, 1314, 1315, 1316, 1317, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, + 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, + 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1353, 1354, 1355, 1356, 1357, + 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, + 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, + 1390, 1391, 1391, 1152, 1392, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, + 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1410, 1412, 1413, 1414, 1415, 1416, 1417, + 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, + 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, + 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, + 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, + 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, + 1146, 1147, 1148, 1149, 1150, 1153, 1154, 1155, 1156, 1157, 1159, 1160, 1161, 1162, 1163, 1165, + 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1175, 1177, 1178, 1179, 1180, 1182, 1184, 1185, + 1186, 1187, 1188, 1190, 1191, 1192, 1193, 1194, 1196, 1197, 1198, 1199, 1200, 1200, 1202, 1203, + 1204, 1205, 1207, 1208, 1209, 1210, 1211, 1213, 1214, 1215, 1216, 1217, 1219, 1220, 1221, 1223, + 1224, 1226, 1227, 1228, 1229, 1230, 1232, 1232, 1233, 1234, 1235, 1237, 1238, 1239, 1240, 1241, + 1243, 1244, 1245, 1246, 1247, 1249, 932, 933, 934, 937, 1113, 1119, 990, 1130, 1130, 1049, + 1062, 1181, 1067, 1087, 1088, 1089, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1114, 1115, 1116, + 1117, 1118, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1131, 1132, 1133, 1134, + 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1152, 1158, 1164, 1170, 1176, + 1183, 1189, 1195, 1201, 1206, 1212, 1218, 1225, 1231, 1236, 1242, 1248, 1222, 774, 683, 1806, + 1996, 2024, 2046, 2053, 2060, 2006, 2001, 2404, 5, 705, 792, 829, 584, 1752, 662, 700, + 1768, 1772, 785, 345, 1548, 1895, 1912, 1964, 1984, 1990, 1997, 1862, 2009, 1820, 2018, 2025, + 2030, 2034, 2038, 2044, 2047, 2048, 2050, 2051, 2052, 2054, 2055, 2056, 2058, 2059, 2061, 1885, + 1867, 1868, 1886, 1887, 1888, 1889, 1890, 1898, 1903, 1906, 2057, 1911, 1913, 2049, 2026, 7, + 3, 4, 6, 1981, 1982, 1983, 1985, 1986, 1987, 1988, 1989, 1991, 1992, 1993, 1994, 1995, + 1998, 1999, 2000, 2002, 2003, 2004, 2005, 593, 2007, 2008, 2010, 2011, 2012, 2013, 1874, 1874, + 2014, 2015, 2016, 2017, 2019, 2020, 2021, 2022, 2023, 1151, 1875, 2027, 2028, 2029, 1751, 2031, + 2032, 1754, 2033, 1756, 1757, 2035, 2036, 2037, 2039, 2040, 2041, 2042, 2043, 2045}; -int32_t decomp_idx(int32_t codepoint) { +int32_t decomp_idx(int32_t codepoint) +{ if (codepoint >= 195102) return 0; return decomp_idx_t2[(decomp_idx_t1[codepoint >> 6] << 6) + (codepoint & 63)]; } static const uint8_t comp_idx_t1[] = { - 0, 1, 2, 3, 0, 4, 5, 6, 7, 0, 8, 9, 0, 10, 0, 11, 0, 12, 0, 0, 13, 0, - 0, 0, 0, 0, 0, 0, 14, 15, 16, 0, 17, 18, 19, 20, 0, 0, 21, 22, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 23, 24, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 28, 0, 29, 0, 30, 0, 0, 0, 31, 0, 0, 32, 33, 0, 0, 0, 34, 0, - 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 37, 38, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 41, - 0, 42, 43, 0, 44, 45, 46, 47, 0, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 51, 0, 52, 0, 53, 54, 55, 56, 57, 58, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, 63, 64, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 0, 0, 0, 67 -}; + 0, 1, 2, 3, 0, 4, 5, 6, 7, 0, 8, 9, 0, 10, 0, 11, 0, 12, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 14, 15, + 16, 0, 17, 18, 19, 20, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, 0, 0, 0, 25, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 29, 0, 30, 0, 0, 0, 31, 0, 0, 32, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 40, 41, 0, 42, 43, 0, 44, 45, 46, 47, 0, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, + 52, 0, 53, 54, 55, 56, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, + 63, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 0, 0, 0, 67}; static const uint16_t comp_idx_t2[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 4, 20, 23, - 28, 34, 502, 52, 59, 66, 81, 82, 87, 517, 94, 103, 119, 0, 122, 130, - 137, 144, 163, 165, 171, 173, 182, 0, 0, 0, 0, 0, 0, 191, 207, 210, - 215, 221, 701, 239, 246, 254, 268, 270, 275, 281, 284, 293, 309, 0, - 571, 313, 320, 328, 347, 349, 585, 358, 368, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 396, 0, 400, 401, 753, 403, 0, 0, 405, 0, 0, - 0, 0, 762, 0, 0, 0, 0, 413, 765, 419, 0, 768, 0, 0, 0, 424, 0, 0, 0, - 0, 0, 428, 0, 432, 433, 434, 436, 0, 0, 437, 0, 0, 0, 0, 441, 0, 0, 0, - 0, 445, 449, 452, 0, 453, 0, 0, 0, 454, 0, 0, 0, 0, 0, 459, 463, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 467, 469, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 476, 478, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 480, 481, 0, 0, 0, 0, 482, 483, 0, 0, 0, 0, 0, - 0, 484, 485, 486, 487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 488, 492, 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 503, - 508, 0, 0, 0, 0, 0, 0, 513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, 535, 536, 537, 0, 0, 0, 0, 538, - 539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 564, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 601, 0, 0, - 0, 609, 0, 613, 0, 618, 0, 0, 0, 0, 0, 625, 0, 629, 0, 0, 0, 630, 0, - 0, 0, 636, 0, 0, 641, 0, 642, 0, 0, 643, 0, 0, 0, 651, 0, 655, 0, 661, - 0, 0, 0, 0, 0, 669, 0, 673, 0, 0, 0, 675, 0, 0, 0, 686, 692, 695, 0, - 0, 698, 0, 0, 0, 699, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 702, 0, 0, 0, 0, 0, 0, 0, 0, 0, 703, 0, 0, 705, 0, 706, 709, - 711, 712, 0, 716, 0, 0, 0, 717, 0, 0, 0, 0, 718, 0, 0, 0, 722, 0, 0, - 0, 723, 0, 724, 0, 0, 725, 0, 0, 727, 0, 728, 731, 733, 734, 0, 738, - 0, 0, 0, 739, 0, 0, 0, 0, 740, 0, 0, 0, 745, 0, 0, 0, 746, 0, 747, 0, - 0, 0, 0, 0, 0, 0, 0, 748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 749, 750, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 760, 761, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 763, 764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 782, 0, 783, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 795, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 798, 0, 0, 799, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 471, 0, 0, 0, 0, 0, 0, - 0, 472, 0, 0, 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 683, 685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 744, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 755, 0, 0, 0, 0, 0, 0, 756, 0, 0, 0, 759, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 769, - 771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 773, 0, 0, 776, 0, 0, 0, 0, 0, 0, 0, 0, 587, 0, 588, 0, - 589, 0, 590, 0, 591, 0, 0, 0, 592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 593, 0, 594, 0, 595, 596, 0, 0, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 780, - 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 784, 785, 0, 0, 0, 0, 0, 0, 787, - 788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 789, 791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 793, 794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 796, 797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 800, 804, 808, 809, 810, 811, 812, 813, 814, 818, 822, - 823, 824, 825, 826, 827, 828, 830, 0, 0, 0, 0, 0, 0, 832, 834, 0, 0, - 0, 0, 0, 0, 836, 840, 844, 845, 846, 847, 848, 849, 850, 854, 858, - 859, 860, 861, 862, 863, 864, 867, 0, 0, 0, 0, 0, 0, 870, 873, 0, 0, - 0, 0, 0, 0, 876, 878, 0, 0, 0, 0, 0, 0, 880, 882, 0, 0, 0, 0, 0, 0, - 884, 887, 0, 0, 0, 0, 0, 0, 0, 890, 0, 0, 0, 0, 0, 0, 893, 897, 901, - 902, 903, 904, 905, 906, 907, 911, 915, 916, 917, 751, 919, 920, 921, - 0, 0, 0, 922, 0, 0, 0, 0, 0, 0, 0, 923, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 924, 0, 0, 0, 0, 0, 0, 0, - 0, 925, 0, 0, 0, 0, 0, 0, 928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 929, 0, 0, 0, 0, 0, 0, 0, 930, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 489, 0, 490, 0, 491, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 520, 0, 521, 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 528, 0, 0, 0, 0, 529, 0, 0, 786, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 532, 0, 533, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 540, 0, 0, 0, 0, 0, 0, - 541, 0, 542, 0, 0, 544, 0, 0, 0, 0, 545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 547, 0, 0, 548, 549, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 551, 552, 0, 0, 553, 554, 0, 0, 555, 556, 557, 558, 0, - 0, 0, 0, 559, 560, 0, 0, 561, 562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 563, - 918, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 567, 0, 0, 0, 0, 0, - 568, 569, 0, 570, 0, 0, 0, 0, 0, 0, 579, 580, 581, 582, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 514, 0, 93, 0, 523, - 0, 121, 0, 526, 0, 527, 0, 530, 0, 531, 0, 188, 0, 189, 0, 190, 0, - 543, 0, 0, 546, 0, 238, 0, 550, 0, 0, 0, 0, 0, 0, 565, 0, 0, 311, 0, - 0, 583, 0, 0, 356, 0, 0, 374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 378, 0, 0, - 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, 0, 384, 0, 385, 0, 386, 0, 387, 0, - 388, 0, 389, 0, 390, 0, 391, 0, 392, 0, 393, 0, 394, 0, 395, 0, 0, - 752, 0, 402, 0, 404, 0, 0, 0, 0, 0, 0, 409, 0, 0, 411, 0, 0, 417, 0, - 0, 420, 0, 0, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 772, 442, 443, 444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 376, 0, 377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 379, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 473, 474 -}; + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 4, 20, 23, 28, + 34, 502, 52, 59, 66, 81, 82, 87, 517, 94, 103, 119, 0, 122, 130, 137, 144, 163, 165, 171, 173, 182, 0, + 0, 0, 0, 0, 0, 191, 207, 210, 215, 221, 701, 239, 246, 254, 268, 270, 275, 281, 284, 293, 309, 0, 571, + 313, 320, 328, 347, 349, 585, 358, 368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 381, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 396, 0, 400, 401, 753, 403, 0, 0, 405, 0, 0, 0, 0, 762, 0, 0, 0, 0, 413, 765, 419, 0, + 768, 0, 0, 0, 424, 0, 0, 0, 0, 0, 428, 0, 432, 433, 434, 436, 0, 0, 437, 0, 0, 0, 0, + 441, 0, 0, 0, 0, 445, 449, 452, 0, 453, 0, 0, 0, 454, 0, 0, 0, 0, 0, 459, 463, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 467, 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 476, 478, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 480, 481, 0, 0, 0, 0, 482, 483, 0, 0, 0, 0, 0, 0, 484, 485, 486, + 487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 488, 492, 497, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 503, 508, 0, 0, 0, 0, 0, 0, 513, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 524, 525, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, + 535, 536, 537, 0, 0, 0, 0, 538, 539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 564, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 601, 0, 0, 0, 609, 0, 613, 0, 618, 0, 0, 0, 0, 0, 625, 0, 629, 0, + 0, 0, 630, 0, 0, 0, 636, 0, 0, 641, 0, 642, 0, 0, 643, 0, 0, 0, 651, 0, 655, 0, 661, + 0, 0, 0, 0, 0, 669, 0, 673, 0, 0, 0, 675, 0, 0, 0, 686, 692, 695, 0, 0, 698, 0, 0, + 0, 699, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 702, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 703, 0, 0, 705, 0, 706, 709, 711, 712, 0, 716, 0, 0, 0, 717, + 0, 0, 0, 0, 718, 0, 0, 0, 722, 0, 0, 0, 723, 0, 724, 0, 0, 725, 0, 0, 727, 0, 728, + 731, 733, 734, 0, 738, 0, 0, 0, 739, 0, 0, 0, 0, 740, 0, 0, 0, 745, 0, 0, 0, 746, 0, + 747, 0, 0, 0, 0, 0, 0, 0, 0, 748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 749, 750, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 760, 761, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 763, + 764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 782, 0, 783, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 795, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 798, 0, 0, 799, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 471, 0, 0, 0, 0, 0, 0, 0, 472, 0, 0, + 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 515, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 683, 685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 0, + 0, 0, 0, 0, 756, 0, 0, 0, 759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 769, 771, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 0, 0, 776, 0, + 0, 0, 0, 0, 0, 0, 0, 587, 0, 588, 0, 589, 0, 590, 0, 591, 0, 0, 0, 592, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 593, 0, 594, 0, 595, 596, 0, 0, 597, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 780, 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 784, 785, 0, 0, 0, + 0, 0, 0, 787, 788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 789, 791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 793, 794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 796, 797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 800, 804, 808, 809, 810, 811, 812, 813, 814, 818, 822, 823, 824, 825, 826, 827, 828, 830, + 0, 0, 0, 0, 0, 0, 832, 834, 0, 0, 0, 0, 0, 0, 836, 840, 844, 845, 846, 847, 848, 849, 850, + 854, 858, 859, 860, 861, 862, 863, 864, 867, 0, 0, 0, 0, 0, 0, 870, 873, 0, 0, 0, 0, 0, 0, + 876, 878, 0, 0, 0, 0, 0, 0, 880, 882, 0, 0, 0, 0, 0, 0, 884, 887, 0, 0, 0, 0, 0, + 0, 0, 890, 0, 0, 0, 0, 0, 0, 893, 897, 901, 902, 903, 904, 905, 906, 907, 911, 915, 916, 917, 751, + 919, 920, 921, 0, 0, 0, 922, 0, 0, 0, 0, 0, 0, 0, 923, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 924, 0, 0, 0, 0, 0, + 0, 0, 0, 925, 0, 0, 0, 0, 0, 0, 928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 929, 0, 0, 0, 0, 0, 0, 0, 930, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 489, 0, 490, 0, 491, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 520, 0, 521, 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 528, 0, 0, + 0, 0, 529, 0, 0, 786, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 532, 0, 533, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 540, 0, 0, 0, 0, 0, 0, 541, 0, 542, 0, 0, 544, 0, 0, + 0, 0, 545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 547, + 0, 0, 548, 549, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 551, 552, 0, 0, 553, 554, 0, + 0, 555, 556, 557, 558, 0, 0, 0, 0, 559, 560, 0, 0, 561, 562, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 563, 918, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 567, 0, 0, 0, 0, + 0, 568, 569, 0, 570, 0, 0, 0, 0, 0, 0, 579, 580, 581, 582, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 514, 0, 93, 0, 523, 0, 121, 0, 526, 0, + 527, 0, 530, 0, 531, 0, 188, 0, 189, 0, 190, 0, 543, 0, 0, 546, 0, 238, 0, 550, 0, 0, 0, + 0, 0, 0, 565, 0, 0, 311, 0, 0, 583, 0, 0, 356, 0, 0, 374, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 378, 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, 0, 384, 0, 385, 0, 386, 0, + 387, 0, 388, 0, 389, 0, 390, 0, 391, 0, 392, 0, 393, 0, 394, 0, 395, 0, 0, 752, 0, 402, 0, + 404, 0, 0, 0, 0, 0, 0, 409, 0, 0, 411, 0, 0, 417, 0, 0, 420, 0, 0, 422, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 772, 442, 443, 444, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 458, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 376, 0, 377, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 473, + 474}; -int32_t comp_idx(int32_t codepoint) { +int32_t comp_idx(int32_t codepoint) +{ if (codepoint >= 69939) return 0; return comp_idx_t2[(comp_idx_t1[codepoint >> 5] << 5) + (codepoint & 31)]; } static const uint8_t ccc_t1[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, - 5, 6, 7, 0, 8, 9, 10, 0, 11, 12, 13, 0, 14, 15, 16, 15, 17, 15, 17, - 15, 17, 15, 17, 0, 17, 0, 18, 15, 17, 0, 17, 0, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 32, 0, 0, 33, 0, 34, 0, 0, - 0, 35, 36, 0, 0, 37, 38, 39, 40, 41, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 46, 0, 47, 0, 0, 0, 0, 0, 0, 0, - 0, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, 52, 0, 0, 0, 0, 53, - 0, 0, 54, 55, 56, 57, 58, 0, 0, 59, 60, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 53, 66, 0, 67, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 70, 0, 0, 71 -}; + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, 5, 6, 7, 0, 8, 9, + 10, 0, 11, 12, 13, 0, 14, 15, 16, 15, 17, 15, 17, 15, 17, 15, 17, 0, 17, 0, 18, 15, 17, 0, 17, 0, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 0, 0, 32, 0, 0, 33, 0, 34, 0, 0, 0, 35, 36, 0, 0, 37, 38, 39, 40, 41, 0, 0, 42, + 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 45, 0, 46, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, + 52, 0, 0, 0, 0, 53, 0, 0, 54, 55, 56, 57, 58, 0, 0, 59, 60, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 66, 0, 67, 0, 0, 58, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 69, 70, 0, 0, 71}; static const uint8_t ccc_t2[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, 220, 220, 220, - 220, 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 1, 1, 1, 1, 1, 220, 220, 220, 220, - 230, 230, 230, 230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230, - 230, 230, 220, 220, 0, 230, 230, 230, 220, 220, 220, 220, 230, 232, - 220, 220, 230, 233, 234, 234, 233, 234, 234, 233, 230, 230, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 220, 230, 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, - 230, 230, 230, 220, 220, 220, 220, 220, 220, 230, 230, 220, 230, 230, - 222, 228, 230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, - 0, 23, 0, 24, 25, 0, 230, 220, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, - 230, 230, 230, 30, 31, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 230, - 230, 220, 220, 230, 230, 230, 230, 230, 220, 230, 230, 220, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, 230, 230, - 230, 220, 230, 0, 0, 230, 230, 0, 220, 230, 230, 220, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 220, - 230, 230, 220, 220, 220, 230, 220, 220, 230, 220, 230, 230, 230, 220, - 230, 220, 230, 220, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, - 230, 230, 230, 220, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, - 230, 230, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 230, 230, - 230, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 220, 230, - 230, 220, 230, 230, 230, 220, 220, 220, 27, 28, 29, 230, 230, 230, - 220, 230, 230, 220, 220, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, - 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, - 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 129, 130, 0, 132, 0, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, - 130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 7, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, - 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, - 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, - 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 230, 230, 230, 0, 1, 220, 220, 220, 220, 220, 230, 230, 220, 220, 220, - 220, 230, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, - 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 220, 230, 230, 230, - 230, 230, 230, 230, 220, 230, 230, 234, 214, 220, 202, 230, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 233, 220, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, 230, 230, 1, 1, 1, 230, 230, - 0, 0, 0, 0, 230, 0, 0, 0, 1, 1, 230, 220, 230, 1, 1, 220, 220, 220, - 220, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, - 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, - 228, 232, 222, 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, - 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 230, - 230, 220, 0, 0, 230, 230, 0, 0, 0, 0, 0, 230, 230, 0, 230, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 230, 1, 220, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 216, 1, 1, 1, - 0, 0, 0, 226, 216, 216, 216, 216, 216, 0, 0, 0, 0, 0, 0, 0, 0, 220, - 220, 220, 220, 220, 220, 220, 220, 0, 0, 230, 230, 230, 230, 230, 220, - 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230 -}; + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, + 220, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 1, 1, 1, 1, 1, 220, 220, 220, 220, 230, 230, 230, 230, 230, 230, 230, 230, 240, 230, 220, 220, 220, + 230, 230, 230, 220, 220, 0, 230, 230, 230, 220, 220, 220, 220, 230, 232, 220, 220, 230, 233, 234, 234, 233, 234, + 234, 233, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 230, 230, + 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, 230, 230, 230, 220, 220, 220, 220, 220, 220, 230, 230, 220, + 230, 230, 222, 228, 230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 0, 23, 0, 24, + 25, 0, 230, 220, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 30, 31, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, + 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, 220, 230, 230, 230, 230, 230, 220, 230, 230, 220, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, 230, 230, 230, 220, 230, 0, 0, 230, + 230, 0, 220, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, 220, 230, 230, 230, 220, 230, + 220, 230, 220, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 220, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, + 230, 230, 230, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 220, 230, 230, 220, 230, 230, 230, 220, 220, + 220, 27, 28, 29, 230, 230, 230, 220, 230, 230, 220, 220, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, 107, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 220, 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 0, 132, 0, 0, 0, + 0, 0, 130, 130, 130, 130, 0, 0, 130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 222, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 220, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 230, 230, 230, 230, 230, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 0, 1, 220, 220, 220, 220, 220, + 230, 230, 220, 220, 220, 220, 230, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 220, 0, 0, 0, + 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 220, 230, 230, 230, 230, 230, + 230, 230, 220, 230, 230, 234, 214, 220, 202, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 233, 220, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 230, 230, 1, 1, 230, 230, 230, 230, 1, 1, 1, 230, 230, 0, 0, 0, 0, 230, 0, 0, + 0, 1, 1, 230, 220, 230, 1, 1, 220, 220, 220, 220, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 228, 232, 222, 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 230, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, + 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 230, 0, 230, 230, 220, 0, 0, 230, 230, 0, 0, 0, 0, 0, 230, 230, 0, + 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 230, 1, 220, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 216, 1, 1, 1, 0, 0, 0, 226, + 216, 216, 216, 216, 216, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, 220, 220, 220, 0, 0, + 230, 230, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230}; -int32_t ccc(int32_t codepoint) { +int32_t ccc(int32_t codepoint) +{ if (codepoint >= 119365) return 0; return ccc_t2[(ccc_t1[codepoint >> 6] << 6) + (codepoint & 63)]; } static const int32_t lowercase_offset_values[] = { - 0, 32, 1, -199, -121, 210, 206, 205, 79, 202, 203, 207, 211, 209, 213, - 214, 218, 217, 219, 2, -97, -56, -130, 10795, -163, 10792, -195, 69, - 71, 38, 37, 64, 63, 8, -60, -7, 80, 15, 48, 7264, -7615, -8, -74, -9, - -86, -100, -112, -128, -126, -7517, -8383, -8262, 28, 16, 26, -10743, - -3814, -10727, -10780, -10749, -10783, -10782, -10815, -35332, -42280, - -42308, 40 -}; + 0, 32, 1, -199, -121, 210, 206, 205, 79, 202, 203, 207, 211, 209, + 213, 214, 218, 217, 219, 2, -97, -56, -130, 10795, -163, 10792, -195, 69, + 71, 38, 37, 64, 63, 8, -60, -7, 80, 15, 48, 7264, -7615, -8, + -74, -9, -86, -100, -112, -128, -126, -7517, -8383, -8262, 28, 16, 26, -10743, + -3814, -10727, -10780, -10749, -10783, -10782, -10815, -35332, -42280, -42308, 40}; static const uint8_t lowercase_offset_t1[] = { - 0, 1, 0, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, - 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 20, 21, 20, 22, 23, 24, 25, 0, 0, 0, 0, 26, - 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, - 20, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 34, 35, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40 -}; + 0, 1, 0, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 21, 20, 22, 23, 24, 25, + 0, 0, 0, 0, 26, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 20, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 0, 36, 37, 38, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40}; static const uint8_t lowercase_offset_t2[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, - 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 4, 2, 0, 2, 0, 2, 0, 0, 0, 5, - 2, 0, 2, 0, 6, 2, 0, 7, 7, 2, 0, 0, 8, 9, 10, 2, 0, 7, 11, 0, 12, 13, - 2, 0, 0, 0, 12, 14, 0, 15, 2, 0, 2, 0, 2, 0, 16, 2, 0, 16, 0, 0, 2, 0, - 16, 2, 0, 17, 17, 2, 0, 2, 0, 18, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 19, 2, 0, 19, 2, 0, 19, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, - 19, 2, 0, 2, 0, 20, 21, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 22, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, - 0, 0, 0, 0, 0, 23, 2, 0, 24, 25, 0, 0, 2, 0, 26, 27, 28, 2, 0, 2, 0, - 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 30, 30, 30, 0, 31, 0, 32, 32, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 0, 0, 0, 0, 34, 0, 0, 2, 0, 35, 2, 0, 0, 22, 22, 22, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 37, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 0, 39, - 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, 41, 41, 41, 41, 41, 0, 0, 0, 0, 0, - 0, 0, 0, 41, 41, 41, 41, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, - 41, 41, 41, 41, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, 41, 41, - 41, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, 41, 41, 41, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 41, 0, 41, 0, 41, 0, 0, 0, 0, 0, 0, 0, - 0, 41, 41, 41, 41, 41, 41, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, 41, 41, 41, 41, 41, 0, - 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, 41, 41, 41, 41, 41, 0, 0, 0, 0, 0, 0, - 0, 0, 41, 41, 41, 41, 41, 41, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, - 42, 42, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 44, 44, 43, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 41, 41, 46, 46, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, - 48, 48, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, - 0, 0, 0, 50, 51, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 55, 56, 57, 0, - 0, 2, 0, 2, 0, 2, 0, 58, 59, 60, 61, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 62, 62, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 63, - 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 2, 0, 64, 0, 0, 2, 0, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 65, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66 -}; + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, + 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 4, 2, 0, 2, 0, 2, 0, + 0, 0, 5, 2, 0, 2, 0, 6, 2, 0, 7, 7, 2, 0, 0, 8, 9, 10, 2, 0, 7, 11, 0, 12, 13, 2, 0, 0, 0, + 12, 14, 0, 15, 2, 0, 2, 0, 2, 0, 16, 2, 0, 16, 0, 0, 2, 0, 16, 2, 0, 17, 17, 2, 0, 2, 0, 18, 2, + 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 19, 2, 0, 19, 2, 0, 19, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, + 0, 2, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 19, 2, + 0, 2, 0, 20, 21, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 22, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, + 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 23, 2, 0, 24, 25, 0, 0, 2, 0, 26, 27, 28, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 30, 30, 30, 0, 31, 0, 32, 32, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, + 0, 0, 34, 0, 0, 2, 0, 35, 2, 0, 0, 22, 22, 22, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, + 0, 2, 0, 37, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, + 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 0, 39, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, + 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, 41, 41, + 41, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, 41, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, + 41, 41, 41, 41, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, 41, 41, 41, 41, 41, 0, 0, 0, 0, 0, 0, 0, + 0, 41, 41, 41, 41, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 41, 0, 41, 0, 41, 0, 0, 0, 0, + 0, 0, 0, 0, 41, 41, 41, 41, 41, 41, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, 41, 41, 41, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, 41, 41, 41, + 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, 41, 41, 41, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 42, + 42, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 44, 44, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 41, 41, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 46, 46, 35, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 47, 47, 48, 48, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 50, 51, 0, 0, 0, + 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 55, 56, 57, 0, 0, 2, + 0, 2, 0, 2, 0, 58, 59, 60, 61, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 2, 0, 2, 0, 2, + 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, + 0, 2, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, + 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 63, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 0, 0, 0, 2, 0, 64, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 0, 2, 0, 2, 0, 2, 0, 2, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66}; -int32_t lowercase_offset(int32_t codepoint) { - int offset_index; +int32_t lowercase_offset(int32_t codepoint) +{ + int offset_index; if (codepoint >= 66600) return 0; offset_index = lowercase_offset_t2[(lowercase_offset_t1[codepoint >> 6] << 6) + (codepoint & 63)]; return lowercase_offset_values[offset_index]; diff --git a/src/Datadog.Trace.ClrProfiler.Native/module_metadata.h b/src/Datadog.Trace.ClrProfiler.Native/module_metadata.h index 898b855c94..89635bf62e 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/module_metadata.h +++ b/src/Datadog.Trace.ClrProfiler.Native/module_metadata.h @@ -11,37 +11,33 @@ #include "integration.h" #include "string.h" -namespace trace { - -class ModuleMetadata { - private: - std::unordered_map wrapper_refs{}; - std::unordered_map wrapper_parent_type{}; - std::unordered_set failed_wrapper_keys{}; - CallTargetTokens* calltargetTokens = nullptr; - - public: - const ComPtr metadata_import{}; - const ComPtr metadata_emit{}; - const ComPtr assembly_import{}; - const ComPtr assembly_emit{}; - WSTRING assemblyName = WStr(""); - AppDomainID app_domain_id; - GUID module_version_id; - std::vector integrations = {}; - AssemblyProperty* corAssemblyProperty{}; - - - ModuleMetadata(ComPtr metadata_import, - ComPtr metadata_emit, - ComPtr assembly_import, - ComPtr assembly_emit, - WSTRING assembly_name, - AppDomainID app_domain_id, - GUID module_version_id, - std::vector integrations, - AssemblyProperty* corAssemblyProperty) - : metadata_import(metadata_import), +namespace trace +{ + +class ModuleMetadata +{ +private: + std::unordered_map wrapper_refs{}; + std::unordered_map wrapper_parent_type{}; + std::unordered_set failed_wrapper_keys{}; + CallTargetTokens* calltargetTokens = nullptr; + +public: + const ComPtr metadata_import{}; + const ComPtr metadata_emit{}; + const ComPtr assembly_import{}; + const ComPtr assembly_emit{}; + WSTRING assemblyName = WStr(""); + AppDomainID app_domain_id; + GUID module_version_id; + std::vector integrations = {}; + AssemblyProperty* corAssemblyProperty{}; + + ModuleMetadata(ComPtr metadata_import, ComPtr metadata_emit, + ComPtr assembly_import, ComPtr assembly_emit, + WSTRING assembly_name, AppDomainID app_domain_id, GUID module_version_id, + std::vector integrations, AssemblyProperty* corAssemblyProperty) : + metadata_import(metadata_import), metadata_emit(metadata_emit), assembly_import(assembly_import), assembly_emit(assembly_emit), @@ -49,76 +45,89 @@ class ModuleMetadata { app_domain_id(app_domain_id), module_version_id(module_version_id), integrations(integrations), - corAssemblyProperty(corAssemblyProperty) {} + corAssemblyProperty(corAssemblyProperty) + { + } + + bool TryGetWrapperMemberRef(const WSTRING& keyIn, mdMemberRef& valueOut) const + { + const auto search = wrapper_refs.find(keyIn); + + if (search != wrapper_refs.end()) + { + valueOut = search->second; + return true; + } + + return false; + } + + bool TryGetWrapperParentTypeRef(const WSTRING& keyIn, mdTypeRef& valueOut) const + { + const auto search = wrapper_parent_type.find(keyIn); - bool TryGetWrapperMemberRef(const WSTRING& keyIn, - mdMemberRef& valueOut) const { - const auto search = wrapper_refs.find(keyIn); + if (search != wrapper_parent_type.end()) + { + valueOut = search->second; + return true; + } - if (search != wrapper_refs.end()) { - valueOut = search->second; - return true; + return false; } - return false; - } + bool IsFailedWrapperMemberKey(const WSTRING& key) const + { + const auto search = failed_wrapper_keys.find(key); - bool TryGetWrapperParentTypeRef(const WSTRING& keyIn, - mdTypeRef& valueOut) const { - const auto search = wrapper_parent_type.find(keyIn); + if (search != failed_wrapper_keys.end()) + { + return true; + } - if (search != wrapper_parent_type.end()) { - valueOut = search->second; - return true; + return false; } - return false; - } + void SetWrapperMemberRef(const WSTRING& keyIn, const mdMemberRef valueIn) + { + wrapper_refs[keyIn] = valueIn; + } - bool IsFailedWrapperMemberKey(const WSTRING& key) const { - const auto search = failed_wrapper_keys.find(key); + void SetWrapperParentTypeRef(const WSTRING& keyIn, const mdTypeRef valueIn) + { + wrapper_parent_type[keyIn] = valueIn; + } - if (search != failed_wrapper_keys.end()) { - return true; + void SetFailedWrapperMemberKey(const WSTRING& key) + { + failed_wrapper_keys.insert(key); } - return false; - } - - void SetWrapperMemberRef(const WSTRING& keyIn, const mdMemberRef valueIn) { - wrapper_refs[keyIn] = valueIn; - } - - void SetWrapperParentTypeRef(const WSTRING& keyIn, const mdTypeRef valueIn) { - wrapper_parent_type[keyIn] = valueIn; - } - - void SetFailedWrapperMemberKey(const WSTRING& key) { - failed_wrapper_keys.insert(key); - } - - inline std::vector GetMethodReplacementsForCaller( - const trace::FunctionInfo& caller) { - std::vector enabled; - for (auto& i : integrations) { - if ((i.replacement.caller_method.type_name.empty() || - i.replacement.caller_method.type_name == caller.type.name) && - (i.replacement.caller_method.method_name.empty() || - i.replacement.caller_method.method_name == caller.name)) { - enabled.push_back(i.replacement); - } + inline std::vector GetMethodReplacementsForCaller(const trace::FunctionInfo& caller) + { + std::vector enabled; + for (auto& i : integrations) + { + if ((i.replacement.caller_method.type_name.empty() || + i.replacement.caller_method.type_name == caller.type.name) && + (i.replacement.caller_method.method_name.empty() || + i.replacement.caller_method.method_name == caller.name)) + { + enabled.push_back(i.replacement); + } + } + return enabled; } - return enabled; - } - inline CallTargetTokens* GetCallTargetTokens() { - if (calltargetTokens == nullptr) { - calltargetTokens = new CallTargetTokens(this); + inline CallTargetTokens* GetCallTargetTokens() + { + if (calltargetTokens == nullptr) + { + calltargetTokens = new CallTargetTokens(this); + } + return calltargetTokens; } - return calltargetTokens; - } }; -} // namespace trace +} // namespace trace -#endif // DD_CLR_PROFILER_MODULE_METADATA_H_ +#endif // DD_CLR_PROFILER_MODULE_METADATA_H_ diff --git a/src/Datadog.Trace.ClrProfiler.Native/pal.h b/src/Datadog.Trace.ClrProfiler.Native/pal.h index c1b540db75..02393d6558 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/pal.h +++ b/src/Datadog.Trace.ClrProfiler.Native/pal.h @@ -3,14 +3,14 @@ #ifdef _WIN32 -#include -#include #include "windows.h" +#include +#include #else -#include #include +#include #endif @@ -19,80 +19,86 @@ #endif #include "environment_variables.h" -#include "string.h" // NOLINT +#include "string.h" // NOLINT #include "util.h" -namespace trace { +namespace trace +{ -inline WSTRING DatadogLogFilePath(const std::string& file_name_suffix) { - WSTRING directory = GetEnvironmentValue(environment::log_directory); +inline WSTRING DatadogLogFilePath(const std::string& file_name_suffix) +{ + WSTRING directory = GetEnvironmentValue(environment::log_directory); - if (directory.length() > 0) { - return directory + + if (directory.length() > 0) + { + return directory + #ifdef _WIN32 - WStr('\\') + + WStr('\\') + #else - WStr('/') + + WStr('/') + #endif - ToWSTRING("dotnet-tracer-native" + file_name_suffix + ".log"); - } + ToWSTRING("dotnet-tracer-native" + file_name_suffix + ".log"); + } - WSTRING path = GetEnvironmentValue(environment::log_path); + WSTRING path = GetEnvironmentValue(environment::log_path); - if (path.length() > 0) { - return path; - } + if (path.length() > 0) + { + return path; + } #ifdef _WIN32 - char* p_program_data; - size_t length; - const errno_t result = _dupenv_s(&p_program_data, &length, "PROGRAMDATA"); - std::string program_data; - - if (SUCCEEDED(result) && p_program_data != nullptr && length > 0) { - program_data = std::string(p_program_data); - } else { - program_data = R"(C:\ProgramData)"; - } - - return ToWSTRING(program_data + - R"(\OpenTelemetry .NET AutoInstrumentation\logs\dotnet-tracer-native)" + - file_name_suffix + ".log"); + char* p_program_data; + size_t length; + const errno_t result = _dupenv_s(&p_program_data, &length, "PROGRAMDATA"); + std::string program_data; + + if (SUCCEEDED(result) && p_program_data != nullptr && length > 0) + { + program_data = std::string(p_program_data); + } + else + { + program_data = R"(C:\ProgramData)"; + } + + return ToWSTRING(program_data + R"(\OpenTelemetry .NET AutoInstrumentation\logs\dotnet-tracer-native)" + file_name_suffix + ".log"); #else - return ToWSTRING("/var/log/opentelemetry/dotnet/dotnet-tracer-native" + - file_name_suffix + ".log"); + return ToWSTRING("/var/log/opentelemetry/dotnet/dotnet-tracer-native" + file_name_suffix + ".log"); #endif } -inline WSTRING GetCurrentProcessName() { +inline WSTRING GetCurrentProcessName() +{ #ifdef _WIN32 - const DWORD length = 260; - WCHAR buffer[length]{}; + const DWORD length = 260; + WCHAR buffer[length]{}; - const DWORD len = GetModuleFileName(nullptr, buffer, length); - const WSTRING current_process_path(buffer); - return std::filesystem::path(current_process_path).filename(); + const DWORD len = GetModuleFileName(nullptr, buffer, length); + const WSTRING current_process_path(buffer); + return std::filesystem::path(current_process_path).filename(); #elif MACOS - const int length = 260; - char* buffer = new char[length]; - proc_name(getpid(), buffer, length); - return ToWSTRING(std::string(buffer)); + const int length = 260; + char* buffer = new char[length]; + proc_name(getpid(), buffer, length); + return ToWSTRING(std::string(buffer)); #else - std::fstream comm("/proc/self/comm"); - std::string name; - std::getline(comm, name); - return ToWSTRING(name); + std::fstream comm("/proc/self/comm"); + std::string name; + std::getline(comm, name); + return ToWSTRING(name); #endif } -inline int GetPID() { +inline int GetPID() +{ #ifdef _WIN32 - return _getpid(); + return _getpid(); #else - return getpid(); + return getpid(); #endif } } // namespace trace -#endif // DD_CLR_PROFILER_PAL_H_ +#endif // DD_CLR_PROFILER_PAL_H_ diff --git a/src/Datadog.Trace.ClrProfiler.Native/rejit_handler.cpp b/src/Datadog.Trace.ClrProfiler.Native/rejit_handler.cpp index 2770658727..54bd215ebe 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/rejit_handler.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/rejit_handler.cpp @@ -1,194 +1,209 @@ #include "rejit_handler.h" -namespace trace { - -RejitItem::RejitItem(int length, ModuleID* modulesId, mdMethodDef* methodDefs) { - length_ = length; - if (length > 0) { - ModuleID* myModulesIds = new ModuleID[length]; - memcpy(myModulesIds, modulesId, length * sizeof(ModuleID)); - moduleIds_ = myModulesIds; - - mdMethodDef* myMethodDefs = new mdMethodDef[length]; - memcpy(myMethodDefs, methodDefs, length * sizeof(mdMethodDef)); - methodDefs_ = myMethodDefs; - } +namespace trace +{ + +RejitItem::RejitItem(int length, ModuleID* modulesId, mdMethodDef* methodDefs) +{ + length_ = length; + if (length > 0) + { + ModuleID* myModulesIds = new ModuleID[length]; + memcpy(myModulesIds, modulesId, length * sizeof(ModuleID)); + moduleIds_ = myModulesIds; + + mdMethodDef* myMethodDefs = new mdMethodDef[length]; + memcpy(myMethodDefs, methodDefs, length * sizeof(mdMethodDef)); + methodDefs_ = myMethodDefs; + } } -void RejitItem::DeleteArray() { - if (moduleIds_ != nullptr) { - delete[] moduleIds_; - moduleIds_ = nullptr; - } - if (methodDefs_ != nullptr) { - delete[] methodDefs_; - methodDefs_ = nullptr; - } +void RejitItem::DeleteArray() +{ + if (moduleIds_ != nullptr) + { + delete[] moduleIds_; + moduleIds_ = nullptr; + } + if (methodDefs_ != nullptr) + { + delete[] methodDefs_; + methodDefs_ = nullptr; + } } -void RejitHandlerModuleMethod::AddFunctionId(FunctionID functionId) { - std::lock_guard guard(functionsIds_lock); - auto moduleHandler = (RejitHandlerModule*)module; - auto rejitHandler = (RejitHandler*)moduleHandler->GetHandler(); - functionsIds.insert(functionId); - rejitHandler->_addFunctionToSet(functionId, this); +void RejitHandlerModuleMethod::AddFunctionId(FunctionID functionId) +{ + std::lock_guard guard(functionsIds_lock); + auto moduleHandler = (RejitHandlerModule*) module; + auto rejitHandler = (RejitHandler*) moduleHandler->GetHandler(); + functionsIds.insert(functionId); + rejitHandler->_addFunctionToSet(functionId, this); } -bool RejitHandlerModuleMethod::ExistFunctionId(FunctionID functionId) { - std::lock_guard guard(functionsIds_lock); - return functionsIds.find(functionId) != functionsIds.end(); +bool RejitHandlerModuleMethod::ExistFunctionId(FunctionID functionId) +{ + std::lock_guard guard(functionsIds_lock); + return functionsIds.find(functionId) != functionsIds.end(); } -RejitHandlerModuleMethod* RejitHandlerModule::GetOrAddMethod(mdMethodDef methodDef) { - std::lock_guard guard(methods_lock); +RejitHandlerModuleMethod* RejitHandlerModule::GetOrAddMethod(mdMethodDef methodDef) +{ + std::lock_guard guard(methods_lock); - auto find_res = methods.find(methodDef); - if (find_res != methods.end()) { - return find_res->second; - } + auto find_res = methods.find(methodDef); + if (find_res != methods.end()) + { + return find_res->second; + } - RejitHandlerModuleMethod* methodHandler = new RejitHandlerModuleMethod(methodDef, this); - methods[methodDef] = methodHandler; - return methodHandler; + RejitHandlerModuleMethod* methodHandler = new RejitHandlerModuleMethod(methodDef, this); + methods[methodDef] = methodHandler; + return methodHandler; } -bool RejitHandlerModule::TryGetMethod(mdMethodDef methodDef, - RejitHandlerModuleMethod** methodHandler) { - std::lock_guard guard(methods_lock); - - auto find_res = methods.find(methodDef); - if (find_res != methods.end()) { - *methodHandler = find_res->second; - return true; - } - *methodHandler = nullptr; - return false; +bool RejitHandlerModule::TryGetMethod(mdMethodDef methodDef, RejitHandlerModuleMethod** methodHandler) +{ + std::lock_guard guard(methods_lock); + + auto find_res = methods.find(methodDef); + if (find_res != methods.end()) + { + *methodHandler = find_res->second; + return true; + } + *methodHandler = nullptr; + return false; } -RejitHandlerModuleMethod* RejitHandler::GetModuleMethodFromFunctionId( - FunctionID functionId) { - { - std::lock_guard guard(methodByFunctionId_lock); - auto find_res = methodByFunctionId.find(functionId); - if (find_res != methodByFunctionId.end()) { - return find_res->second; +RejitHandlerModuleMethod* RejitHandler::GetModuleMethodFromFunctionId(FunctionID functionId) +{ + { + std::lock_guard guard(methodByFunctionId_lock); + auto find_res = methodByFunctionId.find(functionId); + if (find_res != methodByFunctionId.end()) + { + return find_res->second; + } + } + + ModuleID moduleId; + mdToken function_token = mdTokenNil; + + HRESULT hr = profilerInfo->GetFunctionInfo(functionId, nullptr, &moduleId, &function_token); + + if (FAILED(hr)) + { + Warn("RejitHandler::GetModuleMethodFromFunctionId: Call to " + "ICorProfilerInfo4.GetFunctionInfo() " + "failed for ", + functionId); + methodByFunctionId[functionId] = nullptr; + return nullptr; } - } - - ModuleID moduleId; - mdToken function_token = mdTokenNil; - - HRESULT hr = profilerInfo->GetFunctionInfo(functionId, nullptr, &moduleId, - &function_token); - - if (FAILED(hr)) { - Warn( - "RejitHandler::GetModuleMethodFromFunctionId: Call to " - "ICorProfilerInfo4.GetFunctionInfo() " - "failed for ", - functionId); - methodByFunctionId[functionId] = nullptr; - return nullptr; - } - - auto moduleHandler = GetOrAddModule(moduleId); - auto methodHandler = moduleHandler->GetOrAddMethod(function_token); - methodHandler->AddFunctionId(functionId); - return methodHandler; + + auto moduleHandler = GetOrAddModule(moduleId); + auto methodHandler = moduleHandler->GetOrAddMethod(function_token); + methodHandler->AddFunctionId(functionId); + return methodHandler; } -RejitHandlerModule* RejitHandler::GetOrAddModule(ModuleID moduleId) { - std::lock_guard guard(modules_lock); +RejitHandlerModule* RejitHandler::GetOrAddModule(ModuleID moduleId) +{ + std::lock_guard guard(modules_lock); - auto find_res = modules.find(moduleId); - if (find_res != modules.end()) { - return find_res->second; - } + auto find_res = modules.find(moduleId); + if (find_res != modules.end()) + { + return find_res->second; + } - RejitHandlerModule* moduleHandler = new RejitHandlerModule(moduleId, this); - modules[moduleId] = moduleHandler; - return moduleHandler; + RejitHandlerModule* moduleHandler = new RejitHandlerModule(moduleId, this); + modules[moduleId] = moduleHandler; + return moduleHandler; } -bool RejitHandler::TryGetModule(ModuleID moduleId, - RejitHandlerModule** moduleHandler) { - std::lock_guard guard(modules_lock); - - auto find_res = modules.find(moduleId); - if (find_res != modules.end()) { - *moduleHandler = find_res->second; - return true; - } - *moduleHandler = nullptr; - return false; +bool RejitHandler::TryGetModule(ModuleID moduleId, RejitHandlerModule** moduleHandler) +{ + std::lock_guard guard(modules_lock); + + auto find_res = modules.find(moduleId); + if (find_res != modules.end()) + { + *moduleHandler = find_res->second; + return true; + } + *moduleHandler = nullptr; + return false; } -HRESULT RejitHandler::NotifyReJITParameters( - ModuleID moduleId, mdMethodDef methodId, - ICorProfilerFunctionControl* pFunctionControl, ModuleMetadata* metadata) { - auto moduleHandler = GetOrAddModule(moduleId); - moduleHandler->SetModuleMetadata(metadata); - auto methodHandler = moduleHandler->GetOrAddMethod(methodId); - methodHandler->SetFunctionControl(pFunctionControl); - - if (methodHandler->GetMethodDef() == mdMethodDefNil) { - Warn( - "NotifyReJITCompilationStarted: mdMethodDef is missing for " - "MethodDef: ", - methodId); - return S_FALSE; - } - - if (methodHandler->GetFunctionControl() == nullptr) { - Warn( - "NotifyReJITCompilationStarted: ICorProfilerFunctionControl is missing " - "for " - "MethodDef: ", - methodId); - return S_FALSE; - } - - if (methodHandler->GetFunctionInfo() == nullptr) { - Warn( - "NotifyReJITCompilationStarted: FunctionInfo is missing for " - "MethodDef: ", - methodId); - return S_FALSE; - } - - if (methodHandler->GetMethodReplacement() == nullptr) { - Warn( - "NotifyReJITCompilationStarted: MethodReplacement is missing for " - "MethodDef: ", - methodId); - return S_FALSE; - } - - if (moduleHandler->GetModuleId() == 0) { - Warn( - "NotifyReJITCompilationStarted: ModuleID is missing for " - "MethodDef: ", - methodId); - return S_FALSE; - } - - if (moduleHandler->GetModuleMetadata() == nullptr) { - Warn( - "NotifyReJITCompilationStarted: ModuleMetadata is missing for " - "MethodDef: ", - methodId); - return S_FALSE; - } - - return rewriteCallback(moduleHandler, methodHandler); +HRESULT RejitHandler::NotifyReJITParameters(ModuleID moduleId, mdMethodDef methodId, + ICorProfilerFunctionControl* pFunctionControl, ModuleMetadata* metadata) +{ + auto moduleHandler = GetOrAddModule(moduleId); + moduleHandler->SetModuleMetadata(metadata); + auto methodHandler = moduleHandler->GetOrAddMethod(methodId); + methodHandler->SetFunctionControl(pFunctionControl); + + if (methodHandler->GetMethodDef() == mdMethodDefNil) + { + Warn("NotifyReJITCompilationStarted: mdMethodDef is missing for " + "MethodDef: ", + methodId); + return S_FALSE; + } + + if (methodHandler->GetFunctionControl() == nullptr) + { + Warn("NotifyReJITCompilationStarted: ICorProfilerFunctionControl is missing " + "for " + "MethodDef: ", + methodId); + return S_FALSE; + } + + if (methodHandler->GetFunctionInfo() == nullptr) + { + Warn("NotifyReJITCompilationStarted: FunctionInfo is missing for " + "MethodDef: ", + methodId); + return S_FALSE; + } + + if (methodHandler->GetMethodReplacement() == nullptr) + { + Warn("NotifyReJITCompilationStarted: MethodReplacement is missing for " + "MethodDef: ", + methodId); + return S_FALSE; + } + + if (moduleHandler->GetModuleId() == 0) + { + Warn("NotifyReJITCompilationStarted: ModuleID is missing for " + "MethodDef: ", + methodId); + return S_FALSE; + } + + if (moduleHandler->GetModuleMetadata() == nullptr) + { + Warn("NotifyReJITCompilationStarted: ModuleMetadata is missing for " + "MethodDef: ", + methodId); + return S_FALSE; + } + + return rewriteCallback(moduleHandler, methodHandler); } -HRESULT RejitHandler::NotifyReJITCompilationStarted(FunctionID functionId, ReJITID rejitId) { - return S_OK; +HRESULT RejitHandler::NotifyReJITCompilationStarted(FunctionID functionId, ReJITID rejitId) +{ + return S_OK; } -void RejitHandler::_addFunctionToSet(FunctionID functionId, - RejitHandlerModuleMethod* method) { - std::lock_guard guard(methodByFunctionId_lock); - methodByFunctionId[functionId] = method; +void RejitHandler::_addFunctionToSet(FunctionID functionId, RejitHandlerModuleMethod* method) +{ + std::lock_guard guard(methodByFunctionId_lock); + methodByFunctionId[functionId] = method; } -} // namespace trace \ No newline at end of file +} // namespace trace \ No newline at end of file diff --git a/src/Datadog.Trace.ClrProfiler.Native/rejit_handler.h b/src/Datadog.Trace.ClrProfiler.Native/rejit_handler.h index 2636a82e86..21a6cc11f1 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/rejit_handler.h +++ b/src/Datadog.Trace.ClrProfiler.Native/rejit_handler.h @@ -12,170 +12,206 @@ #include "logging.h" #include "module_metadata.h" -namespace trace { +namespace trace +{ -struct RejitItem { - int length_ = 0; - ModuleID* moduleIds_ = nullptr; - mdMethodDef* methodDefs_ = nullptr; +struct RejitItem +{ + int length_ = 0; + ModuleID* moduleIds_ = nullptr; + mdMethodDef* methodDefs_ = nullptr; - RejitItem(int length, ModuleID* modulesId, mdMethodDef* methodDefs); - void DeleteArray(); + RejitItem(int length, ModuleID* modulesId, mdMethodDef* methodDefs); + void DeleteArray(); }; - /// /// Rejit handler representation of a method /// -class RejitHandlerModuleMethod { - private: - mdMethodDef methodDef; - ICorProfilerFunctionControl* pFunctionControl; - FunctionInfo* functionInfo; - MethodReplacement* methodReplacement; - std::mutex functionsIds_lock; - std::unordered_set functionsIds; - void* module; - - public: - RejitHandlerModuleMethod(mdMethodDef methodDef, void* module) { - this->methodDef = methodDef; - this->pFunctionControl = nullptr; - this->module = module; - this->functionInfo = nullptr; - this->methodReplacement = nullptr; - } - inline mdMethodDef GetMethodDef() { return this->methodDef; } - inline ICorProfilerFunctionControl* GetFunctionControl() { - return this->pFunctionControl; - } - inline void SetFunctionControl( - ICorProfilerFunctionControl* pFunctionControl) { - this->pFunctionControl = pFunctionControl; - } - inline FunctionInfo* GetFunctionInfo() { return this->functionInfo; } - inline void SetFunctionInfo(FunctionInfo* functionInfo) { - this->functionInfo = functionInfo; - } - inline MethodReplacement* GetMethodReplacement() { - return this->methodReplacement; - } - inline void SetMethodReplacement(MethodReplacement* methodReplacement) { - this->methodReplacement = methodReplacement; - } - inline void* GetModule() { return this->module; } - void AddFunctionId(FunctionID functionId); - bool ExistFunctionId(FunctionID functionId); +class RejitHandlerModuleMethod +{ +private: + mdMethodDef methodDef; + ICorProfilerFunctionControl* pFunctionControl; + FunctionInfo* functionInfo; + MethodReplacement* methodReplacement; + std::mutex functionsIds_lock; + std::unordered_set functionsIds; + void* module; + +public: + RejitHandlerModuleMethod(mdMethodDef methodDef, void* module) + { + this->methodDef = methodDef; + this->pFunctionControl = nullptr; + this->module = module; + this->functionInfo = nullptr; + this->methodReplacement = nullptr; + } + inline mdMethodDef GetMethodDef() + { + return this->methodDef; + } + inline ICorProfilerFunctionControl* GetFunctionControl() + { + return this->pFunctionControl; + } + inline void SetFunctionControl(ICorProfilerFunctionControl* pFunctionControl) + { + this->pFunctionControl = pFunctionControl; + } + inline FunctionInfo* GetFunctionInfo() + { + return this->functionInfo; + } + inline void SetFunctionInfo(FunctionInfo* functionInfo) + { + this->functionInfo = functionInfo; + } + inline MethodReplacement* GetMethodReplacement() + { + return this->methodReplacement; + } + inline void SetMethodReplacement(MethodReplacement* methodReplacement) + { + this->methodReplacement = methodReplacement; + } + inline void* GetModule() + { + return this->module; + } + void AddFunctionId(FunctionID functionId); + bool ExistFunctionId(FunctionID functionId); }; /// /// Rejit handler representation of a module /// -class RejitHandlerModule { - private: - ModuleID moduleId; - ModuleMetadata* metadata; - std::mutex methods_lock; - std::unordered_map methods; - void* handler; - - public: - RejitHandlerModule(ModuleID moduleId, void* handler) { - this->moduleId = moduleId; - this->metadata = nullptr; - this->handler = handler; - } - inline ModuleID GetModuleId() { return this->moduleId; } - inline ModuleMetadata* GetModuleMetadata() { return this->metadata; } - inline void SetModuleMetadata(ModuleMetadata* metadata) { - this->metadata = metadata; - } - inline void* GetHandler() { return this->handler; } - RejitHandlerModuleMethod* GetOrAddMethod(mdMethodDef methodDef); - bool TryGetMethod(mdMethodDef methodDef, - RejitHandlerModuleMethod** methodHandler); +class RejitHandlerModule +{ +private: + ModuleID moduleId; + ModuleMetadata* metadata; + std::mutex methods_lock; + std::unordered_map methods; + void* handler; + +public: + RejitHandlerModule(ModuleID moduleId, void* handler) + { + this->moduleId = moduleId; + this->metadata = nullptr; + this->handler = handler; + } + inline ModuleID GetModuleId() + { + return this->moduleId; + } + inline ModuleMetadata* GetModuleMetadata() + { + return this->metadata; + } + inline void SetModuleMetadata(ModuleMetadata* metadata) + { + this->metadata = metadata; + } + inline void* GetHandler() + { + return this->handler; + } + RejitHandlerModuleMethod* GetOrAddMethod(mdMethodDef methodDef); + bool TryGetMethod(mdMethodDef methodDef, RejitHandlerModuleMethod** methodHandler); }; /// -/// Class to control the ReJIT mechanism and to make sure all the required +/// Class to control the ReJIT mechanism and to make sure all the required /// information is present before calling a method rewrite /// -class RejitHandler { - private: - std::mutex modules_lock; - std::unordered_map modules; - std::mutex methodByFunctionId_lock; - std::unordered_map methodByFunctionId; - ICorProfilerInfo4* profilerInfo; - std::function rewriteCallback; - - BlockingQueue* rejit_queue_; - std::thread* rejit_queue_thread_; - - RejitHandlerModuleMethod* GetModuleMethodFromFunctionId(FunctionID functionId); - - public: - RejitHandler(ICorProfilerInfo4* pInfo, - std::function rewriteCallback) { - this->profilerInfo = pInfo; - this->rewriteCallback = rewriteCallback; - this->rejit_queue_ = new BlockingQueue(); - this->rejit_queue_thread_ = new std::thread(enqueue_thread, this); - } - RejitHandlerModule* GetOrAddModule(ModuleID moduleId); - - bool TryGetModule(ModuleID moduleId, RejitHandlerModule** moduleHandler); - - HRESULT NotifyReJITParameters(ModuleID moduleId, mdMethodDef methodId, - ICorProfilerFunctionControl* pFunctionControl, - ModuleMetadata* metadata); - HRESULT NotifyReJITCompilationStarted(FunctionID functionId, ReJITID rejitId); - void _addFunctionToSet(FunctionID functionId, - RejitHandlerModuleMethod* method); - - void EnqueueForRejit(size_t length, ModuleID* moduleIds, mdMethodDef* methodDefs) { - rejit_queue_->push(RejitItem((int)length, moduleIds, methodDefs)); - } - - void Shutdown() { - rejit_queue_->push(RejitItem(-1, nullptr, nullptr)); - if (rejit_queue_thread_->joinable()) { - rejit_queue_thread_->join(); - } - } - - private: - static void enqueue_thread(RejitHandler* handler) { - auto queue = handler->rejit_queue_; - auto profilerInfo = handler->profilerInfo; - - Info("Initializing ReJIT request thread."); - HRESULT hr = profilerInfo->InitializeCurrentThread(); - if (FAILED(hr)) { - Warn("Call to InitializeCurrentThread fail."); - } - - while (true) { - RejitItem item = queue->pop(); - - if (item.length_ == -1) { - break; - } - - hr = profilerInfo->RequestReJIT((ULONG)item.length_, item.moduleIds_, item.methodDefs_); - if (SUCCEEDED(hr)) { - Info("Request ReJIT done for ", item.length_, " methods"); - } else { - Warn("Error requesting ReJIT for ", item.length_, " methods"); - } - - item.DeleteArray(); - } - Info("Exiting ReJIT request thread."); - } +class RejitHandler +{ +private: + std::mutex modules_lock; + std::unordered_map modules; + std::mutex methodByFunctionId_lock; + std::unordered_map methodByFunctionId; + ICorProfilerInfo4* profilerInfo; + std::function rewriteCallback; + + BlockingQueue* rejit_queue_; + std::thread* rejit_queue_thread_; + + RejitHandlerModuleMethod* GetModuleMethodFromFunctionId(FunctionID functionId); + +public: + RejitHandler(ICorProfilerInfo4* pInfo, + std::function rewriteCallback) + { + this->profilerInfo = pInfo; + this->rewriteCallback = rewriteCallback; + this->rejit_queue_ = new BlockingQueue(); + this->rejit_queue_thread_ = new std::thread(enqueue_thread, this); + } + RejitHandlerModule* GetOrAddModule(ModuleID moduleId); + + bool TryGetModule(ModuleID moduleId, RejitHandlerModule** moduleHandler); + + HRESULT NotifyReJITParameters(ModuleID moduleId, mdMethodDef methodId, + ICorProfilerFunctionControl* pFunctionControl, ModuleMetadata* metadata); + HRESULT NotifyReJITCompilationStarted(FunctionID functionId, ReJITID rejitId); + void _addFunctionToSet(FunctionID functionId, RejitHandlerModuleMethod* method); + + void EnqueueForRejit(size_t length, ModuleID* moduleIds, mdMethodDef* methodDefs) + { + rejit_queue_->push(RejitItem((int) length, moduleIds, methodDefs)); + } + + void Shutdown() + { + rejit_queue_->push(RejitItem(-1, nullptr, nullptr)); + if (rejit_queue_thread_->joinable()) + { + rejit_queue_thread_->join(); + } + } + +private: + static void enqueue_thread(RejitHandler* handler) + { + auto queue = handler->rejit_queue_; + auto profilerInfo = handler->profilerInfo; + + Info("Initializing ReJIT request thread."); + HRESULT hr = profilerInfo->InitializeCurrentThread(); + if (FAILED(hr)) + { + Warn("Call to InitializeCurrentThread fail."); + } + + while (true) + { + RejitItem item = queue->pop(); + + if (item.length_ == -1) + { + break; + } + + hr = profilerInfo->RequestReJIT((ULONG) item.length_, item.moduleIds_, item.methodDefs_); + if (SUCCEEDED(hr)) + { + Info("Request ReJIT done for ", item.length_, " methods"); + } + else + { + Warn("Error requesting ReJIT for ", item.length_, " methods"); + } + + item.DeleteArray(); + } + Info("Exiting ReJIT request thread."); + } }; -} // namespace trace +} // namespace trace -#endif // DD_CLR_PROFILER_REJIT_HANDLER_H_ \ No newline at end of file +#endif // DD_CLR_PROFILER_REJIT_HANDLER_H_ \ No newline at end of file diff --git a/src/Datadog.Trace.ClrProfiler.Native/resource.h b/src/Datadog.Trace.ClrProfiler.Native/resource.h index 2e4ce6b77d..d79bb130c4 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/resource.h +++ b/src/Datadog.Trace.ClrProfiler.Native/resource.h @@ -1,18 +1,18 @@ //{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by Resource.rc -#define NETCOREAPP20_MANAGED_ENTRYPOINT_DLL 401 +#define NETCOREAPP20_MANAGED_ENTRYPOINT_DLL 401 #define NETCOREAPP20_MANAGED_ENTRYPOINT_SYMBOLS 402 -#define NET45_MANAGED_ENTRYPOINT_DLL 403 -#define NET45_MANAGED_ENTRYPOINT_SYMBOLS 404 +#define NET45_MANAGED_ENTRYPOINT_DLL 403 +#define NET45_MANAGED_ENTRYPOINT_SYMBOLS 404 // Next default values for new objects -// +// #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/src/Datadog.Trace.ClrProfiler.Native/sig_helpers.cpp b/src/Datadog.Trace.ClrProfiler.Native/sig_helpers.cpp index cb8731377f..af53e2a1f6 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/sig_helpers.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/sig_helpers.cpp @@ -1,266 +1,312 @@ #include "sig_helpers.h" -namespace trace { - -bool ParseNumber(PCCOR_SIGNATURE* p_sig, ULONG* number) { - ULONG result = CorSigUncompressData(*p_sig, number); - if (result == -1) { - return false; - } +namespace trace +{ + +bool ParseNumber(PCCOR_SIGNATURE* p_sig, ULONG* number) +{ + ULONG result = CorSigUncompressData(*p_sig, number); + if (result == -1) + { + return false; + } - *p_sig += result; - return true; + *p_sig += result; + return true; } -bool ParseTypeDefOrRefEncoded(PCCOR_SIGNATURE* p_sig) { - mdToken type_token; - ULONG result; - result = CorSigUncompressToken(*p_sig, &type_token); - if (result == -1) { - return false; - } +bool ParseTypeDefOrRefEncoded(PCCOR_SIGNATURE* p_sig) +{ + mdToken type_token; + ULONG result; + result = CorSigUncompressToken(*p_sig, &type_token); + if (result == -1) + { + return false; + } - *p_sig += result; - return true; + *p_sig += result; + return true; } -bool ParseCustomMod(PCCOR_SIGNATURE* p_sig) { - if (**p_sig == ELEMENT_TYPE_CMOD_OPT || **p_sig == ELEMENT_TYPE_CMOD_REQD) { - *p_sig += 1; - return ParseTypeDefOrRefEncoded(p_sig); - } +bool ParseCustomMod(PCCOR_SIGNATURE* p_sig) +{ + if (**p_sig == ELEMENT_TYPE_CMOD_OPT || **p_sig == ELEMENT_TYPE_CMOD_REQD) + { + *p_sig += 1; + return ParseTypeDefOrRefEncoded(p_sig); + } - return false; + return false; } -bool ParseOptionalCustomMods(PCCOR_SIGNATURE* p_sig) { - while (true) { - switch (**p_sig) { - case ELEMENT_TYPE_CMOD_OPT: - case ELEMENT_TYPE_CMOD_REQD: - if (!ParseCustomMod(p_sig)) { - return false; +bool ParseOptionalCustomMods(PCCOR_SIGNATURE* p_sig) +{ + while (true) + { + switch (**p_sig) + { + case ELEMENT_TYPE_CMOD_OPT: + case ELEMENT_TYPE_CMOD_REQD: + if (!ParseCustomMod(p_sig)) + { + return false; + } + break; + default: + return true; } - break; - default: - return true; } - } - return false; + return false; } -bool ParseRetType(PCCOR_SIGNATURE* p_sig) { - if (!ParseOptionalCustomMods(p_sig)) { - return false; - } +bool ParseRetType(PCCOR_SIGNATURE* p_sig) +{ + if (!ParseOptionalCustomMods(p_sig)) + { + return false; + } - if (**p_sig == ELEMENT_TYPE_TYPEDBYREF || - **p_sig == ELEMENT_TYPE_VOID) { - *p_sig += 1; - return true; - } + if (**p_sig == ELEMENT_TYPE_TYPEDBYREF || **p_sig == ELEMENT_TYPE_VOID) + { + *p_sig += 1; + return true; + } - if (**p_sig == ELEMENT_TYPE_BYREF) { - *p_sig += 1; - } + if (**p_sig == ELEMENT_TYPE_BYREF) + { + *p_sig += 1; + } - return ParseType(p_sig); + return ParseType(p_sig); } -bool ParseParam(PCCOR_SIGNATURE* p_sig) { - if (!ParseOptionalCustomMods(p_sig)) { - return false; - } +bool ParseParam(PCCOR_SIGNATURE* p_sig) +{ + if (!ParseOptionalCustomMods(p_sig)) + { + return false; + } - if (**p_sig == ELEMENT_TYPE_TYPEDBYREF) { - *p_sig += 1; - return true; - } + if (**p_sig == ELEMENT_TYPE_TYPEDBYREF) + { + *p_sig += 1; + return true; + } - if (**p_sig == ELEMENT_TYPE_BYREF) { - *p_sig += 1; - } + if (**p_sig == ELEMENT_TYPE_BYREF) + { + *p_sig += 1; + } - return ParseType(p_sig); + return ParseType(p_sig); } -bool ParseMethod(PCCOR_SIGNATURE* p_sig) { - // Format: [[HASTHIS] [EXPLICITTHIS]] (DEFAULT|VARARG|GENERIC GenParamCount) - // ParamCount RetType Param* [SENTINEL Param+] - if (**p_sig == IMAGE_CEE_CS_CALLCONV_GENERIC) { - *p_sig += 1; +bool ParseMethod(PCCOR_SIGNATURE* p_sig) +{ + // Format: [[HASTHIS] [EXPLICITTHIS]] (DEFAULT|VARARG|GENERIC GenParamCount) + // ParamCount RetType Param* [SENTINEL Param+] + if (**p_sig == IMAGE_CEE_CS_CALLCONV_GENERIC) + { + *p_sig += 1; - ULONG generic_count = 0; - if (!ParseNumber(p_sig, &generic_count)) { - return false; + ULONG generic_count = 0; + if (!ParseNumber(p_sig, &generic_count)) + { + return false; + } } - } - - ULONG param_count = 0; - if (!ParseNumber(p_sig, ¶m_count)) { - return false; - } - if (!ParseRetType(p_sig)) { - return false; - } - - bool sentinel_found = false; - for (ULONG i = 0; i < param_count; i++) { - if (**p_sig == ELEMENT_TYPE_SENTINEL) { - if (sentinel_found) { + ULONG param_count = 0; + if (!ParseNumber(p_sig, ¶m_count)) + { return false; - } + } - sentinel_found = true; - *p_sig += 1; + if (!ParseRetType(p_sig)) + { + return false; } + bool sentinel_found = false; + for (ULONG i = 0; i < param_count; i++) + { + if (**p_sig == ELEMENT_TYPE_SENTINEL) + { + if (sentinel_found) + { + return false; + } + + sentinel_found = true; + *p_sig += 1; + } - if (!ParseParam(p_sig)) { - return false; + if (!ParseParam(p_sig)) + { + return false; + } } - } - return true; + return true; } -bool ParseArrayShape(PCCOR_SIGNATURE* p_sig) { - // Format: Rank NumSizes Size* NumLoBounds LoBound* - ULONG rank = 0, numsizes = 0, size = 0; - if (!ParseNumber(p_sig, &rank) || !ParseNumber(p_sig, &numsizes)) { - return false; - } +bool ParseArrayShape(PCCOR_SIGNATURE* p_sig) +{ + // Format: Rank NumSizes Size* NumLoBounds LoBound* + ULONG rank = 0, numsizes = 0, size = 0; + if (!ParseNumber(p_sig, &rank) || !ParseNumber(p_sig, &numsizes)) + { + return false; + } - for (ULONG i = 0; i < numsizes; i++) { - if (!ParseNumber(p_sig, &size)) { - return false; + for (ULONG i = 0; i < numsizes; i++) + { + if (!ParseNumber(p_sig, &size)) + { + return false; + } } - } - if (!ParseNumber(p_sig, &numsizes)) { - return false; - } + if (!ParseNumber(p_sig, &numsizes)) + { + return false; + } - for (ULONG i = 0; i < numsizes; i++) { - if (!ParseNumber(p_sig, &size)) { - return false; + for (ULONG i = 0; i < numsizes; i++) + { + if (!ParseNumber(p_sig, &size)) + { + return false; + } } - } - return true; + return true; } // Returns whether or not the Type signature at the given address could be parsed. // If successful, the input pointer will point to the next byte following the Type signature. // If not, the input pointer may point to invalid data. -bool ParseType(PCCOR_SIGNATURE* p_sig) { - /* - Format = BOOLEAN | CHAR | I1 | U1 | U2 | U2 | I4 | U4 | I8 | U8 | R4 | R8 | I | U | STRING | OBJECT - | VALUETYPE TypeDefOrRefEncoded - | CLASS TypeDefOrRefEncoded - | PTR CustomMod* VOID - | PTR CustomMod* Type - | FNPTR MethodDefSig - | FNPTR MethodRefSig - | ARRAY Type ArrayShape - | SZARRAY CustomMod* Type - | GENERICINST (CLASS | VALUETYPE) TypeDefOrRefEncoded GenArgCount Type * - | VAR Number - | MVAR Number - */ - - const auto cor_element_type = CorElementType(**p_sig); - ULONG number = 0; - *p_sig += 1; - - switch (cor_element_type) { - case ELEMENT_TYPE_VOID: - case ELEMENT_TYPE_BOOLEAN: - case ELEMENT_TYPE_CHAR: - case ELEMENT_TYPE_I1: - case ELEMENT_TYPE_U1: - case ELEMENT_TYPE_I2: - case ELEMENT_TYPE_U2: - case ELEMENT_TYPE_I4: - case ELEMENT_TYPE_U4: - case ELEMENT_TYPE_I8: - case ELEMENT_TYPE_U8: - case ELEMENT_TYPE_R4: - case ELEMENT_TYPE_R8: - case ELEMENT_TYPE_STRING: - case ELEMENT_TYPE_OBJECT: - return true; - - case ELEMENT_TYPE_PTR: - // Format: PTR CustomMod* VOID - // Format: PTR CustomMod* Type - if (!ParseOptionalCustomMods(p_sig)) { - return false; - } - - if (**p_sig == ELEMENT_TYPE_VOID) { - *p_sig += 1; - return true; - } else { - return ParseType(p_sig); - } - - case ELEMENT_TYPE_VALUETYPE: - case ELEMENT_TYPE_CLASS: - // Format: CLASS TypeDefOrRefEncoded - // Format: VALUETYPE TypeDefOrRefEncoded - return ParseTypeDefOrRefEncoded(p_sig); - - case ELEMENT_TYPE_FNPTR: - // Format: FNPTR MethodDefSig - // Format: FNPTR MethodRefSig - return ParseMethod(p_sig); - - case ELEMENT_TYPE_ARRAY: - // Format: ARRAY Type ArrayShape - if (!ParseType(p_sig)) { - return false; - } - return ParseArrayShape(p_sig); - - case ELEMENT_TYPE_SZARRAY: - // Format: SZARRAY CustomMod* Type - if (!ParseOptionalCustomMods(p_sig)) { - return false; - } - return ParseType(p_sig); - - case ELEMENT_TYPE_GENERICINST: - if (**p_sig != ELEMENT_TYPE_VALUETYPE && **p_sig != ELEMENT_TYPE_CLASS) { - return false; - } - - *p_sig += 1; - if (!ParseTypeDefOrRefEncoded(p_sig)) { - return false; - } - - if (!ParseNumber(p_sig, &number)) { - return false; - } +bool ParseType(PCCOR_SIGNATURE* p_sig) +{ + /* + Format = BOOLEAN | CHAR | I1 | U1 | U2 | U2 | I4 | U4 | I8 | U8 | R4 | R8 | I | U | STRING | OBJECT + | VALUETYPE TypeDefOrRefEncoded + | CLASS TypeDefOrRefEncoded + | PTR CustomMod* VOID + | PTR CustomMod* Type + | FNPTR MethodDefSig + | FNPTR MethodRefSig + | ARRAY Type ArrayShape + | SZARRAY CustomMod* Type + | GENERICINST (CLASS | VALUETYPE) TypeDefOrRefEncoded GenArgCount Type * + | VAR Number + | MVAR Number + */ + + const auto cor_element_type = CorElementType(**p_sig); + ULONG number = 0; + *p_sig += 1; - for (ULONG i = 0; i < number; i++) { - if (!ParseType(p_sig)) { - return false; - } - } - return true; - - case ELEMENT_TYPE_VAR: - case ELEMENT_TYPE_MVAR: - // Format: VAR Number - // Format: MVAR Number - return ParseNumber(p_sig, &number); - - default: - return false; - } + switch (cor_element_type) + { + case ELEMENT_TYPE_VOID: + case ELEMENT_TYPE_BOOLEAN: + case ELEMENT_TYPE_CHAR: + case ELEMENT_TYPE_I1: + case ELEMENT_TYPE_U1: + case ELEMENT_TYPE_I2: + case ELEMENT_TYPE_U2: + case ELEMENT_TYPE_I4: + case ELEMENT_TYPE_U4: + case ELEMENT_TYPE_I8: + case ELEMENT_TYPE_U8: + case ELEMENT_TYPE_R4: + case ELEMENT_TYPE_R8: + case ELEMENT_TYPE_STRING: + case ELEMENT_TYPE_OBJECT: + return true; + + case ELEMENT_TYPE_PTR: + // Format: PTR CustomMod* VOID + // Format: PTR CustomMod* Type + if (!ParseOptionalCustomMods(p_sig)) + { + return false; + } + + if (**p_sig == ELEMENT_TYPE_VOID) + { + *p_sig += 1; + return true; + } + else + { + return ParseType(p_sig); + } + + case ELEMENT_TYPE_VALUETYPE: + case ELEMENT_TYPE_CLASS: + // Format: CLASS TypeDefOrRefEncoded + // Format: VALUETYPE TypeDefOrRefEncoded + return ParseTypeDefOrRefEncoded(p_sig); + + case ELEMENT_TYPE_FNPTR: + // Format: FNPTR MethodDefSig + // Format: FNPTR MethodRefSig + return ParseMethod(p_sig); + + case ELEMENT_TYPE_ARRAY: + // Format: ARRAY Type ArrayShape + if (!ParseType(p_sig)) + { + return false; + } + return ParseArrayShape(p_sig); + + case ELEMENT_TYPE_SZARRAY: + // Format: SZARRAY CustomMod* Type + if (!ParseOptionalCustomMods(p_sig)) + { + return false; + } + return ParseType(p_sig); + + case ELEMENT_TYPE_GENERICINST: + if (**p_sig != ELEMENT_TYPE_VALUETYPE && **p_sig != ELEMENT_TYPE_CLASS) + { + return false; + } + + *p_sig += 1; + if (!ParseTypeDefOrRefEncoded(p_sig)) + { + return false; + } + + if (!ParseNumber(p_sig, &number)) + { + return false; + } + + for (ULONG i = 0; i < number; i++) + { + if (!ParseType(p_sig)) + { + return false; + } + } + return true; + + case ELEMENT_TYPE_VAR: + case ELEMENT_TYPE_MVAR: + // Format: VAR Number + // Format: MVAR Number + return ParseNumber(p_sig, &number); + + default: + return false; + } } -} \ No newline at end of file +} // namespace trace \ No newline at end of file diff --git a/src/Datadog.Trace.ClrProfiler.Native/sig_helpers.h b/src/Datadog.Trace.ClrProfiler.Native/sig_helpers.h index 483ab98548..50c458e8e1 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/sig_helpers.h +++ b/src/Datadog.Trace.ClrProfiler.Native/sig_helpers.h @@ -2,8 +2,9 @@ #include -namespace trace { +namespace trace +{ bool ParseType(PCCOR_SIGNATURE* p_sig); -} // namespace trace +} // namespace trace diff --git a/src/Datadog.Trace.ClrProfiler.Native/stats.h b/src/Datadog.Trace.ClrProfiler.Native/stats.h index dc0e17fb34..952b8b4ab4 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/stats.h +++ b/src/Datadog.Trace.ClrProfiler.Native/stats.h @@ -5,123 +5,138 @@ #include "util.h" -namespace trace { +namespace trace +{ -class SWStat { - std::atomic_ullong* _value; - std::chrono::steady_clock::time_point _startTime; +class SWStat +{ + std::atomic_ullong* _value; + std::chrono::steady_clock::time_point _startTime; - public: - SWStat(std::atomic_ullong* value) { - _value = value; - _startTime = std::chrono::steady_clock::now(); - } - ~SWStat() { - auto increment = (std::chrono::steady_clock::now() - _startTime).count(); - _value->fetch_add(increment); - } +public: + SWStat(std::atomic_ullong* value) + { + _value = value; + _startTime = std::chrono::steady_clock::now(); + } + ~SWStat() + { + auto increment = (std::chrono::steady_clock::now() - _startTime).count(); + _value->fetch_add(increment); + } }; -class Stats : public Singleton { - friend class Singleton; +class Stats : public Singleton +{ + friend class Singleton; - private: - std::atomic_ullong callTargetRequestRejit = {0}; - std::atomic_ullong callTargetRewriter = {0}; - std::atomic_ullong jitInlining = {0}; - std::atomic_ullong jitCompilationStarted = {0}; - std::atomic_ullong moduleUnloadStarted = {0}; - std::atomic_ullong moduleLoadFinished = {0}; - std::atomic_ullong assemblyLoadFinished = {0}; - std::atomic_ullong initialize = {0}; +private: + std::atomic_ullong callTargetRequestRejit = {0}; + std::atomic_ullong callTargetRewriter = {0}; + std::atomic_ullong jitInlining = {0}; + std::atomic_ullong jitCompilationStarted = {0}; + std::atomic_ullong moduleUnloadStarted = {0}; + std::atomic_ullong moduleLoadFinished = {0}; + std::atomic_ullong assemblyLoadFinished = {0}; + std::atomic_ullong initialize = {0}; - // - std::atomic_uint callTargetRequestRejitCount = {0}; - std::atomic_uint callTargetRewriterCount = {0}; - std::atomic_uint jitInliningCount = {0}; - std::atomic_uint jitCompilationStartedCount = {0}; - std::atomic_uint moduleUnloadStartedCount = {0}; - std::atomic_uint moduleLoadFinishedCount = {0}; - std::atomic_uint assemblyLoadFinishedCount = {0}; + // + std::atomic_uint callTargetRequestRejitCount = {0}; + std::atomic_uint callTargetRewriterCount = {0}; + std::atomic_uint jitInliningCount = {0}; + std::atomic_uint jitCompilationStartedCount = {0}; + std::atomic_uint moduleUnloadStartedCount = {0}; + std::atomic_uint moduleLoadFinishedCount = {0}; + std::atomic_uint assemblyLoadFinishedCount = {0}; - public: - Stats() { - callTargetRequestRejit = 0; - jitInlining = 0; - jitCompilationStarted = 0; - moduleUnloadStarted = 0; - moduleLoadFinished = 0; - assemblyLoadFinished = 0; - initialize = 0; +public: + Stats() + { + callTargetRequestRejit = 0; + jitInlining = 0; + jitCompilationStarted = 0; + moduleUnloadStarted = 0; + moduleLoadFinished = 0; + assemblyLoadFinished = 0; + initialize = 0; - callTargetRequestRejitCount = 0; - jitInliningCount = 0; - jitCompilationStartedCount = 0; - moduleUnloadStartedCount = 0; - moduleLoadFinishedCount = 0; - assemblyLoadFinishedCount = 0; - } - SWStat CallTargetRequestRejitMeasure() { - callTargetRequestRejitCount++; - return SWStat(&callTargetRequestRejit); - } - SWStat CallTargetRewriterCallbackMeasure() { - callTargetRewriterCount++; - return SWStat(&callTargetRewriter); - } - SWStat JITInliningMeasure() { - jitInliningCount++; - return SWStat(&jitInlining); - } - SWStat JITCompilationStartedMeasure() { - jitCompilationStartedCount++; - return SWStat(&jitCompilationStarted); - } - SWStat ModuleUnloadStartedMeasure() { - moduleUnloadStartedCount++; - return SWStat(&moduleUnloadStarted); - } - SWStat ModuleLoadFinishedMeasure() { - moduleLoadFinishedCount++; - return SWStat(&moduleLoadFinished); - } - SWStat AssemblyLoadFinishedMeasure() { - assemblyLoadFinishedCount++; - return SWStat(&assemblyLoadFinished); - } - SWStat InitializeMeasure() { - return SWStat(&initialize); - } - std::string ToString() { - std::stringstream ss; - ss << "[Initialize="; - ss << initialize.load() / 1000000 << "ms"; - ss << ", ModuleLoadFinished="; - ss << moduleLoadFinished.load() / 1000000 << "ms" - << "/" << moduleLoadFinishedCount.load(); - ss << ", CallTargetRequestRejit="; - ss << callTargetRequestRejit.load() / 1000000 << "ms" - << "/" << callTargetRequestRejitCount.load(); - ss << ", CallTargetRewriter="; - ss << callTargetRewriter.load() / 1000000 << "ms" - << "/" << callTargetRewriterCount.load(); - ss << ", AssemblyLoadFinished="; - ss << assemblyLoadFinished.load() / 1000000 << "ms" - << "/" << assemblyLoadFinishedCount.load(); - ss << ", ModuleUnloadStarted="; - ss << moduleUnloadStarted.load() / 1000000 << "ms" - << "/" << moduleUnloadStartedCount.load(); - ss << ", JitCompilationStarted="; - ss << jitCompilationStarted.load() / 1000000 << "ms" - << "/" << jitCompilationStartedCount.load(); - ss << ", JitInlining="; - ss << jitInlining.load() / 1000000 << "ms" - << "/" << jitInliningCount.load(); - ss << "]"; - return ss.str(); - } + callTargetRequestRejitCount = 0; + jitInliningCount = 0; + jitCompilationStartedCount = 0; + moduleUnloadStartedCount = 0; + moduleLoadFinishedCount = 0; + assemblyLoadFinishedCount = 0; + } + SWStat CallTargetRequestRejitMeasure() + { + callTargetRequestRejitCount++; + return SWStat(&callTargetRequestRejit); + } + SWStat CallTargetRewriterCallbackMeasure() + { + callTargetRewriterCount++; + return SWStat(&callTargetRewriter); + } + SWStat JITInliningMeasure() + { + jitInliningCount++; + return SWStat(&jitInlining); + } + SWStat JITCompilationStartedMeasure() + { + jitCompilationStartedCount++; + return SWStat(&jitCompilationStarted); + } + SWStat ModuleUnloadStartedMeasure() + { + moduleUnloadStartedCount++; + return SWStat(&moduleUnloadStarted); + } + SWStat ModuleLoadFinishedMeasure() + { + moduleLoadFinishedCount++; + return SWStat(&moduleLoadFinished); + } + SWStat AssemblyLoadFinishedMeasure() + { + assemblyLoadFinishedCount++; + return SWStat(&assemblyLoadFinished); + } + SWStat InitializeMeasure() + { + return SWStat(&initialize); + } + std::string ToString() + { + std::stringstream ss; + ss << "[Initialize="; + ss << initialize.load() / 1000000 << "ms"; + ss << ", ModuleLoadFinished="; + ss << moduleLoadFinished.load() / 1000000 << "ms" + << "/" << moduleLoadFinishedCount.load(); + ss << ", CallTargetRequestRejit="; + ss << callTargetRequestRejit.load() / 1000000 << "ms" + << "/" << callTargetRequestRejitCount.load(); + ss << ", CallTargetRewriter="; + ss << callTargetRewriter.load() / 1000000 << "ms" + << "/" << callTargetRewriterCount.load(); + ss << ", AssemblyLoadFinished="; + ss << assemblyLoadFinished.load() / 1000000 << "ms" + << "/" << assemblyLoadFinishedCount.load(); + ss << ", ModuleUnloadStarted="; + ss << moduleUnloadStarted.load() / 1000000 << "ms" + << "/" << moduleUnloadStartedCount.load(); + ss << ", JitCompilationStarted="; + ss << jitCompilationStarted.load() / 1000000 << "ms" + << "/" << jitCompilationStartedCount.load(); + ss << ", JitInlining="; + ss << jitInlining.load() / 1000000 << "ms" + << "/" << jitInliningCount.load(); + ss << "]"; + return ss.str(); + } }; -} // namespace trace +} // namespace trace -#endif // DD_CLR_PROFILER_STATS_H_ \ No newline at end of file +#endif // DD_CLR_PROFILER_STATS_H_ \ No newline at end of file diff --git a/src/Datadog.Trace.ClrProfiler.Native/string.cpp b/src/Datadog.Trace.ClrProfiler.Native/string.cpp index 2ec9be5c1e..34951a7ff0 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/string.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/string.cpp @@ -6,51 +6,67 @@ #include "miniutf.hpp" #endif -namespace trace { +namespace trace +{ -std::string ToString(const std::string& str) { return str; } -std::string ToString(const char* str) { return std::string(str); } -std::string ToString(const uint64_t i) { return std::to_string(i); } -std::string ToString(const WSTRING& wstr) { +std::string ToString(const std::string& str) +{ + return str; +} +std::string ToString(const char* str) +{ + return std::string(str); +} +std::string ToString(const uint64_t i) +{ + return std::to_string(i); +} +std::string ToString(const WSTRING& wstr) +{ #ifdef _WIN32 - if (wstr.empty()) return std::string(); + if (wstr.empty()) return std::string(); - std::string tmpStr(tmp_buffer_size, 0); - int size_needed = WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), &tmpStr[0], tmp_buffer_size, NULL, NULL); - if (size_needed < tmp_buffer_size) { - return tmpStr.substr(0, size_needed); - } + std::string tmpStr(tmp_buffer_size, 0); + int size_needed = + WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int) wstr.size(), &tmpStr[0], tmp_buffer_size, NULL, NULL); + if (size_needed < tmp_buffer_size) + { + return tmpStr.substr(0, size_needed); + } - std::string strTo(size_needed, 0); - WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), &strTo[0], size_needed, NULL, NULL); - return strTo; + std::string strTo(size_needed, 0); + WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int) wstr.size(), &strTo[0], size_needed, NULL, NULL); + return strTo; #else - std::u16string ustr(reinterpret_cast(wstr.c_str())); - return miniutf::to_utf8(ustr); + std::u16string ustr(reinterpret_cast(wstr.c_str())); + return miniutf::to_utf8(ustr); #endif } -WSTRING ToWSTRING(const std::string& str) { +WSTRING ToWSTRING(const std::string& str) +{ #ifdef _WIN32 - if (str.empty()) return std::wstring(); + if (str.empty()) return std::wstring(); - std::wstring tmpStr(tmp_buffer_size, 0); - int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &tmpStr[0], tmp_buffer_size); - if (size_needed < tmp_buffer_size) { - return tmpStr.substr(0, size_needed); - } + std::wstring tmpStr(tmp_buffer_size, 0); + int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int) str.size(), &tmpStr[0], tmp_buffer_size); + if (size_needed < tmp_buffer_size) + { + return tmpStr.substr(0, size_needed); + } - std::wstring wstrTo(size_needed, 0); - MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed); - return wstrTo; + std::wstring wstrTo(size_needed, 0); + MultiByteToWideChar(CP_UTF8, 0, &str[0], (int) str.size(), &wstrTo[0], size_needed); + return wstrTo; #else - auto ustr = miniutf::to_utf16(str); - return WSTRING(reinterpret_cast(ustr.c_str())); + auto ustr = miniutf::to_utf16(str); + return WSTRING(reinterpret_cast(ustr.c_str())); #endif } -WSTRING ToWSTRING(const uint64_t i) { - return WSTRING(reinterpret_cast(std::to_wstring(i).c_str())); +WSTRING ToWSTRING(const uint64_t i) +{ + return WSTRING(reinterpret_cast(std::to_wstring(i).c_str())); } -} // namespace trace \ No newline at end of file +} // namespace trace \ No newline at end of file diff --git a/src/Datadog.Trace.ClrProfiler.Native/string.h b/src/Datadog.Trace.ClrProfiler.Native/string.h index 31d3ce1d8f..5102d21e98 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/string.h +++ b/src/Datadog.Trace.ClrProfiler.Native/string.h @@ -13,7 +13,8 @@ #define WStrLen(value) (size_t) std::char_traits::length(value) #endif -namespace trace { +namespace trace +{ typedef std::basic_string WSTRING; @@ -29,6 +30,6 @@ std::string ToString(const WSTRING& wstr); WSTRING ToWSTRING(const std::string& str); WSTRING ToWSTRING(const uint64_t i); -} // namespace trace +} // namespace trace -#endif // DD_CLR_PROFILER_STRING_H_ +#endif // DD_CLR_PROFILER_STRING_H_ diff --git a/src/Datadog.Trace.ClrProfiler.Native/util.cpp b/src/Datadog.Trace.ClrProfiler.Native/util.cpp index 9b36908d55..c09a1f06b0 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/util.cpp +++ b/src/Datadog.Trace.ClrProfiler.Native/util.cpp @@ -1,109 +1,125 @@ #include "util.h" +#include "miniutf.hpp" +#include "pal.h" #include #include #include #include //NOLINT #include -#include "miniutf.hpp" -#include "pal.h" -namespace trace { +namespace trace +{ template -void Split(const WSTRING &s, wchar_t delim, Out result) { - size_t lpos = 0; - for (size_t i = 0; i < s.length(); i++) { - if (s[i] == delim) { - *(result++) = s.substr(lpos, (i - lpos)); - lpos = i + 1; +void Split(const WSTRING& s, wchar_t delim, Out result) +{ + size_t lpos = 0; + for (size_t i = 0; i < s.length(); i++) + { + if (s[i] == delim) + { + *(result++) = s.substr(lpos, (i - lpos)); + lpos = i + 1; + } } - } - *(result++) = s.substr(lpos); + *(result++) = s.substr(lpos); } -std::vector Split(const WSTRING &s, wchar_t delim) { - std::vector elems; - Split(s, delim, std::back_inserter(elems)); - return elems; +std::vector Split(const WSTRING& s, wchar_t delim) +{ + std::vector elems; + Split(s, delim, std::back_inserter(elems)); + return elems; } -WSTRING Trim(const WSTRING &str) { - if (str.length() == 0) { - return WStr(""); - } +WSTRING Trim(const WSTRING& str) +{ + if (str.length() == 0) + { + return WStr(""); + } - WSTRING trimmed = str; + WSTRING trimmed = str; - auto lpos = trimmed.find_first_not_of(WStr(" \t")); - if (lpos != WSTRING::npos && lpos > 0) { - trimmed = trimmed.substr(lpos); - } + auto lpos = trimmed.find_first_not_of(WStr(" \t")); + if (lpos != WSTRING::npos && lpos > 0) + { + trimmed = trimmed.substr(lpos); + } - auto rpos = trimmed.find_last_not_of(WStr(" \t")); - if (rpos != WSTRING::npos) { - trimmed = trimmed.substr(0, rpos + 1); - } + auto rpos = trimmed.find_last_not_of(WStr(" \t")); + if (rpos != WSTRING::npos) + { + trimmed = trimmed.substr(0, rpos + 1); + } - return trimmed; + return trimmed; } -WSTRING GetEnvironmentValue(const WSTRING &name) { +WSTRING GetEnvironmentValue(const WSTRING& name) +{ #ifdef _WIN32 - const size_t max_buf_size = 4096; - WSTRING buf(max_buf_size, 0); - auto len = - GetEnvironmentVariable(name.data(), buf.data(), (DWORD)(buf.size())); - return Trim(buf.substr(0, len)); + const size_t max_buf_size = 4096; + WSTRING buf(max_buf_size, 0); + auto len = GetEnvironmentVariable(name.data(), buf.data(), (DWORD)(buf.size())); + return Trim(buf.substr(0, len)); #else - auto cstr = std::getenv(ToString(name).c_str()); - if (cstr == nullptr) { - return WStr(""); - } - std::string str(cstr); - auto wstr = ToWSTRING(str); - return Trim(wstr); + auto cstr = std::getenv(ToString(name).c_str()); + if (cstr == nullptr) + { + return WStr(""); + } + std::string str(cstr); + auto wstr = ToWSTRING(str); + return Trim(wstr); #endif } -std::vector GetEnvironmentValues(const WSTRING &name, - const wchar_t delim) { - std::vector values; - for (auto s : Split(GetEnvironmentValue(name), delim)) { - s = Trim(s); - if (!s.empty()) { - values.push_back(s); +std::vector GetEnvironmentValues(const WSTRING& name, const wchar_t delim) +{ + std::vector values; + for (auto s : Split(GetEnvironmentValue(name), delim)) + { + s = Trim(s); + if (!s.empty()) + { + values.push_back(s); + } } - } - return values; + return values; } -std::vector GetEnvironmentValues(const WSTRING &name) { - return GetEnvironmentValues(name, L','); +std::vector GetEnvironmentValues(const WSTRING& name) +{ + return GetEnvironmentValues(name, L';'); } -constexpr char HexMap[] = {'0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; - -WSTRING HexStr(const void *dataPtr, int len) { - const unsigned char *data = (unsigned char *)dataPtr; - WSTRING s(len * 2, ' '); - for (int i = 0; i < len; ++i) { - s[2 * i] = HexMap[(data[i] & 0xF0) >> 4]; - s[2 * i + 1] = HexMap[data[i] & 0x0F]; - } - return s; +constexpr char HexMap[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; + +WSTRING HexStr(const void* dataPtr, int len) +{ + const unsigned char* data = (unsigned char*) dataPtr; + WSTRING s(len * 2, ' '); + for (int i = 0; i < len; ++i) + { + s[2 * i] = HexMap[(data[i] & 0xF0) >> 4]; + s[2 * i + 1] = HexMap[data[i] & 0x0F]; + } + return s; } -WSTRING TokenStr(const mdToken *token) { - const unsigned char *data = (unsigned char *)token; - int len = sizeof(mdToken); - WSTRING s(len * 2, ' '); - for (int i = 0; i < len; i++) { - s[(2 * (len - i)) - 2] = HexMap[(data[i] & 0xF0) >> 4]; - s[(2 * (len - i)) - 1] = HexMap[data[i] & 0x0F]; - } - return s; +WSTRING TokenStr(const mdToken* token) +{ + const unsigned char* data = (unsigned char*) token; + int len = sizeof(mdToken); + WSTRING s(len * 2, ' '); + for (int i = 0; i < len; i++) + { + s[(2 * (len - i)) - 2] = HexMap[(data[i] & 0xF0) >> 4]; + s[(2 * (len - i)) - 1] = HexMap[data[i] & 0x0F]; + } + return s; } -} // namespace trace +} // namespace trace diff --git a/src/Datadog.Trace.ClrProfiler.Native/util.h b/src/Datadog.Trace.ClrProfiler.Native/util.h index ae74fcb0e2..446e2cb1d4 100644 --- a/src/Datadog.Trace.ClrProfiler.Native/util.h +++ b/src/Datadog.Trace.ClrProfiler.Native/util.h @@ -12,89 +12,96 @@ #include "string.h" -namespace trace { +namespace trace +{ template -void Split(const WSTRING &s, wchar_t delim, Out result); +void Split(const WSTRING& s, wchar_t delim, Out result); // Split splits a string by the given delimiter. -std::vector Split(const WSTRING &s, wchar_t delim); +std::vector Split(const WSTRING& s, wchar_t delim); // Trim removes space from the beginning and end of a string. -WSTRING Trim(const WSTRING &str); +WSTRING Trim(const WSTRING& str); // GetEnvironmentValue returns the environment variable value for the given // name. Space is trimmed. -WSTRING GetEnvironmentValue(const WSTRING &name); +WSTRING GetEnvironmentValue(const WSTRING& name); // GetEnvironmentValues returns environment variable values for the given name // split by the delimiter. Space is trimmed and empty values are ignored. -std::vector GetEnvironmentValues(const WSTRING &name, - const wchar_t delim); +std::vector GetEnvironmentValues(const WSTRING& name, const wchar_t delim); -// GetEnvironmentValues calls GetEnvironmentValues with a comma delimiter. -std::vector GetEnvironmentValues(const WSTRING &name); +// GetEnvironmentValues calls GetEnvironmentValues with a semicolon delimiter. +std::vector GetEnvironmentValues(const WSTRING& name); // Convert Hex to string -WSTRING HexStr(const void *data, int len); +WSTRING HexStr(const void* data, int len); // Convert Token to string -WSTRING TokenStr(const mdToken *token); +WSTRING TokenStr(const mdToken* token); template -bool Contains(const Container &items, - const typename Container::value_type &value) { - return std::find(items.begin(), items.end(), value) != items.end(); +bool Contains(const Container& items, const typename Container::value_type& value) +{ + return std::find(items.begin(), items.end(), value) != items.end(); } // Singleton definition -class UnCopyable { - protected: - UnCopyable(){}; - ~UnCopyable(){}; - - private: - UnCopyable(const UnCopyable &) = delete; - UnCopyable(const UnCopyable &&) = delete; - UnCopyable &operator=(const UnCopyable &) = delete; - UnCopyable &operator=(const UnCopyable &&) = delete; +class UnCopyable +{ +protected: + UnCopyable(){}; + ~UnCopyable(){}; + +private: + UnCopyable(const UnCopyable&) = delete; + UnCopyable(const UnCopyable&&) = delete; + UnCopyable& operator=(const UnCopyable&) = delete; + UnCopyable& operator=(const UnCopyable&&) = delete; }; template -class Singleton : public UnCopyable { - public: - static T *Instance() { - static T instance_obj; - return &instance_obj; - } +class Singleton : public UnCopyable +{ +public: + static T* Instance() + { + static T instance_obj; + return &instance_obj; + } }; template -class BlockingQueue : public UnCopyable { - private: - std::queue queue_; - mutable std::mutex mutex_; - std::condition_variable condition_; - - public: - T pop() { - std::unique_lock mlock(mutex_); - while (queue_.empty()) { - condition_.wait(mlock); +class BlockingQueue : public UnCopyable +{ +private: + std::queue queue_; + mutable std::mutex mutex_; + std::condition_variable condition_; + +public: + T pop() + { + std::unique_lock mlock(mutex_); + while (queue_.empty()) + { + condition_.wait(mlock); + } + T value = queue_.front(); + queue_.pop(); + return value; } - T value = queue_.front(); - queue_.pop(); - return value; - } - void push(const T &item) { + void push(const T& item) { - std::lock_guard guard(mutex_); - queue_.push(item); + { + std::lock_guard guard(mutex_); + queue_.push(item); + } + condition_.notify_one(); } - condition_.notify_one(); - } }; -} // namespace trace +} // namespace trace -#endif // DD_CLR_PROFILER_UTIL_H_ +#endif // DD_CLR_PROFILER_UTIL_H_ diff --git a/src/Datadog.Trace/DuckTyping/DuckAttribute.cs b/src/Datadog.Trace/DuckTyping/DuckAttribute.cs index 62b0a10e05..388d49b6cf 100644 --- a/src/Datadog.Trace/DuckTyping/DuckAttribute.cs +++ b/src/Datadog.Trace/DuckTyping/DuckAttribute.cs @@ -59,5 +59,10 @@ public class DuckAttribute : Attribute /// Gets or sets the parameter type names of the target method (optional / used to disambiguation) /// public string[] ParameterTypeNames { get; set; } + + /// + /// Gets or sets the explicit interface type name + /// + public string ExplicitInterfaceTypeName { get; set; } } } diff --git a/src/Datadog.Trace/DuckTyping/DuckType.Methods.cs b/src/Datadog.Trace/DuckTyping/DuckType.Methods.cs index cf45542cce..47e313d224 100644 --- a/src/Datadog.Trace/DuckTyping/DuckType.Methods.cs +++ b/src/Datadog.Trace/DuckTyping/DuckType.Methods.cs @@ -384,7 +384,8 @@ private static void CreateMethods(TypeBuilder proxyTypeBuilder, Type proxyType, } // Method call - if (targetMethod.IsPublic) + // A generic method cannot be called using calli (throws System.InvalidOperationException) + if (targetMethod.IsPublic || targetMethod.IsGenericMethod) { // We can emit a normal call if we have a public instance with a public target method. il.EmitCall(targetMethod.IsStatic || targetMethod.DeclaringType.IsValueType ? OpCodes.Call : OpCodes.Callvirt, targetMethod, null); @@ -554,10 +555,35 @@ private static MethodInfo SelectTargetMethod(Type targetType, MethodInfo proxyMe MethodInfo[] allTargetMethods = targetType.GetMethods(DuckAttribute.DefaultFlags); foreach (MethodInfo candidateMethod in allTargetMethods) { + string name = proxyMethodDuckAttribute.Name; + bool useRelaxedNameComparison = false; + + // If there is an explicit interface type name we add it to the name + if (!string.IsNullOrEmpty(proxyMethodDuckAttribute.ExplicitInterfaceTypeName)) + { + string interfaceTypeName = proxyMethodDuckAttribute.ExplicitInterfaceTypeName; + + if (interfaceTypeName == "*") + { + // If a wildcard is use, then we relax the name comparison so it can be an implicit or explicity implementation + useRelaxedNameComparison = true; + } + else + { + // Nested types are separated with a "." on explicit implementation. + interfaceTypeName = interfaceTypeName.Replace("+", "."); + + name = interfaceTypeName + "." + name; + } + } + // We omit target methods with different names. - if (candidateMethod.Name != proxyMethodDuckAttribute.Name) + if (candidateMethod.Name != name) { - continue; + if (!useRelaxedNameComparison || !candidateMethod.Name.EndsWith("." + name)) + { + continue; + } } // Check if the candidate method is a reverse mapped method diff --git a/src/Datadog.Trace/DuckTyping/DuckType.Utilities.cs b/src/Datadog.Trace/DuckTyping/DuckType.Utilities.cs index c69bd1ed00..fc7322b035 100644 --- a/src/Datadog.Trace/DuckTyping/DuckType.Utilities.cs +++ b/src/Datadog.Trace/DuckTyping/DuckType.Utilities.cs @@ -48,18 +48,44 @@ private static void EnsureArguments(Type proxyType, object instance) /// Type to gain internals visibility private static void EnsureTypeVisibility(ModuleBuilder builder, Type type) { - string name = type.Assembly.GetName().Name; - lock (_ignoresAccessChecksToAssembliesSetDictionary) + EnsureAssemblyNameVisibility(builder, type.Assembly.GetName().Name); + + if (type.IsGenericType && !type.IsGenericTypeDefinition) + { + foreach (Type t in type.GetGenericArguments()) + { + if (!t.IsVisible) + { + EnsureAssemblyNameVisibility(builder, t.Assembly.GetName().Name); + } + } + } + + while (type.IsNested) { - if (!_ignoresAccessChecksToAssembliesSetDictionary.TryGetValue(builder, out var hashSet)) + if (!type.IsNestedPublic) { - hashSet = new HashSet(); - _ignoresAccessChecksToAssembliesSetDictionary[builder] = hashSet; + EnsureAssemblyNameVisibility(builder, type.Assembly.GetName().Name); } - if (hashSet.Add(name)) + // this should be null for non-nested types. + type = type.DeclaringType; + } + + static void EnsureAssemblyNameVisibility(ModuleBuilder builder, string assemblyName) + { + lock (_ignoresAccessChecksToAssembliesSetDictionary) { - ((AssemblyBuilder)builder.Assembly).SetCustomAttribute(new CustomAttributeBuilder(_ignoresAccessChecksToAttributeCtor, new object[] { name })); + if (!_ignoresAccessChecksToAssembliesSetDictionary.TryGetValue(builder, out var hashSet)) + { + hashSet = new HashSet(); + _ignoresAccessChecksToAssembliesSetDictionary[builder] = hashSet; + } + + if (hashSet.Add(assemblyName)) + { + ((AssemblyBuilder)builder.Assembly).SetCustomAttribute(new CustomAttributeBuilder(_ignoresAccessChecksToAttributeCtor, new object[] { assemblyName })); + } } } } diff --git a/src/Datadog.Trace/Logging/CustomSerilogLogProvider.cs b/src/Datadog.Trace/Logging/CustomSerilogLogProvider.cs index e1753387fa..0d4b10aa60 100644 --- a/src/Datadog.Trace/Logging/CustomSerilogLogProvider.cs +++ b/src/Datadog.Trace/Logging/CustomSerilogLogProvider.cs @@ -5,6 +5,8 @@ using System; using System.Linq.Expressions; +using System.Reflection; +using System.Runtime.CompilerServices; using Datadog.Trace.Logging.LogProviders; namespace Datadog.Trace.Logging @@ -12,10 +14,27 @@ namespace Datadog.Trace.Logging internal class CustomSerilogLogProvider : SerilogLogProvider, ILogProviderWithEnricher { private static Func _pushMethod; + private readonly bool _wrapEnricher; public CustomSerilogLogProvider() { - _pushMethod = GetPush(); + var logEnricherType = GetLogEnricherType(); + if (GetPushMethodInfo() is MethodInfo pushMethodInfo) + { + _wrapEnricher = false; + _pushMethod = GeneratePushDelegate(pushMethodInfo, logEnricherType); + } + else if (GetPushPropertiesMethodInfo() is MethodInfo pushPropertiesMethodInfo) + { + _wrapEnricher = true; + _pushMethod = GeneratePushDelegate(pushPropertiesMethodInfo, logEnricherType.MakeArrayType()); + } + else + { + _wrapEnricher = false; + IDisposable cachedDisposable = new NoOpDisposable(); + _pushMethod = (enricher) => { return cachedDisposable; }; + } } public IDisposable OpenContext(object enricher) @@ -23,20 +42,31 @@ public IDisposable OpenContext(object enricher) return _pushMethod(enricher); } - public ILogEnricher CreateEnricher() => new SerilogEnricher(this); + public ILogEnricher CreateEnricher() => new SerilogEnricher(this, _wrapEnricher); internal static Type GetLogEnricherType() => Type.GetType("Serilog.Core.ILogEventEnricher, Serilog"); - private static Func GetPush() + internal static new bool IsLoggerAvailable() => + SerilogLogProvider.IsLoggerAvailable() && (GetPushMethodInfo() != null || GetPushPropertiesMethodInfo() != null); + + private static MethodInfo GetPushMethodInfo() { var ndcContextType = Type.GetType("Serilog.Context.LogContext, Serilog"); + return ndcContextType?.GetMethod("Push", GetLogEnricherType()); + } - var logEventEnricherType = GetLogEnricherType(); + private static MethodInfo GetPushPropertiesMethodInfo() + { + var ndcContextType = FindType("Serilog.Context.LogContext", new[] { "Serilog", "Serilog.FullNetFx" }); + return ndcContextType?.GetMethod("PushProperties", GetLogEnricherType().MakeArrayType()); + } - var pushPropertyMethod = ndcContextType.GetMethod("Push", logEventEnricherType); + private static Func GeneratePushDelegate(MethodInfo methodInfo, Type argumentTargetType) + { var enricherParam = Expression.Parameter(typeof(object), "enricher"); - var castEnricherParam = Expression.Convert(enricherParam, logEventEnricherType); - var pushMethodCall = Expression.Call(null, pushPropertyMethod, castEnricherParam); + var castEnricherParam = Expression.Convert(enricherParam, argumentTargetType); + var pushMethodCall = Expression.Call(null, methodInfo, castEnricherParam); + var push = Expression.Lambda>( pushMethodCall, enricherParam) @@ -44,5 +74,13 @@ private static Func GetPush() return push; } + + internal class NoOpDisposable : IDisposable + { + public void Dispose() + { + // Do nothing + } + } } } diff --git a/src/Datadog.Trace/Logging/LibLogScopeEventSubscriber.cs b/src/Datadog.Trace/Logging/LibLogScopeEventSubscriber.cs index eeea954361..6fcdc749b8 100644 --- a/src/Datadog.Trace/Logging/LibLogScopeEventSubscriber.cs +++ b/src/Datadog.Trace/Logging/LibLogScopeEventSubscriber.cs @@ -258,12 +258,18 @@ public void Dispose() private static void InitResolvers() { - // Register the custom Serilog provider + // Note: for retrocompatibility, the order in which the providers are resolved is important + // Make sure to respect the order: + // - Serilog + // - NLog + // - Log4net + + // Register the custom log4net provider LogProvider.LogProviderResolvers.Insert( 0, Tuple.Create( - CustomSerilogLogProvider.IsLoggerAvailable, - () => new CustomSerilogLogProvider())); + CustomLog4NetLogProvider.IsLoggerAvailable, + () => new CustomLog4NetLogProvider())); // Register the custom NLog provider LogProvider.LogProviderResolvers.Insert( @@ -272,12 +278,12 @@ private static void InitResolvers() CustomNLogLogProvider.IsLoggerAvailable, () => new CustomNLogLogProvider())); - // Register the custom log4net provider + // Register the custom Serilog provider LogProvider.LogProviderResolvers.Insert( 0, Tuple.Create( - CustomLog4NetLogProvider.IsLoggerAvailable, - () => new CustomLog4NetLogProvider())); + CustomSerilogLogProvider.IsLoggerAvailable, + () => new CustomSerilogLogProvider())); } private void SetDefaultValues() diff --git a/src/Datadog.Trace/Logging/SerilogEnricher.cs b/src/Datadog.Trace/Logging/SerilogEnricher.cs index 2197ebca1b..5d78171e5e 100644 --- a/src/Datadog.Trace/Logging/SerilogEnricher.cs +++ b/src/Datadog.Trace/Logging/SerilogEnricher.cs @@ -15,6 +15,7 @@ namespace Datadog.Trace.Logging internal class SerilogEnricher : ILogEnricher { private readonly CustomSerilogLogProvider _logProvider; + private readonly bool _wrapEnricher; private readonly Func _valueFactory; private readonly Func _propertyFactory; @@ -25,9 +26,10 @@ internal class SerilogEnricher : ILogEnricher private object _serilogEventEnricher; - public SerilogEnricher(CustomSerilogLogProvider logProvider) + public SerilogEnricher(CustomSerilogLogProvider logProvider, bool wrapEnricher) { _logProvider = logProvider; + _wrapEnricher = wrapEnricher; var logEventPropertyType = Type.GetType("Serilog.Events.LogEventProperty, Serilog"); @@ -62,7 +64,15 @@ public void Initialize(Tracer tracer) _versionProperty = _propertyFactory(CorrelationIdentifier.SerilogVersionKey, _valueFactory(tracer.Settings.ServiceVersion)); _environmentProperty = _propertyFactory(CorrelationIdentifier.SerilogEnvKey, _valueFactory(tracer.Settings.Environment)); - _serilogEventEnricher = this.DuckCast(CustomSerilogLogProvider.GetLogEnricherType()); + var logEnricherType = CustomSerilogLogProvider.GetLogEnricherType(); + _serilogEventEnricher = this.DuckCast(logEnricherType); + + if (_wrapEnricher) + { + var array = Array.CreateInstance(logEnricherType, 1); + array.SetValue(_serilogEventEnricher, 0); + _serilogEventEnricher = array; + } } public IDisposable Register() diff --git a/src/Datadog.Trace/RuntimeMetrics/PerformanceCountersListener.cs b/src/Datadog.Trace/RuntimeMetrics/PerformanceCountersListener.cs index 8777ff5cb1..520f8ddf41 100644 --- a/src/Datadog.Trace/RuntimeMetrics/PerformanceCountersListener.cs +++ b/src/Datadog.Trace/RuntimeMetrics/PerformanceCountersListener.cs @@ -7,6 +7,9 @@ using System; using System.Diagnostics; using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Datadog.Trace.Logging; using Datadog.Trace.Util; using Datadog.Trace.Vendors.StatsdClient; @@ -17,13 +20,15 @@ internal class PerformanceCountersListener : IRuntimeMetricsListener private const string MemoryCategoryName = ".NET CLR Memory"; private const string ThreadingCategoryName = ".NET CLR LocksAndThreads"; + private static readonly IDatadogLogger Log = DatadogLogging.GetLoggerFor(); + private readonly IDogStatsd _statsd; - private readonly PerformanceCounterCategory _memoryCategory; - private readonly bool _fullInstanceName; private readonly string _processName; private readonly int _processId; private string _instanceName; + private PerformanceCounterCategory _memoryCategory; + private bool _fullInstanceName; private PerformanceCounterWrapper _gen0Size; private PerformanceCounterWrapper _gen1Size; @@ -37,32 +42,46 @@ internal class PerformanceCountersListener : IRuntimeMetricsListener private double? _lastContentionCount; + private Task _initializationTask; + public PerformanceCountersListener(IDogStatsd statsd) { _statsd = statsd; ProcessHelpers.GetCurrentProcessInformation(out _processName, out _, out _processId); - _memoryCategory = new PerformanceCounterCategory(MemoryCategoryName); - - var instanceName = GetInstanceName(); - _fullInstanceName = instanceName.Item2; - _instanceName = instanceName.Item1; - - InitializePerformanceCounters(_instanceName); + // To prevent a potential deadlock when hosted in a service, performance counter initialization must be asynchronous + // That's because performance counters may rely on wmiApSrv being started, + // and the windows service manager only allows one service at a time to be starting: https://docs.microsoft.com/en-us/windows/win32/services/service-startup + _initializationTask = Task.Run(InitializePerformanceCounters); + _initializationTask.ContinueWith( + t => + { + Log.Error(t.Exception, "An error occured while initializing the performance counters"); + }, + CancellationToken.None, + TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.ExecuteSynchronously, + TaskScheduler.Default); } + public Task WaitForInitialization() => _initializationTask; + public void Dispose() { - _gen0Size.Dispose(); - _gen1Size.Dispose(); - _gen2Size.Dispose(); - _lohSize.Dispose(); - _contentionCount.Dispose(); + _gen0Size?.Dispose(); + _gen1Size?.Dispose(); + _gen2Size?.Dispose(); + _lohSize?.Dispose(); + _contentionCount?.Dispose(); } public void Refresh() { + if (!_initializationTask.IsCompleted) + { + return; + } + if (!_fullInstanceName) { _instanceName = GetSimpleInstanceName(); @@ -99,13 +118,19 @@ public void Refresh() _previousGen2Count = gen2; } - private void InitializePerformanceCounters(string instanceName) + protected virtual void InitializePerformanceCounters() { - _gen0Size = new PerformanceCounterWrapper(MemoryCategoryName, "Gen 0 heap size", instanceName); - _gen1Size = new PerformanceCounterWrapper(MemoryCategoryName, "Gen 1 heap size", instanceName); - _gen2Size = new PerformanceCounterWrapper(MemoryCategoryName, "Gen 2 heap size", instanceName); - _lohSize = new PerformanceCounterWrapper(MemoryCategoryName, "Large Object Heap size", instanceName); - _contentionCount = new PerformanceCounterWrapper(ThreadingCategoryName, "Total # of Contentions", instanceName); + _memoryCategory = new PerformanceCounterCategory(MemoryCategoryName); + + var instanceName = GetInstanceName(); + _fullInstanceName = instanceName.Item2; + _instanceName = instanceName.Item1; + + _gen0Size = new PerformanceCounterWrapper(MemoryCategoryName, "Gen 0 heap size", _instanceName); + _gen1Size = new PerformanceCounterWrapper(MemoryCategoryName, "Gen 1 heap size", _instanceName); + _gen2Size = new PerformanceCounterWrapper(MemoryCategoryName, "Gen 2 heap size", _instanceName); + _lohSize = new PerformanceCounterWrapper(MemoryCategoryName, "Large Object Heap size", _instanceName); + _contentionCount = new PerformanceCounterWrapper(ThreadingCategoryName, "Total # of Contentions", _instanceName); } private void TryUpdateGauge(string path, PerformanceCounterWrapper counter) diff --git a/src/Datadog.Trace/Tagging/TagsList.cs b/src/Datadog.Trace/Tagging/TagsList.cs index d1c702dd87..c48c63be94 100644 --- a/src/Datadog.Trace/Tagging/TagsList.cs +++ b/src/Datadog.Trace/Tagging/TagsList.cs @@ -17,6 +17,8 @@ internal abstract class TagsList : ITags private static byte[] _metaBytes = StringEncoding.UTF8.GetBytes("meta"); private static byte[] _metricsBytes = StringEncoding.UTF8.GetBytes("metrics"); private static byte[] _originBytes = StringEncoding.UTF8.GetBytes(Trace.Tags.Origin); + private static byte[] _runtimeIdBytes = StringEncoding.UTF8.GetBytes(Trace.Tags.RuntimeId); + private static byte[] _runtimeIdValueBytes = StringEncoding.UTF8.GetBytes(Tracer.RuntimeId); private List> _metrics; private List> _tags; @@ -340,6 +342,13 @@ private int WriteTags(ref byte[] bytes, int offset, Span span) } } + if (span.IsTopLevel) + { + count++; + offset += MessagePackBinary.WriteStringBytes(ref bytes, offset, _runtimeIdBytes); + offset += MessagePackBinary.WriteStringBytes(ref bytes, offset, _runtimeIdValueBytes); + } + string origin = span.Context.Origin; if (!isOriginWritten && !string.IsNullOrEmpty(origin)) { diff --git a/src/Datadog.Trace/Tags.cs b/src/Datadog.Trace/Tags.cs index ab1d58958c..e9bbba8e89 100644 --- a/src/Datadog.Trace/Tags.cs +++ b/src/Datadog.Trace/Tags.cs @@ -403,5 +403,7 @@ public static class Tags internal const string ElasticsearchMethod = "elasticsearch.method"; internal const string ElasticsearchUrl = "elasticsearch.url"; + + internal const string RuntimeId = "runtime-id"; } } diff --git a/src/Datadog.Trace/Tracer.cs b/src/Datadog.Trace/Tracer.cs index 14be437fa8..0c6c882188 100644 --- a/src/Datadog.Trace/Tracer.cs +++ b/src/Datadog.Trace/Tracer.cs @@ -39,6 +39,8 @@ public class Tracer : IDatadogTracer private const string UnknownServiceName = "UnknownService"; private static readonly IDatadogLogger Log = DatadogLogging.GetLoggerFor(); + private static string _runtimeId; + /// /// The number of Tracer instances that have been created and not yet destroyed. /// This is used in the heartbeat metrics to estimate the number of @@ -286,10 +288,7 @@ string IDatadogTracer.AgentVersion /// ISampler IDatadogTracer.Sampler => Sampler; - /// - /// Gets the propagator logic . - /// - IPropagator IDatadogTracer.Propagator => _propagator; + internal static string RuntimeId => LazyInitializer.EnsureInitialized(ref _runtimeId, () => Guid.NewGuid().ToString()); internal IDiagnosticManager DiagnosticManager { get; set; } @@ -605,6 +604,9 @@ internal async Task WriteDiagnosticLog() writer.WritePropertyName("partialflush_minspans"); writer.WriteValue(Settings.PartialFlushMinSpans); + writer.WritePropertyName("runtime_id"); + writer.WriteValue(RuntimeId); + writer.WritePropertyName("agent_reachable"); writer.WriteValue(agentError == null); @@ -699,16 +701,10 @@ private static IDogStatsd CreateDogStatsdClient(TracerSettings settings, int por $"lang_interpreter:{FrameworkDescription.Instance.Name}", $"lang_version:{FrameworkDescription.Instance.ProductVersion}", $"tracer_version:{TracerConstants.AssemblyVersion}", - $"service:{settings.ServiceName}" + $"service:{settings.ServiceName}", + $"{Tags.RuntimeId}:{RuntimeId}" }; - var containerId = ContainerMetadata.GetContainerId(); - - if (containerId != null) - { - constantTags.Add($"runtime-id:{containerId}"); - } - if (settings.Environment != null) { constantTags.Add($"env:{settings.Environment}"); diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AWS/AwsSqsTests.cs b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AWS/AwsSqsTests.cs index 5f6e3ae538..8e2c1b6681 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AWS/AwsSqsTests.cs +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AWS/AwsSqsTests.cs @@ -140,7 +140,7 @@ public void SubmitsTraces(string packageVersion) .ExcludingMissingMembers() .ExcludingDefaultSpanProperties() .AssertMetricsMatchExcludingKeys("_dd.tracer_kr", "_sampling_priority_v1") - .AssertTagsMatchAndSpecifiedTagsPresent("env", "aws.requestId", "aws.queue.url")); + .AssertTagsMatchAndSpecifiedTagsPresent("env", "aws.requestId", "aws.queue.url", "runtime-id")); } } diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AdoNet/MicrosoftDataSqlClientTests.cs b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AdoNet/MicrosoftDataSqlClientTests.cs index fde53ef150..b320a53b11 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AdoNet/MicrosoftDataSqlClientTests.cs +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AdoNet/MicrosoftDataSqlClientTests.cs @@ -27,7 +27,12 @@ public static IEnumerable GetMicrosoftDataSqlClient() { foreach (object[] item in PackageVersions.MicrosoftDataSqlClient) { - yield return item.Concat(false); + // Callsite instrumentation is not supported with 3.* + if (!item.Cast().First().StartsWith("3")) + { + yield return item.Concat(false); + } + yield return item.Concat(true); } } diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index c17b7a897d..93a2d6ba25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 8d5e3ece8f..e464d1542c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index 2e1132629b..a961900b95 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -35,14 +36,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -60,6 +61,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -87,17 +92,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index b422f28f00..f44630de5e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 9433111dce..a2523b1653 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 2580082766..da6b6e8bee 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index 3bdba5b556..656cf7192a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -40,14 +41,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -65,6 +66,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -97,17 +102,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index 438b6d2f88..fc667592da 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -40,14 +41,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -65,6 +66,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -97,17 +102,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index c17b7a897d..93a2d6ba25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 8d5e3ece8f..e464d1542c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index 4acc57a684..4081c00afe 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -46,14 +47,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -71,6 +72,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -109,17 +114,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index b422f28f00..f44630de5e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 9433111dce..a2523b1653 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 2580082766..da6b6e8bee 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index 73e2433863..6004a87d29 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -51,14 +52,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -76,6 +77,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -119,17 +124,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index dd189db0aa..8db83cfcbd 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -51,14 +52,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -76,6 +77,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -119,17 +124,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index 7a8279a020..2757161a6e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 5e459ae60c..c65c420ac2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index 2e1132629b..a961900b95 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -35,14 +36,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -60,6 +61,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -87,17 +92,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index bff5f955bc..d4af9f6c90 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 2c53b7547d..77b8960aed 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 99df012db8..b3b4b0aba9 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index 50aefb70e8..7f347ab26f 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -40,14 +41,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -65,6 +66,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -97,17 +102,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index 438b6d2f88..fc667592da 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -40,14 +41,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -65,6 +66,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -97,17 +102,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index 7a8279a020..2757161a6e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 5e459ae60c..c65c420ac2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index 4acc57a684..4081c00afe 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -46,14 +47,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -71,6 +72,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -109,17 +114,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index bff5f955bc..d4af9f6c90 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 2c53b7547d..77b8960aed 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 99df012db8..b3b4b0aba9 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index 0e75a074ec..ed88d3dc82 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -51,14 +52,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -76,6 +77,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -119,17 +124,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index dd189db0aa..8db83cfcbd 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -51,14 +52,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -76,6 +77,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -119,17 +124,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index c17b7a897d..93a2d6ba25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 8d5e3ece8f..e464d1542c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index 2a7bf8c5a4..86016ec9a1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -35,14 +36,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -60,6 +61,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -87,17 +92,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index b422f28f00..f44630de5e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 9433111dce..a2523b1653 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 2580082766..da6b6e8bee 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index fb76772593..70bf4d9748 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -40,14 +41,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -65,6 +66,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -97,17 +102,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index ff398a7389..78db5d04ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -40,14 +41,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -65,6 +66,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -97,17 +102,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index c17b7a897d..93a2d6ba25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 8d5e3ece8f..e464d1542c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index 791bf9014f..34f4605448 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -46,14 +47,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -71,6 +72,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -109,17 +114,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index b422f28f00..f44630de5e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 9433111dce..a2523b1653 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 2580082766..da6b6e8bee 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index 06dc943ae3..a9e7f3f2cf 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -51,14 +52,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -76,6 +77,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -119,17 +124,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index f1c66bed0f..8537e9da7f 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -51,14 +52,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -76,6 +77,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -119,17 +124,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index 7a8279a020..2757161a6e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 5e459ae60c..c65c420ac2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index 2a7bf8c5a4..86016ec9a1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -35,14 +36,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -60,6 +61,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -87,17 +92,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index bff5f955bc..d4af9f6c90 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 2c53b7547d..77b8960aed 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 99df012db8..b3b4b0aba9 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index 495d41b757..cdce0d8762 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -40,14 +41,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -65,6 +66,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -97,17 +102,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index ff398a7389..78db5d04ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -40,14 +41,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -65,6 +66,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -97,17 +102,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index 7a8279a020..2757161a6e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 5e459ae60c..c65c420ac2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index 791bf9014f..34f4605448 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -46,14 +47,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -71,6 +72,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -109,17 +114,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index bff5f955bc..d4af9f6c90 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 2c53b7547d..77b8960aed 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 99df012db8..b3b4b0aba9 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index 74fffa75f2..490e38d745 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -51,14 +52,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -76,6 +77,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -119,17 +124,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index f1c66bed0f..8537e9da7f 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -51,14 +52,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -76,6 +77,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -119,17 +124,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index c17b7a897d..93a2d6ba25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 8d5e3ece8f..e464d1542c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index 8c635b74ed..b626f50d84 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -33,14 +34,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -58,6 +59,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -71,17 +76,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__Di at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index b422f28f00..f44630de5e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 9433111dce..a2523b1653 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 2580082766..da6b6e8bee 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index 509de50b28..9525e8cdc6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -38,14 +39,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -63,6 +64,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -81,17 +86,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__Di at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index dfb1a76d53..e86aa902c1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -38,14 +39,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -63,6 +64,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -81,17 +86,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__Di at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index c17b7a897d..93a2d6ba25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 8d5e3ece8f..e464d1542c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index 3e244e0d16..8c19324c96 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -58,14 +59,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -83,6 +84,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -111,17 +116,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index b422f28f00..f44630de5e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 9433111dce..a2523b1653 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 2580082766..da6b6e8bee 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index 604296f358..8e3db640cc 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -63,14 +64,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -88,6 +89,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -121,17 +126,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index 2fe963130c..cdd0fccf9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -63,14 +64,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -88,6 +89,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -121,17 +126,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index 7a8279a020..2757161a6e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 5e459ae60c..c65c420ac2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index 8c635b74ed..b626f50d84 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -33,14 +34,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -58,6 +59,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -71,17 +76,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__Di at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index bff5f955bc..d4af9f6c90 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 2c53b7547d..77b8960aed 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 99df012db8..b3b4b0aba9 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index 90549b8d14..8633178726 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -38,14 +39,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -63,6 +64,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -81,17 +86,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__Di at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index dfb1a76d53..e86aa902c1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -38,14 +39,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -63,6 +64,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -81,17 +86,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__Di at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index 7a8279a020..2757161a6e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 5e459ae60c..c65c420ac2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index 3e244e0d16..8c19324c96 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -58,14 +59,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -83,6 +84,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -111,17 +116,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index bff5f955bc..d4af9f6c90 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 2c53b7547d..77b8960aed 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 99df012db8..b3b4b0aba9 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index dec57acf11..0e4221ed22 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -63,14 +64,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -88,6 +89,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -121,17 +126,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index 2fe963130c..cdd0fccf9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -63,14 +64,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -88,6 +89,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -121,17 +126,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index c17b7a897d..93a2d6ba25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 8d5e3ece8f..e464d1542c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index afd187ec7c..fbc15c5e04 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -33,14 +34,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -58,6 +59,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -71,17 +76,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__Di at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index b422f28f00..f44630de5e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 9433111dce..a2523b1653 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 2580082766..da6b6e8bee 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index 95f124bd0a..306a8f6e78 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -38,14 +39,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -63,6 +64,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -81,17 +86,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__Di at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index 894170fdc0..59b080702e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -38,14 +39,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -63,6 +64,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -81,17 +86,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__Di at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index c17b7a897d..93a2d6ba25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 8d5e3ece8f..e464d1542c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index 71e7d0d3cf..a4de35a9f1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -58,14 +59,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -83,6 +84,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -111,17 +116,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index b422f28f00..f44630de5e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 9433111dce..a2523b1653 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 2580082766..da6b6e8bee 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index 653c7388f7..eb4e7826ea 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -63,14 +64,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -88,6 +89,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -121,17 +126,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index f29fdcbc88..69d9082fd7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -63,14 +64,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -88,6 +89,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -121,17 +126,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index 7a8279a020..2757161a6e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 5e459ae60c..c65c420ac2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index afd187ec7c..fbc15c5e04 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -33,14 +34,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -58,6 +59,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -71,17 +76,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__Di at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index bff5f955bc..d4af9f6c90 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 2c53b7547d..77b8960aed 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 99df012db8..b3b4b0aba9 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index 3b26601209..4123a60a1f 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -38,14 +39,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -63,6 +64,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -81,17 +86,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__Di at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index 894170fdc0..59b080702e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -38,14 +39,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -63,6 +64,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -81,17 +86,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__Di at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt index 3b99a3aadc..071200bc0d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_Index_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt index 7a8279a020..2757161a6e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_Home_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin/home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt index 5e459ae60c..c65c420ac2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Admin_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: admin, + aspnet.controller: home, + aspnet.route: Admin/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, language: dotnet, - aspnet.route: Admin/{controller}/{action}/{id}, - aspnet.area: admin, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /admin, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt index 71e7d0d3cf..a4de35a9f1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_BadRequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -58,14 +59,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -83,6 +84,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -111,17 +116,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/badrequest, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt index bff5f955bc..d4af9f6c90 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt index 2c53b7547d..77b8960aed 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_BadValue_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt index 0df4032f91..6e94f4f01e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_OptionalIdentifier_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optionalidentifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: optionalidentifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/optionalidentifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt index fc9f259857..c64bed55ac 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /home/statuscode?value=201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt index 3efb96c9ce..4cff318b9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_StatusCode-value=503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /home/statuscode?value=503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt index 99df012db8..b3b4b0aba9 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_123_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/identifier/123, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt index 54c3ee2ede..b5449f1139 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_BadValue_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -63,14 +64,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -88,6 +89,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -121,17 +126,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier/badvalue, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt index f29fdcbc88..69d9082fd7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_identifier_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -63,14 +64,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -88,6 +89,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: identifier, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Identifier(Int32)' in 'Samples.AspNetMvc4.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -121,17 +126,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/identifier, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: identifier + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc4Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index fe69e900f8..e6ad320b16 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 4d915ac83a..b9c8334f9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index fc03b9b78a..8886a386df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index 19c3dd690e..7673f5ebe2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -38,14 +39,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -63,6 +64,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -93,17 +98,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index 9177e1455f..8313d826c9 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -35,14 +36,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -60,6 +61,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -87,17 +92,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 50bcee9c97..4fdfdfb8c6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index ed4d3e5b5e..92b8e7f030 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index e991c9675d..7404a48370 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 85d254f4cf..bd7f33e4e7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index ac36b17b6e..035bcf3794 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cdabe7a510..5d7433ed21 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index fe69e900f8..e6ad320b16 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 4d915ac83a..b9c8334f9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index fc03b9b78a..8886a386df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index 08798a9324..7a4948b94e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -50,14 +51,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -75,6 +76,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -117,17 +122,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index 31fead0c7d..3a9ea0bb2d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -49,14 +50,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -74,6 +75,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -115,17 +120,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 50bcee9c97..4fdfdfb8c6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index ed4d3e5b5e..92b8e7f030 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index e991c9675d..7404a48370 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 85d254f4cf..bd7f33e4e7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index ac36b17b6e..035bcf3794 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cdabe7a510..5d7433ed21 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index 4b862343b1..8303e1f7cb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 9b66bbbb69..19eea490c7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index 905819b638..e914975004 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index 19c3dd690e..7673f5ebe2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -38,14 +39,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -63,6 +64,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -93,17 +98,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index 9177e1455f..8313d826c9 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -35,14 +36,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -60,6 +61,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -87,17 +92,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 17c870c610..ca96ef0cc1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index 4daab38642..4fe217375a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index ec1945cf40..43f5cb418b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 32dda07ff7..a38e839ee7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index c8c00535e6..eef3cbcee5 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index e5fde87521..2cf5e2eb83 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index 4b862343b1..8303e1f7cb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 9b66bbbb69..19eea490c7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index 905819b638..e914975004 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index 08798a9324..7a4948b94e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -50,14 +51,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -75,6 +76,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -117,17 +122,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index 31fead0c7d..3a9ea0bb2d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -49,14 +50,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -74,6 +75,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -115,17 +120,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 17c870c610..ca96ef0cc1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index 4daab38642..4fe217375a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index ec1945cf40..43f5cb418b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 32dda07ff7..a38e839ee7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index c8c00535e6..eef3cbcee5 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index e5fde87521..2cf5e2eb83 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index fe69e900f8..e6ad320b16 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 4d915ac83a..b9c8334f9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index fc03b9b78a..8886a386df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index 8f7b4babb4..fad9799e81 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -38,14 +39,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -63,6 +64,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -93,17 +98,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index 58f41108f6..23ec242184 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -35,14 +36,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -60,6 +61,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -87,17 +92,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 50bcee9c97..4fdfdfb8c6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index ed4d3e5b5e..92b8e7f030 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index e991c9675d..7404a48370 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 85d254f4cf..bd7f33e4e7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index ac36b17b6e..035bcf3794 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cdabe7a510..5d7433ed21 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index fe69e900f8..e6ad320b16 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 4d915ac83a..b9c8334f9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index fc03b9b78a..8886a386df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index 6338759abd..62774e6700 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -50,14 +51,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -75,6 +76,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -117,17 +122,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index ae3672ddc5..4d69d7cc2c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -49,14 +50,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -74,6 +75,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -115,17 +120,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 50bcee9c97..4fdfdfb8c6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index ed4d3e5b5e..92b8e7f030 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index e991c9675d..7404a48370 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 85d254f4cf..bd7f33e4e7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index ac36b17b6e..035bcf3794 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cdabe7a510..5d7433ed21 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index 4b862343b1..8303e1f7cb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 9b66bbbb69..19eea490c7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index 905819b638..e914975004 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index 8f7b4babb4..fad9799e81 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -38,14 +39,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -63,6 +64,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -93,17 +98,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index 58f41108f6..23ec242184 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -35,14 +36,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -60,6 +61,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -87,17 +92,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 17c870c610..ca96ef0cc1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index 4daab38642..4fe217375a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index ec1945cf40..43f5cb418b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 32dda07ff7..a38e839ee7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index c8c00535e6..eef3cbcee5 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index e5fde87521..2cf5e2eb83 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index 4b862343b1..8303e1f7cb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 9b66bbbb69..19eea490c7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index 905819b638..e914975004 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index 6338759abd..62774e6700 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -50,14 +51,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -75,6 +76,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -117,17 +122,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index ae3672ddc5..4d69d7cc2c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -49,14 +50,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -74,6 +75,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -115,17 +120,13 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 17c870c610..ca96ef0cc1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index 4daab38642..4fe217375a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index ec1945cf40..43f5cb418b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 32dda07ff7..a38e839ee7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index c8c00535e6..eef3cbcee5 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index e5fde87521..2cf5e2eb83 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index fe69e900f8..e6ad320b16 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 4d915ac83a..b9c8334f9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index fc03b9b78a..8886a386df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index 0fdda07a35..eab857ed21 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -37,14 +38,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -62,6 +63,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -79,17 +84,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.c__DisplayClass3_1.b__1(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index 3e19e78cf2..d98801f220 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -34,14 +35,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -59,6 +60,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -73,17 +78,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.c__DisplayClass3_1.b__1(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 50bcee9c97..4fdfdfb8c6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index ed4d3e5b5e..92b8e7f030 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index e991c9675d..7404a48370 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 85d254f4cf..bd7f33e4e7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index ac36b17b6e..035bcf3794 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cdabe7a510..5d7433ed21 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index fe69e900f8..e6ad320b16 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 4d915ac83a..b9c8334f9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index fc03b9b78a..8886a386df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index f0d6050a3e..8d75e83c77 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -62,14 +63,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -87,6 +88,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -118,17 +123,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index 8f517d5d78..1725a44961 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -61,14 +62,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -86,6 +87,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -116,17 +121,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 50bcee9c97..4fdfdfb8c6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index ed4d3e5b5e..92b8e7f030 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index e991c9675d..7404a48370 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 85d254f4cf..bd7f33e4e7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index ac36b17b6e..035bcf3794 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cdabe7a510..5d7433ed21 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index 4b862343b1..8303e1f7cb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 9b66bbbb69..19eea490c7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index 905819b638..e914975004 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index 0fdda07a35..eab857ed21 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -37,14 +38,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -62,6 +63,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -79,17 +84,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.c__DisplayClass3_1.b__1(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index 3e19e78cf2..d98801f220 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -34,14 +35,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -59,6 +60,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -73,17 +78,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.c__DisplayClass3_1.b__1(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 17c870c610..ca96ef0cc1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index 4daab38642..4fe217375a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index ec1945cf40..43f5cb418b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 32dda07ff7..a38e839ee7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index c8c00535e6..eef3cbcee5 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index e5fde87521..2cf5e2eb83 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index 4b862343b1..8303e1f7cb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 9b66bbbb69..19eea490c7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index 905819b638..e914975004 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index f0d6050a3e..8d75e83c77 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -62,14 +63,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -87,6 +88,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -118,17 +123,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index 8f517d5d78..1725a44961 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -61,14 +62,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -86,6 +87,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -116,17 +121,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 17c870c610..ca96ef0cc1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index 4daab38642..4fe217375a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index ec1945cf40..43f5cb418b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 32dda07ff7..a38e839ee7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index c8c00535e6..eef3cbcee5 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index e5fde87521..2cf5e2eb83 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index fe69e900f8..e6ad320b16 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 4d915ac83a..b9c8334f9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index fc03b9b78a..8886a386df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index 47bb43f898..fab33d3caa 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -37,14 +38,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -62,6 +63,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -79,17 +84,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.c__DisplayClass3_1.b__1(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index 15cdee793a..671e214f75 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -34,14 +35,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -59,6 +60,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -73,17 +78,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.c__DisplayClass3_1.b__1(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 50bcee9c97..4fdfdfb8c6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index ed4d3e5b5e..92b8e7f030 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index e991c9675d..7404a48370 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 85d254f4cf..bd7f33e4e7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index ac36b17b6e..035bcf3794 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cdabe7a510..5d7433ed21 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index fe69e900f8..e6ad320b16 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 4d915ac83a..b9c8334f9a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index fc03b9b78a..8886a386df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index 883031edb9..bc63228623 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -62,14 +63,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -87,6 +88,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -118,17 +123,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index 78f66b00c8..ee2d108060 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 9cf23ee732..c3e4a86f25 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index abd3f3cecd..fd0b3e7b23 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -61,14 +62,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -86,6 +87,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -116,17 +121,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 50bcee9c97..4fdfdfb8c6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index ed4d3e5b5e..92b8e7f030 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index e991c9675d..7404a48370 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 85d254f4cf..bd7f33e4e7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index ac36b17b6e..035bcf3794 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cdabe7a510..5d7433ed21 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index 4b862343b1..8303e1f7cb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 9b66bbbb69..19eea490c7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index 905819b638..e914975004 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index 47bb43f898..fab33d3caa 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -37,14 +38,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -62,6 +63,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -79,17 +84,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.c__DisplayClass3_1.b__1(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 97% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index 15cdee793a..671e214f75 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -34,14 +35,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -59,6 +60,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -73,17 +78,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.c__DisplayClass3_1.b__1(IAsyncResult asyncResult) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 17c870c610..ca96ef0cc1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index 4daab38642..4fe217375a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index ec1945cf40..43f5cb418b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 32dda07ff7..a38e839ee7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index c8c00535e6..eef3cbcee5 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index e5fde87521..2cf5e2eb83 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt index d40af51e1c..3f26126de6 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_Woof_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: woof, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: woof + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse/woof, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt index 4b862343b1..8303e1f7cb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_DogHouse_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog/doghouse, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt index 9b66bbbb69..19eea490c7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_DataDog_statusCode=OK.verified.txt @@ -8,18 +8,18 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.area: datadog, + aspnet.controller: doghouse, + aspnet.route: Datadog/{controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, language: dotnet, - aspnet.route: Datadog/{controller}/{action}/{id}, - aspnet.area: datadog, - aspnet.controller: doghouse, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -31,13 +31,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /datadog, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt index 905819b638..e914975004 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_3_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/get/3, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt index 883031edb9..bc63228623 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Get_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -62,14 +63,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -87,6 +88,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: get, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, + env: integration_tests, error.msg: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Get(Int32)' in 'Samples.AspNetMvc5.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters, @@ -118,17 +123,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /home/get, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: get + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt index 0cc03a574f..0e603604e8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_Index_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home/index, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt index b57f672e41..6f0c8098ca 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_Home_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /home, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt index 13e5d9c828..829ead2a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=__statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: index, + aspnet.controller: home, + aspnet.route: {controller}/{action}/{id}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, language: dotnet, - aspnet.route: {controller}/{action}/{id}, - aspnet.controller: home, - aspnet.action: index + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt similarity index 98% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt index abd3f3cecd..fd0b3e7b23 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_badrequest_statusCode=InternalServerError.verified.txt @@ -8,6 +8,7 @@ Type: web, Error: 1, Tags: { + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -61,14 +62,14 @@ at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplicatio at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -86,6 +87,10 @@ at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& complete ParentId: Id_2, Error: 1, Tags: { + aspnet.action: badrequest, + aspnet.controller: home, + aspnet.route: badrequest, + env: integration_tests, error.msg: Oops, it broke., error.stack: System.Exception: Oops, it broke. @@ -116,17 +121,13 @@ at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResul at EndInvokeAction(Object , Object ) at Datadog.Trace.ClrProfiler.Integrations.AspNetMvcIntegration.EndInvokeAction(Object asyncControllerActionInvoker, Object asyncResult, Int32 opCode, Int32 mdToken, Int64 moduleVersionPtr), error.type: System.Exception, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /badrequest, language: dotnet, - aspnet.route: badrequest, - aspnet.controller: home, - aspnet.action: badrequest + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt index 17c870c610..ca96ef0cc1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-async_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: home, + aspnet.route: delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, language: dotnet, - aspnet.route: delay-async/{seconds}, - aspnet.controller: home, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt index 4daab38642..4fe217375a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt index ec1945cf40..43f5cb418b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay-optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: home, + aspnet.route: delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, language: dotnet, - aspnet.route: delay-optional/{seconds}, - aspnet.controller: home, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt index 32dda07ff7..a38e839ee7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: home, + aspnet.route: delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, language: dotnet, - aspnet.route: delay/{seconds}, - aspnet.controller: home, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt index c8c00535e6..eef3cbcee5 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt index e5fde87521..2cf5e2eb83 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetMvc5Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: home, + aspnet.route: statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, language: dotnet, - aspnet.route: statuscode/{value}, - aspnet.controller: home, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 834a087783..10574410aa 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 8741ffc57c..94857b9f7d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index fc6d0dec18..d86d2441f0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index fe9e6286bd..4d981f095d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index 7b72614f82..7e81a8c88a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 6049207ec3..d755f24e71 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index a41bb1def9..08aeb377bc 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -46,17 +51,13 @@ at System.Web.Http.Controllers.ApiControllerActionInvoker.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index 67faa268c4..6f8fcf2beb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 8de560f792..4a77921312 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 2839bdad4a..f8c36c0815 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index cabcb7f500..3c257e2f60 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 6e61293b46..d7fedbf111 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 6d0ef17d0c..28c6f139db 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 745546f401..68b81ec712 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 73fe5665f7..c670cced69 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cc309231d0..332d4ed7df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 575f07c698..93dfa2a9de 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -46,15 +49,13 @@ at System.Web.Http.Controllers.ApiControllerActionInvoker.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 3176d48814..f4416e85a2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 834a087783..10574410aa 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 8741ffc57c..94857b9f7d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index fc6d0dec18..d86d2441f0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index fe9e6286bd..4d981f095d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index 7b72614f82..7e81a8c88a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 6049207ec3..d755f24e71 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 1231d677a7..c0a05a3c91 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -45,17 +50,13 @@ at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpCo at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index 67faa268c4..6f8fcf2beb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 8de560f792..4a77921312 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 2839bdad4a..f8c36c0815 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index cabcb7f500..3c257e2f60 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 6e61293b46..d7fedbf111 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 6d0ef17d0c..28c6f139db 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 745546f401..68b81ec712 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 73fe5665f7..c670cced69 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cc309231d0..332d4ed7df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 104566eb3d..1af6a13a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -45,15 +48,13 @@ at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpCo at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 3176d48814..f4416e85a2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index e788c86ead..c1075eaaa0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 83a2923ba3..21ec38c261 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 01d47e2f41..615aa6a12e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index 8cdc926f1b..a746c14a8d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index d57f806787..9ad100ecbb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 4bbd3f3a1e..ade0cdabab 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index d6b181089f..7dd527e608 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -46,17 +51,13 @@ at System.Web.Http.Controllers.ApiControllerActionInvoker.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index e1f03847fc..e12c5e65bf 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 91419118f1..f430f68a1e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index dc24db4955..8abf916381 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index 880327bd18..066903d6e2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 5a3faf1b71..bb1d105a65 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 1980ae440c..d42b09e9e1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 39c53cddca..da03778455 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 0cf7a57ca2..8b1f4a5644 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index fb5366653c..245c4c8086 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 3192a26336..85cf64f6cb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -46,15 +49,13 @@ at System.Web.Http.Controllers.ApiControllerActionInvoker.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 2988bd8d83..6ecb49eaf3 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index e788c86ead..c1075eaaa0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 83a2923ba3..21ec38c261 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 01d47e2f41..615aa6a12e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index 8cdc926f1b..a746c14a8d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index d57f806787..9ad100ecbb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 4bbd3f3a1e..ade0cdabab 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 64d0b7bdda..dc66f39b8a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -45,17 +50,13 @@ at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpCo at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index e1f03847fc..e12c5e65bf 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 91419118f1..f430f68a1e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index dc24db4955..8abf916381 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index 880327bd18..066903d6e2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 5a3faf1b71..bb1d105a65 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 1980ae440c..d42b09e9e1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 39c53cddca..da03778455 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 0cf7a57ca2..8b1f4a5644 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index fb5366653c..245c4c8086 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index f354aecf6d..5775409d15 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -45,15 +48,13 @@ at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpCo at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 2988bd8d83..6ecb49eaf3 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 834a087783..10574410aa 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 8741ffc57c..94857b9f7d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index fc6d0dec18..d86d2441f0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index fe9e6286bd..4d981f095d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index 7b72614f82..7e81a8c88a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 6049207ec3..d755f24e71 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index a41bb1def9..08aeb377bc 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -46,17 +51,13 @@ at System.Web.Http.Controllers.ApiControllerActionInvoker.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index 67faa268c4..6f8fcf2beb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 8de560f792..4a77921312 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 2839bdad4a..f8c36c0815 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index cabcb7f500..3c257e2f60 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 6e61293b46..d7fedbf111 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 6d0ef17d0c..28c6f139db 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 745546f401..68b81ec712 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 73fe5665f7..c670cced69 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cc309231d0..332d4ed7df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 575f07c698..93dfa2a9de 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -46,15 +49,13 @@ at System.Web.Http.Controllers.ApiControllerActionInvoker.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 3176d48814..f4416e85a2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 834a087783..10574410aa 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 8741ffc57c..94857b9f7d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index fc6d0dec18..d86d2441f0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index fe9e6286bd..4d981f095d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index 7b72614f82..7e81a8c88a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 6049207ec3..d755f24e71 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 1231d677a7..c0a05a3c91 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -45,17 +50,13 @@ at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpCo at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index 67faa268c4..6f8fcf2beb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 8de560f792..4a77921312 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 2839bdad4a..f8c36c0815 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index cabcb7f500..3c257e2f60 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 6e61293b46..d7fedbf111 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 6d0ef17d0c..28c6f139db 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 745546f401..68b81ec712 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 73fe5665f7..c670cced69 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cc309231d0..332d4ed7df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 104566eb3d..1af6a13a80 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -45,15 +48,13 @@ at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpCo at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 3176d48814..f4416e85a2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index e788c86ead..c1075eaaa0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 83a2923ba3..21ec38c261 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 01d47e2f41..615aa6a12e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index 8cdc926f1b..a746c14a8d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index d57f806787..9ad100ecbb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 4bbd3f3a1e..ade0cdabab 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index d6b181089f..7dd527e608 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -46,17 +51,13 @@ at System.Web.Http.Controllers.ApiControllerActionInvoker.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index e1f03847fc..e12c5e65bf 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 91419118f1..f430f68a1e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index dc24db4955..8abf916381 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index 880327bd18..066903d6e2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 5a3faf1b71..bb1d105a65 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 1980ae440c..d42b09e9e1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 39c53cddca..da03778455 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 0cf7a57ca2..8b1f4a5644 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index fb5366653c..245c4c8086 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 3192a26336..85cf64f6cb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -46,15 +49,13 @@ at System.Web.Http.Controllers.ApiControllerActionInvoker.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 2988bd8d83..6ecb49eaf3 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index e788c86ead..c1075eaaa0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 83a2923ba3..21ec38c261 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 01d47e2f41..615aa6a12e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index 8cdc926f1b..a746c14a8d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index d57f806787..9ad100ecbb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 4bbd3f3a1e..ade0cdabab 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 64d0b7bdda..dc66f39b8a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -45,17 +50,13 @@ at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpCo at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index e1f03847fc..e12c5e65bf 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 91419118f1..f430f68a1e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index dc24db4955..8abf916381 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index 880327bd18..066903d6e2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 5a3faf1b71..bb1d105a65 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 1980ae440c..d42b09e9e1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 39c53cddca..da03778455 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 0cf7a57ca2..8b1f4a5644 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index fb5366653c..245c4c8086 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index f354aecf6d..5775409d15 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -45,15 +48,13 @@ at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpCo at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 2988bd8d83..6ecb49eaf3 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallSite.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 834a087783..10574410aa 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 8741ffc57c..94857b9f7d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index fc6d0dec18..d86d2441f0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index fe9e6286bd..4d981f095d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index 7b72614f82..7e81a8c88a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 6049207ec3..d755f24e71 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 60251365af..c23a03681e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -48,17 +53,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index 67faa268c4..6f8fcf2beb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 8de560f792..4a77921312 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 2839bdad4a..f8c36c0815 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index cabcb7f500..3c257e2f60 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 6e61293b46..d7fedbf111 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 6d0ef17d0c..28c6f139db 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 745546f401..68b81ec712 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 73fe5665f7..c670cced69 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cc309231d0..332d4ed7df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 47539b7dc0..4a00a9cea4 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -48,15 +51,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 3176d48814..f4416e85a2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 834a087783..10574410aa 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 8741ffc57c..94857b9f7d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index fc6d0dec18..d86d2441f0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index fe9e6286bd..4d981f095d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index 7b72614f82..7e81a8c88a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 6049207ec3..d755f24e71 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 4cad3b3275..21cae239a5 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -49,17 +54,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index 67faa268c4..6f8fcf2beb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 8de560f792..4a77921312 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 2839bdad4a..f8c36c0815 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index cabcb7f500..3c257e2f60 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 6e61293b46..d7fedbf111 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 6d0ef17d0c..28c6f139db 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 745546f401..68b81ec712 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 73fe5665f7..c670cced69 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cc309231d0..332d4ed7df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index d3fa01ef35..490e3aa933 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -49,15 +52,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 3176d48814..f4416e85a2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index e788c86ead..c1075eaaa0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 83a2923ba3..21ec38c261 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 01d47e2f41..615aa6a12e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index 8cdc926f1b..a746c14a8d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index d57f806787..9ad100ecbb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 4bbd3f3a1e..ade0cdabab 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 8009e4bdca..b9d2956cea 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -48,17 +53,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index e1f03847fc..e12c5e65bf 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 91419118f1..f430f68a1e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index dc24db4955..8abf916381 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index 880327bd18..066903d6e2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 5a3faf1b71..bb1d105a65 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 1980ae440c..d42b09e9e1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 39c53cddca..da03778455 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 0cf7a57ca2..8b1f4a5644 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index fb5366653c..245c4c8086 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index afaabafd0f..9189c4e856 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -48,15 +51,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 2988bd8d83..6ecb49eaf3 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index e788c86ead..c1075eaaa0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 83a2923ba3..21ec38c261 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 01d47e2f41..615aa6a12e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index 8cdc926f1b..a746c14a8d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index d57f806787..9ad100ecbb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 4bbd3f3a1e..ade0cdabab 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 6d0eb91832..83478d603d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -49,17 +54,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index e1f03847fc..e12c5e65bf 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 91419118f1..f430f68a1e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index dc24db4955..8abf916381 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index 880327bd18..066903d6e2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 5a3faf1b71..bb1d105a65 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 1980ae440c..d42b09e9e1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 39c53cddca..da03778455 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 0cf7a57ca2..8b1f4a5644 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index fb5366653c..245c4c8086 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 5d36a43ac7..70f7e2bc0c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -49,15 +52,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 2988bd8d83..6ecb49eaf3 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Classic.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 834a087783..10574410aa 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 8741ffc57c..94857b9f7d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index fc6d0dec18..d86d2441f0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index fe9e6286bd..4d981f095d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index 7b72614f82..7e81a8c88a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 6049207ec3..d755f24e71 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 60251365af..c23a03681e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -48,17 +53,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index 67faa268c4..6f8fcf2beb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 8de560f792..4a77921312 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 2839bdad4a..f8c36c0815 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index cabcb7f500..3c257e2f60 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 6e61293b46..d7fedbf111 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 6d0ef17d0c..28c6f139db 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 745546f401..68b81ec712 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 73fe5665f7..c670cced69 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cc309231d0..332d4ed7df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 47539b7dc0..4a00a9cea4 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -48,15 +51,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 3176d48814..f4416e85a2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 834a087783..10574410aa 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 8741ffc57c..94857b9f7d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index fc6d0dec18..d86d2441f0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index fe9e6286bd..4d981f095d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index 7b72614f82..7e81a8c88a 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 6049207ec3..d755f24e71 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 4cad3b3275..21cae239a5 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -49,17 +54,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index 67faa268c4..6f8fcf2beb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 8de560f792..4a77921312 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 2839bdad4a..f8c36c0815 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index cabcb7f500..3c257e2f60 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 6e61293b46..d7fedbf111 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 6d0ef17d0c..28c6f139db 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 745546f401..68b81ec712 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 73fe5665f7..c670cced69 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index cc309231d0..332d4ed7df 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index d3fa01ef35..490e3aa933 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -49,15 +52,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 3176d48814..f4416e85a2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index e788c86ead..c1075eaaa0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 83a2923ba3..21ec38c261 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 01d47e2f41..615aa6a12e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index 8cdc926f1b..a746c14a8d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index d57f806787..9ad100ecbb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 4bbd3f3a1e..ade0cdabab 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 8009e4bdca..b9d2956cea 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -48,17 +53,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index e1f03847fc..e12c5e65bf 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 91419118f1..f430f68a1e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index dc24db4955..8abf916381 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index 880327bd18..066903d6e2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 5a3faf1b71..bb1d105a65 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 1980ae440c..d42b09e9e1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 39c53cddca..da03778455 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 0cf7a57ca2..8b1f4a5644 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index fb5366653c..245c4c8086 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index afaabafd0f..9189c4e856 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -48,15 +51,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 2988bd8d83..6ecb49eaf3 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index e788c86ead..c1075eaaa0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delayasync/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 83a2923ba3..21ec38c261 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 01d47e2f41..615aa6a12e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index 8cdc926f1b..a746c14a8d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index d57f806787..9ad100ecbb 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api2/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 90% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 4bbd3f3a1e..ade0cdabab 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,18 +9,18 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + span.kind: server, + version: 1.0.0 } }, { @@ -32,15 +32,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api2/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 6d0eb91832..83478d603d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api2/transientfailure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,10 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -49,17 +54,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index e1f03847fc..e12c5e65bf 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -8,17 +8,17 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + span.kind: server, + version: 1.0.0 } }, { @@ -30,13 +30,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api2/transientfailure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 91419118f1..f430f68a1e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/absolute-route, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index dc24db4955..8abf916381 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-async/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index 880327bd18..066903d6e2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional/1, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 5a3faf1b71..bb1d105a65 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay-optional, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index 1980ae440c..d42b09e9e1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/delay/0, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 39c53cddca..da03778455 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/environment, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index 0cf7a57ca2..8b1f4a5644 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: /api/statuscode/201, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index fb5366653c..245c4c8086 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -9,16 +9,16 @@ ParentId: Id_3, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -30,15 +30,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: /api/statuscode/503, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 5d36a43ac7..70f7e2bc0c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,15 +8,16 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 500., env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, + error.msg: The HTTP response has status code 500., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: /api/transient-failure/false, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, @@ -34,6 +35,8 @@ ParentId: Id_2, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -49,15 +52,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 500, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 500, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } } ] \ No newline at end of file diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 2988bd8d83..6ecb49eaf3 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/AspNetWebApi2Tests.CallTarget.Integrated.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -8,15 +8,15 @@ Type: web, ParentId: Id_3, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + span.kind: server, + version: 1.0.0 } }, { @@ -28,13 +28,14 @@ Type: web, Tags: { env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: /api/transient-failure/true, - language: dotnet + language: dotnet, + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 8b7ef8bbbd..d9346747c4 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 23f946a35d..721722ce3c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 6c22a4e714..360af5d1c0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index af44114e2a..5240cd6137 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index 25a149de61..906a2564c1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index e4a0f6f1fe..d478a2424c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,18 +8,19 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 0e60542b94..86927eaa8d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,10 @@ Type: web, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -20,16 +24,13 @@ at System.Web.Http.Controllers.ApiControllerActionInvoker.d__5.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index ffacebc8de..e2e942a42d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 2d9eb83547..f7e604bfd0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 1013948f86..f33868ac6b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index 923a78c429..55b59218ef 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 8c1fb08aab..b2ebdef62b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index c09dc3b16c..c57bf0728c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 1119d7e3c0..1596ffa4ea 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index b3fee94fbc..4f08b86dc8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 689c3c504c..d06c0d3b55 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,16 +8,17 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 501a007934..65565f5fd0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,8 @@ Type: web, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -20,14 +22,13 @@ at System.Web.Http.Controllers.ApiControllerActionInvoker.d__5.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index b29ad70249..399527b15d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 8b7ef8bbbd..d9346747c4 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 23f946a35d..721722ce3c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 6c22a4e714..360af5d1c0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index af44114e2a..5240cd6137 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index 25a149de61..906a2564c1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index e4a0f6f1fe..d478a2424c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,18 +8,19 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index e9f702d916..968bf243d2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,10 @@ Type: web, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -19,16 +23,13 @@ at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpCo at System.Web.Http.Controllers.ApiControllerActionInvoker.d__1.MoveNext() at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index ffacebc8de..e2e942a42d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 2d9eb83547..f7e604bfd0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 1013948f86..f33868ac6b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index 923a78c429..55b59218ef 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 8c1fb08aab..b2ebdef62b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index c09dc3b16c..c57bf0728c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 1119d7e3c0..1596ffa4ea 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index b3fee94fbc..4f08b86dc8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 689c3c504c..d06c0d3b55 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,16 +8,17 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 564d537e26..4ffad47355 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,8 @@ Type: web, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -19,14 +21,13 @@ at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpCo at System.Web.Http.Controllers.ApiControllerActionInvoker.d__1.MoveNext() at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index b29ad70249..399527b15d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 4e8cb6c92f..fa83649cef 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 7a8c7cf759..a931c079f2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 02f705764d..bd9f420031 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index fefe2af453..8e01f51d53 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index b6d6f01dde..e4f855d797 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 883e0213fb..7316954e74 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,18 +8,19 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index da826608b2..d306c26570 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,10 @@ Type: web, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -20,16 +24,13 @@ at System.Web.Http.Controllers.ApiControllerActionInvoker.d__5.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index fcb2818164..56e461f664 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 8571dba207..943f7417d7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 767ed2fbb4..59be3c163c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index bd6d496ec0..9b5953fd27 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 69029ce26d..61d208ab96 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index f45e46f48c..cd56e6fe00 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index fe911a6082..1f88d1c8d8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index a4ce436dcd..0efeac807e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 5bf11d08d6..ffe8bc3170 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,16 +8,17 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index ebaaa34c85..ba2a2db073 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,8 @@ Type: web, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -20,14 +22,13 @@ at System.Web.Http.Controllers.ApiControllerActionInvoker.d__5.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 2177c2e1e1..4d74b16590 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 4e8cb6c92f..fa83649cef 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 7a8c7cf759..a931c079f2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 02f705764d..bd9f420031 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index fefe2af453..8e01f51d53 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index b6d6f01dde..e4f855d797 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 883e0213fb..7316954e74 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,18 +8,19 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index e9432bc12c..e72a661b6c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,10 @@ Type: web, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -19,16 +23,13 @@ at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpCo at System.Web.Http.Controllers.ApiControllerActionInvoker.d__1.MoveNext() at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index fcb2818164..56e461f664 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 8571dba207..943f7417d7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 767ed2fbb4..59be3c163c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index bd6d496ec0..9b5953fd27 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 69029ce26d..61d208ab96 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index f45e46f48c..cd56e6fe00 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index fe911a6082..1f88d1c8d8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index a4ce436dcd..0efeac807e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 5bf11d08d6..ffe8bc3170 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,16 +8,17 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 93% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 613597ec6f..64034c17da 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,8 @@ Type: web, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -19,14 +21,13 @@ at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpCo at System.Web.Http.Controllers.ApiControllerActionInvoker.d__1.MoveNext() at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 2177c2e1e1..4d74b16590 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallSite.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 8b7ef8bbbd..d9346747c4 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 23f946a35d..721722ce3c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 6c22a4e714..360af5d1c0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index af44114e2a..5240cd6137 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index 25a149de61..906a2564c1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index e4a0f6f1fe..d478a2424c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,18 +8,19 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 95% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 4f358dba2f..d9493b7f0e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,10 @@ Type: web, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -22,16 +26,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index ffacebc8de..e2e942a42d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 2d9eb83547..f7e604bfd0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 1013948f86..f33868ac6b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index 923a78c429..55b59218ef 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 8c1fb08aab..b2ebdef62b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index c09dc3b16c..c57bf0728c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 1119d7e3c0..1596ffa4ea 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index b3fee94fbc..4f08b86dc8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 689c3c504c..d06c0d3b55 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,16 +8,17 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index fe1a297de3..dff1af7d3c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,8 @@ Type: web, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -22,14 +24,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index b29ad70249..399527b15d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 8b7ef8bbbd..d9346747c4 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 23f946a35d..721722ce3c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 6c22a4e714..360af5d1c0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index af44114e2a..5240cd6137 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index 25a149de61..906a2564c1 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index e4a0f6f1fe..d478a2424c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,18 +8,19 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 95% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 0fd0031b17..c103553804 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,10 @@ Type: web, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -23,16 +27,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index ffacebc8de..e2e942a42d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 2d9eb83547..f7e604bfd0 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 1013948f86..f33868ac6b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index 923a78c429..55b59218ef 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 8c1fb08aab..b2ebdef62b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index c09dc3b16c..c57bf0728c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index 1119d7e3c0..1596ffa4ea 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index b3fee94fbc..4f08b86dc8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 689c3c504c..d06c0d3b55 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,16 +8,17 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 22b54a9bda..23c4474c54 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,8 @@ Type: web, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -23,14 +25,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index b29ad70249..399527b15d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.NoFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 4e8cb6c92f..fa83649cef 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 7a8c7cf759..a931c079f2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 02f705764d..bd9f420031 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index fefe2af453..8e01f51d53 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index b6d6f01dde..e4f855d797 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 883e0213fb..7316954e74 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,18 +8,19 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 95% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index db23ce31d7..06086bb3c3 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,10 @@ Type: web, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -22,16 +26,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index fcb2818164..56e461f664 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 8571dba207..943f7417d7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 767ed2fbb4..59be3c163c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index bd6d496ec0..9b5953fd27 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 69029ce26d..61d208ab96 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index f45e46f48c..cd56e6fe00 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index fe911a6082..1f88d1c8d8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index a4ce436dcd..0efeac807e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 5bf11d08d6..ffe8bc3170 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,16 +8,17 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index 87f43698c3..ec1f2d0903 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,8 @@ Type: web, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -22,14 +24,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 2177c2e1e1..4d74b16590 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X64.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt index 4e8cb6c92f..fa83649cef 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_delayAsync_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delayasync, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delayasync/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delayasync + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt index 7a8c7cf759..a931c079f2 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_delay_0_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: delay, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/delay/0, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: delay + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt index 02f705764d..bd9f420031 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_optional_1_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional/1, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt index fefe2af453..8e01f51d53 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_optional_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: optional, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/optional, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: optional + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt index b6d6f01dde..e4f855d797 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_statuscode_201_statusCode=Created.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api2/statuscode/201, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 89% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 883e0213fb..7316954e74 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,18 +8,19 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.action: statuscode, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api2/statuscode/503, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: statuscode + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt similarity index 95% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt index 7a8bca48f6..b12e929640 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,10 @@ Type: web, Error: 1, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -23,16 +27,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api2/transientfailure/false, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt similarity index 88% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt index fcb2818164..56e461f664 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api2_transientfailure_true_statusCode=OK.verified.txt @@ -7,17 +7,18 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.action: transientfailure, + aspnet.controller: conventions, + aspnet.route: api2/{action}/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api2/transientfailure/true, language: dotnet, - aspnet.route: api2/{action}/{value}, - aspnet.controller: conventions, - aspnet.action: transientfailure + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt index 8571dba207..943f7417d7 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_absolute-route_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/absolute-route, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/absolute-route, language: dotnet, - aspnet.route: api/absolute-route + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt index 767ed2fbb4..59be3c163c 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-async_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-async/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-async/0, language: dotnet, - aspnet.route: api/delay-async/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt index bd6d496ec0..9b5953fd27 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-optional_1_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional/1, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt index 69029ce26d..61d208ab96 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay-optional_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay-optional/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay-optional, language: dotnet, - aspnet.route: api/delay-optional/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt index f45e46f48c..cd56e6fe00 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_delay_0_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/delay/{seconds}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/delay/0, language: dotnet, - aspnet.route: api/delay/{seconds} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt similarity index 86% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt index fe911a6082..1f88d1c8d8 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_environment_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/environment, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/environment, language: dotnet, - aspnet.route: api/environment + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt similarity index 85% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt index a4ce436dcd..0efeac807e 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_statuscode_201_statusCode=Created.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 201, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 201, http.url: http://localhost:00000/api/statuscode/201, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt similarity index 87% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt index 5bf11d08d6..ffe8bc3170 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_statuscode_503_statusCode=ServiceUnavailable.verified.txt @@ -8,16 +8,17 @@ Type: web, Error: 1, Tags: { - error.msg: The HTTP response has status code 503., + aspnet.route: api/statuscode/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 503, + error.msg: The HTTP response has status code 503., http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 503, http.url: http://localhost:00000/api/statuscode/503, language: dotnet, - aspnet.route: api/statuscode/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt similarity index 94% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt index a40ab152da..e3fda55362 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_transient-failure_false_statusCode=InternalServerError.verified.txt @@ -8,6 +8,8 @@ Type: web, Error: 1, Tags: { + aspnet.route: api/transient-failure/{value}, + env: integration_tests, error.msg: Passed in value was not 'true': false, error.stack: System.ArgumentException: Passed in value was not 'true': false @@ -23,14 +25,13 @@ at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Datadog.Trace.ClrProfiler.Integrations.AspNetWebApi2Integration.d__9`1.MoveNext(), error.type: System.ArgumentException, - env: integration_tests, - version: 1.0.0, - span.kind: server, http.method: GET, http.request.headers.host: localhost:00000, http.url: http://localhost:00000/api/transient-failure/false, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt similarity index 84% rename from test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt rename to test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt index 2177c2e1e1..4d74b16590 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/AspNet/Snapshots/OwinWebApi2Tests.CallTarget.WithFF.X86.SubmitsTraces_path=_api_transient-failure_true_statusCode=OK.verified.txt @@ -7,15 +7,16 @@ Service: Samples.Owin.WebApi2, Type: web, Tags: { + aspnet.route: api/transient-failure/{value}, env: integration_tests, - version: 1.0.0, - span.kind: server, - http.status_code: 200, http.method: GET, http.request.headers.host: localhost:00000, + http.status_code: 200, http.url: http://localhost:00000/api/transient-failure/true, language: dotnet, - aspnet.route: api/transient-failure/{value} + runtime-id: Guid_1, + span.kind: server, + version: 1.0.0 }, Metrics: { _sampling_priority_v1: 1.0, diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/CI/MsTestV2Tests.cs b/test/Datadog.Trace.ClrProfiler.IntegrationTests/CI/MsTestV2Tests.cs index ed3d96201e..6d0d92cfd3 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/CI/MsTestV2Tests.cs +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/CI/MsTestV2Tests.cs @@ -74,6 +74,9 @@ public void SubmitTraces(string packageVersion) // check the version AssertTargetSpanEqual(targetSpan, "version", "1.0.0"); + // checks the runtime id tag + AssertTargetSpanExists(targetSpan, Tags.RuntimeId); + // checks the origin tag CheckOriginTag(targetSpan); @@ -199,6 +202,12 @@ private static void AssertTargetSpanEqual(MockTracerAgent.Span targetSpan, strin targetSpan.Tags.Remove(key); } + private static void AssertTargetSpanExists(MockTracerAgent.Span targetSpan, string key) + { + Assert.True(targetSpan.Tags.ContainsKey(key)); + targetSpan.Tags.Remove(key); + } + private static void AssertTargetSpanContains(MockTracerAgent.Span targetSpan, string key, string value) { Assert.Contains(value, targetSpan.Tags[key]); diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/CI/NUnitTests.cs b/test/Datadog.Trace.ClrProfiler.IntegrationTests/CI/NUnitTests.cs index d8e3029ad2..6a3962497d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/CI/NUnitTests.cs +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/CI/NUnitTests.cs @@ -100,6 +100,9 @@ public void SubmitTraces(string packageVersion, bool enableCallTarget) // check the version AssertTargetSpanEqual(targetSpan, "version", "1.0.0"); + // checks the runtime id tag + AssertTargetSpanExists(targetSpan, Tags.RuntimeId); + // checks the origin tag CheckOriginTag(targetSpan); @@ -241,6 +244,12 @@ private static void AssertTargetSpanEqual(MockTracerAgent.Span targetSpan, strin targetSpan.Tags.Remove(key); } + private static void AssertTargetSpanExists(MockTracerAgent.Span targetSpan, string key) + { + Assert.True(targetSpan.Tags.ContainsKey(key)); + targetSpan.Tags.Remove(key); + } + private static void AssertTargetSpanContains(MockTracerAgent.Span targetSpan, string key, string value) { Assert.Contains(value, targetSpan.Tags[key]); diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/CI/XUnitTests.cs b/test/Datadog.Trace.ClrProfiler.IntegrationTests/CI/XUnitTests.cs index 8d770e43d1..5f111931e4 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/CI/XUnitTests.cs +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/CI/XUnitTests.cs @@ -89,6 +89,9 @@ public void SubmitTraces(string packageVersion, bool enableCallTarget) // checks the origin tag CheckOriginTag(targetSpan); + // checks the runtime id tag + AssertTargetSpanExists(targetSpan, Tags.RuntimeId); + // Check the Environment AssertTargetSpanEqual(targetSpan, Tags.Env, "integration_tests"); @@ -222,6 +225,12 @@ private static void AssertTargetSpanEqual(MockTracerAgent.Span targetSpan, strin targetSpan.Tags.Remove(key); } + private static void AssertTargetSpanExists(MockTracerAgent.Span targetSpan, string key) + { + Assert.True(targetSpan.Tags.ContainsKey(key)); + targetSpan.Tags.Remove(key); + } + private static void AssertTargetSpanContains(MockTracerAgent.Span targetSpan, string key, string value) { Assert.Contains(value, targetSpan.Tags[key]); diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/CosmosTests.cs b/test/Datadog.Trace.ClrProfiler.IntegrationTests/CosmosTests.cs index 531f7af0da..db8169dc5b 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/CosmosTests.cs +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/CosmosTests.cs @@ -65,11 +65,11 @@ public void SubmitsTraces(string packageVersion) var spans = agent.WaitForSpans(expectedSpanCount, operationName: ExpectedOperationName); spans.Count.Should().BeGreaterOrEqualTo(expectedSpanCount, $"Expecting at least {expectedSpanCount} spans, only received {spans.Count}"); - Console.WriteLine($"spans.Count: {spans.Count}"); + Output.WriteLine($"spans.Count: {spans.Count}"); foreach (var span in spans) { - Console.WriteLine(span); + Output.WriteLine(span.ToString()); } var dbTags = 0; diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/Datadog.Trace.ClrProfiler.IntegrationTests.csproj b/test/Datadog.Trace.ClrProfiler.IntegrationTests/Datadog.Trace.ClrProfiler.IntegrationTests.csproj index 68a48db574..f248a73bde 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/Datadog.Trace.ClrProfiler.IntegrationTests.csproj +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/Datadog.Trace.ClrProfiler.IntegrationTests.csproj @@ -27,9 +27,6 @@ - - - diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/Helpers/TestHelper.cs b/test/Datadog.Trace.ClrProfiler.IntegrationTests/Helpers/TestHelper.cs index 0d12f85684..235569ade9 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/Helpers/TestHelper.cs +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/Helpers/TestHelper.cs @@ -76,14 +76,12 @@ public Process StartDotnetTestSample(int traceAgentPort, string arguments, strin Output.WriteLine("ApplicationPath: " + appPath); return ProfilerHelper.StartProcessWithProfiler( exec, - appPath, EnvironmentHelper, - integrationPaths, - arguments, + $"{appPath} {arguments ?? string.Empty}", traceAgentPort: traceAgentPort, statsdPort: statsdPort, aspNetCorePort: aspNetCorePort, - forceExecutable: true); + processToProfile: exec); } public ProcessResult RunDotnetTestSampleAndWaitForExit(int traceAgentPort, int? statsdPort = null, string arguments = null, string packageVersion = "", string framework = "") @@ -129,15 +127,17 @@ public Process StartSample(int traceAgentPort, string arguments, string packageV IEnumerable integrationPaths = Directory.EnumerateFiles(".", "*integrations.json").Select(Path.GetFullPath); Output.WriteLine($"Starting Application: {sampleAppPath}"); + var executable = EnvironmentHelper.IsCoreClr() ? EnvironmentHelper.GetSampleExecutionSource() : sampleAppPath; + var args = EnvironmentHelper.IsCoreClr() ? $"{sampleAppPath} {arguments ?? string.Empty}" : arguments; + return ProfilerHelper.StartProcessWithProfiler( - EnvironmentHelper.GetSampleExecutionSource(), - sampleAppPath, + executable, EnvironmentHelper, - integrationPaths, - arguments, + args, traceAgentPort: traceAgentPort, statsdPort: statsdPort, - aspNetCorePort: aspNetCorePort); + aspNetCorePort: aspNetCorePort, + processToProfile: executable); } public ProcessResult RunSampleAndWaitForExit(int traceAgentPort, int? statsdPort = null, string arguments = null, string packageVersion = "", string framework = "") @@ -175,7 +175,7 @@ public ProcessResult RunSampleAndWaitForExit(int traceAgentPort, int? statsdPort // get full paths to integration definitions IEnumerable integrationPaths = Directory.EnumerateFiles(".", "*integrations.json").Select(Path.GetFullPath); - var exe = EnvironmentHelper.GetSampleExecutionSource(); + var iisExpress = EnvironmentHelper.GetSampleExecutionSource(); var configTemplate = File.ReadAllText("applicationHost.config"); @@ -196,16 +196,15 @@ public ProcessResult RunSampleAndWaitForExit(int traceAgentPort, int? statsdPort "/trace:info" }; - Output.WriteLine($"[webserver] starting {exe} {string.Join(" ", args)}"); + Output.WriteLine($"[webserver] starting {iisExpress} {string.Join(" ", args)}"); var process = ProfilerHelper.StartProcessWithProfiler( - EnvironmentHelper.GetSampleExecutionSource(), - EnvironmentHelper.GetSampleExecutionSource(), + iisExpress, EnvironmentHelper, - integrationPaths, arguments: string.Join(" ", args), redirectStandardInput: true, - traceAgentPort: traceAgentPort); + traceAgentPort: traceAgentPort, + processToProfile: iisExpress); var wh = new EventWaitHandle(false, EventResetMode.AutoReset); @@ -324,7 +323,8 @@ protected void SetCallTargetSettings(bool enableCallTarget) string path, MockTracerAgent agent, int httpPort, - HttpStatusCode expectedHttpStatusCode) + HttpStatusCode expectedHttpStatusCode, + int expectedSpanCount = 2) { using var httpClient = new HttpClient(); @@ -339,7 +339,7 @@ protected void SetCallTargetSettings(bool enableCallTarget) agent.SpanFilters.Add(IsServerSpan); return agent.WaitForSpans( - count: 2, + count: expectedSpanCount, minDateTime: testStart, returnAllOperations: true); } diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/Helpers/VerifyHelper.cs b/test/Datadog.Trace.ClrProfiler.IntegrationTests/Helpers/VerifyHelper.cs index 2b3a8e48eb..8eedd1167d 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/Helpers/VerifyHelper.cs +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/Helpers/VerifyHelper.cs @@ -16,6 +16,7 @@ namespace Datadog.Trace.ClrProfiler.IntegrationTests { internal static class VerifyHelper { + public const string SnapshotDirectory = "Snapshots"; private static readonly Regex LocalhostRegex = new(@"localhost\:\d+", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex KeepRateRegex = new(@"_dd.tracer_kr: \d\.\d+", RegexOptions.IgnoreCase | RegexOptions.Compiled); @@ -35,7 +36,12 @@ public static string SanitisePathsForVerify(string path) public static VerifySettings GetSpanVerifierSettings(params object[] parameters) { var settings = new VerifySettings(); - settings.UseParameters(parameters); + settings.UseDirectory(SnapshotDirectory); + if (parameters.Length > 0) + { + settings.UseParameters(parameters); + } + settings.ModifySerialization(_ => { _.IgnoreMember(s => s.Duration); @@ -64,14 +70,15 @@ private static void ReplaceRegex(StringBuilder builder, Regex regex, string repl private static Dictionary ScrubStackTraceForErrors( MockTracerAgent.Span span, Dictionary tags) { - var replacementTags = tags; - if (span.Error > 0 && tags.ContainsKey(Tags.ErrorStack)) - { - replacementTags = tags.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); - replacementTags[Tags.ErrorStack] = Scrubbers.ScrubStackTrace(replacementTags[Tags.ErrorStack]); - } - - return replacementTags; + return tags + .Select( + kvp => kvp.Key switch + { + Tags.ErrorStack => new KeyValuePair(kvp.Key, Scrubbers.ScrubStackTrace(kvp.Value)), + _ => kvp + }) + .OrderBy(x => x.Key) + .ToDictionary(x => x.Key, x => x.Value); } } } diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/KafkaTests.cs b/test/Datadog.Trace.ClrProfiler.IntegrationTests/KafkaTests.cs index af08f80fab..1297472551 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/KafkaTests.cs +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/KafkaTests.cs @@ -64,7 +64,10 @@ public void SubmitsTraces(string packageVersion) var allProducerSpans = allSpans.Where(x => x.Name == "kafka.produce").ToList(); var successfulProducerSpans = allProducerSpans.Where(x => x.Error == 0).ToList(); var errorProducerSpans = allProducerSpans.Where(x => x.Error > 0).ToList(); + var allConsumerSpans = allSpans.Where(x => x.Name == "kafka.consume").ToList(); + var successfulConsumerSpans = allConsumerSpans.Where(x => x.Error == 0).ToList(); + var errorConsumerSpans = allConsumerSpans.Where(x => x.Error > 0).ToList(); VerifyProducerSpanProperties(successfulProducerSpans, GetSuccessfulResourceName("Produce", topic), ExpectedSuccessProducerSpans + ExpectedTombstoneProducerSpans); VerifyProducerSpanProperties(errorProducerSpans, ErrorProducerResourceName, ExpectedErrorProducerSpans); @@ -105,21 +108,33 @@ public void SubmitsTraces(string packageVersion) .OnlyHaveUniqueItems() .And.Subject.ToImmutableHashSet(); - VerifyConsumerSpanProperties(allConsumerSpans, GetSuccessfulResourceName("Consume", topic), ExpectedConsumerSpans); + VerifyConsumerSpanProperties(successfulConsumerSpans, GetSuccessfulResourceName("Consume", topic), ExpectedConsumerSpans); // every consumer span should be a child of a producer span. - allConsumerSpans + successfulConsumerSpans .Should() .OnlyContain(span => span.ParentId.HasValue) .And.OnlyContain(span => producerSpanIds.Contains(span.ParentId.Value)); // HaveCountGreaterOrEqualTo because same message may be consumed by both - allConsumerSpans + successfulConsumerSpans .Where(span => span.Tags.ContainsKey(Tags.KafkaTombstone)) .Select(span => span.Tags[Tags.KafkaTombstone]) .Should() .HaveCountGreaterOrEqualTo(ExpectedTombstoneProducerSpans) .And.OnlyContain(tag => tag == "true"); + + // Error spans are created in 1.5.3 when the broker doesn't exist yet + // Other package versions don't error, so won't create a span, + // so no fixed number requirement + if (errorConsumerSpans.Count > 0) + { + errorConsumerSpans + .Should() + .OnlyContain(x => x.Tags.ContainsKey(Tags.ErrorType)) + .And.OnlyContain(x => x.Tags[Tags.ErrorMsg] == "Broker: Unknown topic or partition") + .And.OnlyContain(x => x.Tags[Tags.ErrorType] == "Confluent.Kafka.ConsumeException"); + } } private void VerifyProducerSpanProperties(List producerSpans, string resourceName, int expectedCount) diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/LoadTests/LoadTestBase.cs b/test/Datadog.Trace.ClrProfiler.IntegrationTests/LoadTests/LoadTestBase.cs index ea0ed00c09..0bbfd25fbc 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/LoadTests/LoadTestBase.cs +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/LoadTests/LoadTestBase.cs @@ -6,6 +6,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.IO; using System.Linq; using System.Threading; using Datadog.Core.Tools; @@ -129,41 +130,23 @@ protected void RunLoadTestPart(LoadTestPart loadTestPart) throw new Exception($"Load test file does not exist: {applicationPath}"); } - ProcessStartInfo startInfo; - - int agentPort = loadTestPart.Agent?.Port ?? 0; - int aspNetPort = loadTestPart.Port ?? 0; - - string commandLineArgs = string.Empty; - - if (loadTestPart.CommandLineArgs != null) - { - commandLineArgs = string.Join(" ", loadTestPart.CommandLineArgs); - } - - if (EnvironmentHelper.IsCoreClr()) - { - // .NET Core - startInfo = new ProcessStartInfo(executable, $"{applicationPath} {commandLineArgs}"); - } - else - { - // .NET Framework - startInfo = new ProcessStartInfo(executable, $"{commandLineArgs}"); - } - - environmentHelper.SetEnvironmentVariables(agentPort, aspNetPort, statsdPort: null, executable, startInfo.EnvironmentVariables); - startInfo.UseShellExecute = false; - startInfo.CreateNoWindow = true; - startInfo.RedirectStandardOutput = true; - startInfo.RedirectStandardError = true; - startInfo.RedirectStandardInput = false; + var commandLineArgs = loadTestPart.CommandLineArgs is not null + ? string.Join(" ", loadTestPart.CommandLineArgs) + : string.Empty; Output.WriteLine($"Starting load test part:{environmentHelper.SampleName}"); Process process = null; try { - process = Process.Start(startInfo); + process = ProfilerHelper.StartProcessWithProfiler( + executable, + environmentHelper, + EnvironmentHelper.IsCoreClr() ? $"{applicationPath} {commandLineArgs}" : commandLineArgs, + redirectStandardInput: false, + traceAgentPort: loadTestPart.Agent?.Port ?? 0, + aspNetCorePort: loadTestPart.Port ?? 0, + statsdPort: null, + processToProfile: Path.GetFileName(executable)); if (process == null) { diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/PackageVersionsComprehensive.g.cs b/test/Datadog.Trace.ClrProfiler.IntegrationTests/PackageVersionsComprehensive.g.cs index 0818ebcffb..bbd65f0e7f 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/PackageVersionsComprehensive.g.cs +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/PackageVersionsComprehensive.g.cs @@ -704,6 +704,7 @@ public class PackageVersionsComprehensive new object[] { "2.1.1" }, new object[] { "2.1.2" }, new object[] { "2.1.3" }, + new object[] { "3.0.0" }, #endif }; diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/PackageVersionsLatestMinors.g.cs b/test/Datadog.Trace.ClrProfiler.IntegrationTests/PackageVersionsLatestMinors.g.cs index ad10c30ba7..3bc323c5af 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/PackageVersionsLatestMinors.g.cs +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/PackageVersionsLatestMinors.g.cs @@ -164,6 +164,7 @@ public class PackageVersionsLatestMinors new object[] { "1.1.4" }, new object[] { "2.0.1" }, new object[] { "2.1.3" }, + new object[] { "3.0.0" }, #endif }; diff --git a/test/Datadog.Trace.ClrProfiler.IntegrationTests/SmokeTests/SmokeTestBase.cs b/test/Datadog.Trace.ClrProfiler.IntegrationTests/SmokeTests/SmokeTestBase.cs index 31b5c94a74..5d7b051025 100644 --- a/test/Datadog.Trace.ClrProfiler.IntegrationTests/SmokeTests/SmokeTestBase.cs +++ b/test/Datadog.Trace.ClrProfiler.IntegrationTests/SmokeTests/SmokeTestBase.cs @@ -78,7 +78,7 @@ protected void CheckForSmoke(bool shouldDeserializeTraces = true) { // Initialize StartInfo process.StartInfo.FileName = executable; - EnvironmentHelper.SetEnvironmentVariables(agentPort, aspNetCorePort, statsdPort: null, executable, process.StartInfo.EnvironmentVariables); + EnvironmentHelper.SetEnvironmentVariables(agentPort, aspNetCorePort, statsdPort: null, process.StartInfo.EnvironmentVariables, processToProfile: executable); if (EnvironmentHelper.IsCoreClr()) { // Command becomes: dotnet.exe diff --git a/test/Datadog.Trace.DuckTyping.Tests/Datadog.Trace.DuckTyping.Tests.csproj b/test/Datadog.Trace.DuckTyping.Tests/Datadog.Trace.DuckTyping.Tests.csproj index 7a0686def1..f654a698bb 100644 --- a/test/Datadog.Trace.DuckTyping.Tests/Datadog.Trace.DuckTyping.Tests.csproj +++ b/test/Datadog.Trace.DuckTyping.Tests/Datadog.Trace.DuckTyping.Tests.csproj @@ -13,4 +13,9 @@ $(DefineConstants);INTERFACE_DEFAULTS + + + + + diff --git a/test/Datadog.Trace.DuckTyping.Tests/DuckChainingWithExplicitInterfaceTests.cs b/test/Datadog.Trace.DuckTyping.Tests/DuckChainingWithExplicitInterfaceTests.cs new file mode 100644 index 0000000000..5263e4aade --- /dev/null +++ b/test/Datadog.Trace.DuckTyping.Tests/DuckChainingWithExplicitInterfaceTests.cs @@ -0,0 +1,113 @@ +// +// 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. +// + +#pragma warning disable SA1201 // Elements must appear in the correct order +#pragma warning disable SA1302 // Interface names should begin with I + +using System; +using FluentAssertions; +using Xunit; + +namespace Datadog.Trace.DuckTyping.Tests +{ + public class DuckChainingWithExplicitInterfaceTests + { + [Fact] + public void NormalTest() + { + var targetObject = new T_HostingApplication(); + var proxyObject = targetObject.DuckCast(); + + var logger = proxyObject.Diagnostics.Logger; + var disposable = logger.BeginScope(new object()); + + disposable.Should().BeOfType(); + } + + public class T_HostingApplication + { + private T_HostingApplicationDiagnostics _diagnostics; + + public T_HostingApplication() + { + _diagnostics = new T_HostingApplicationDiagnostics(); + } + } + + internal class T_HostingApplicationDiagnostics + { + private readonly T_ILogger _logger; + + public T_HostingApplicationDiagnostics() + { + _logger = new T_Logger(); + } + } + + public interface T_ILogger + { + IDisposable BeginScope(TState state); + } + + public interface T_ILogger : T_ILogger + { + } + + public class T_Logger : T_ILogger + { + private readonly T_ILogger _logger; + + public T_Logger() + { + _logger = new T_Logger(); + } + + IDisposable T_ILogger.BeginScope(TState state) + { + return _logger.BeginScope(state); + } + } + + public class T_Logger : T_ILogger + { + IDisposable T_ILogger.BeginScope(TState state) + { + return new T_DisposableObject(); + } + } + + internal class T_InternalObject + { + } + + private class T_DisposableObject : IDisposable + { + public void Dispose() + { + // . + } + } + + // *** + + public interface P_IHostingApplication + { + [Duck(Name = "_diagnostics", Kind = DuckKind.Field)] + P_IHostingApplicationDiagnostics Diagnostics { get; } + } + + public interface P_IHostingApplicationDiagnostics + { + [Duck(Name = "_logger", Kind = DuckKind.Field)] + P_ILogger Logger { get; } + } + + public interface P_ILogger + { + [Duck(ExplicitInterfaceTypeName = "*")] + IDisposable BeginScope(TState state); + } + } +} diff --git a/test/Datadog.Trace.DuckTyping.Tests/DuckExplicitInterfacePrivateTests.cs b/test/Datadog.Trace.DuckTyping.Tests/DuckExplicitInterfacePrivateTests.cs new file mode 100644 index 0000000000..32815314eb --- /dev/null +++ b/test/Datadog.Trace.DuckTyping.Tests/DuckExplicitInterfacePrivateTests.cs @@ -0,0 +1,177 @@ +// +// 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. +// + +#pragma warning disable SA1201 // Elements must appear in the correct order + +using FluentAssertions; +using Xunit; + +namespace Datadog.Trace.DuckTyping.Tests +{ + public class DuckExplicitInterfacePrivateTests + { + [Fact] + public void PrivateNormalTest() + { + var targetObject = new PrivateTargetObject(); + var proxy = targetObject.DuckCast(); + + proxy.SayHi().Should().Be("Hello World"); + proxy.SayHiWithWildcard().Should().Be("Hello World (*)"); + } + + [Fact] + public void PrivateGenericTest() + { + var targetObject = new PrivateTargetGenericObject(); + var proxy = targetObject.DuckCast(); + + proxy.Sum(1, 1).Should().Be(2); + proxy.Sum(1.0f, 1.0f).Should().Be(2.0f); + } + + [Fact] + public void PrivateNormalGenericInstanceTest() + { + var targetObject = new PrivateTargetObject(); + var proxy = targetObject.DuckCast(); + + proxy.SayHi().Should().Be("Hello World"); + proxy.SayHiWithWildcard().Should().Be("Hello World (*)"); + } + + [Fact] + public void PrivateGenericWithGenericInstanceTest() + { + var targetObject = new PrivateTargetGenericObject(); + var proxy = targetObject.DuckCast(); + + proxy.Sum(1, 1).Should().Be(2); + proxy.Sum(1.0f, 1.0f).Should().Be(2.0f); + } + + [Fact] + public void PrivateNormalGenericPrivateInstanceTest() + { + var targetObject = new PrivateTargetObject(); + var proxy = targetObject.DuckCast(); + + proxy.SayHi().Should().Be("Hello World"); + proxy.SayHiWithWildcard().Should().Be("Hello World (*)"); + } + + [Fact] + public void PrivateGenericWithGenericPrivateInstanceTest() + { + var targetObject = new PrivateTargetGenericObject(); + var proxy = targetObject.DuckCast(); + + proxy.Sum(1, 1).Should().Be(2); + proxy.Sum(1.0f, 1.0f).Should().Be(2.0f); + } + + public interface ITarget + { + string SayHi(); + + string SayHiWithWildcard(); + } + + public interface ITarget : ITarget + { + } + + public interface IGenericTarget + { + T Sum(T a, T b); + } + + public interface IGenericTarget : IGenericTarget + { + } + + public interface IProxyDefinition + { + [Duck(ExplicitInterfaceTypeName = "Datadog.Trace.DuckTyping.Tests.DuckExplicitInterfacePrivateTests+ITarget")] + string SayHi(); + + [Duck(ExplicitInterfaceTypeName = "*")] + string SayHiWithWildcard(); + } + + public interface IPrivateGenericProxyDefinition + { + [Duck(ExplicitInterfaceTypeName = "*", GenericParameterTypeNames = new string[] { "System.Int32" })] + int Sum(int a, int b); + + [Duck(ExplicitInterfaceTypeName = "*", GenericParameterTypeNames = new string[] { "System.Single" })] + float Sum(float a, float b); + } + + private class PrivateTargetObject : ITarget + { + string ITarget.SayHi() + { + return "Hello World"; + } + + string ITarget.SayHiWithWildcard() + { + return "Hello World (*)"; + } + } + + private class PrivateTargetObject : ITarget + { + string ITarget.SayHi() + { + return "Hello World"; + } + + string ITarget.SayHiWithWildcard() + { + return "Hello World (*)"; + } + } + + private class PrivateTargetGenericObject : IGenericTarget + { + T IGenericTarget.Sum(T a, T b) + { + if (a is int aInt && b is int bInt) + { + return (T)(object)(aInt + bInt); + } + else if (a is float aFloat && b is float bFloat) + { + return (T)(object)(aFloat + bFloat); + } + + return default; + } + } + + private class PrivateTargetGenericObject : IGenericTarget + { + T IGenericTarget.Sum(T a, T b) + { + if (a is int aInt && b is int bInt) + { + return (T)(object)(aInt + bInt); + } + else if (a is float aFloat && b is float bFloat) + { + return (T)(object)(aFloat + bFloat); + } + + return default; + } + } + + private class PrivateObject + { + } + } +} diff --git a/test/Datadog.Trace.DuckTyping.Tests/DuckExplicitInterfaceTests.cs b/test/Datadog.Trace.DuckTyping.Tests/DuckExplicitInterfaceTests.cs new file mode 100644 index 0000000000..1907aee0bc --- /dev/null +++ b/test/Datadog.Trace.DuckTyping.Tests/DuckExplicitInterfaceTests.cs @@ -0,0 +1,174 @@ +// +// 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. +// + +#pragma warning disable SA1201 // Elements must appear in the correct order + +using FluentAssertions; +using Xunit; + +namespace Datadog.Trace.DuckTyping.Tests +{ + public class DuckExplicitInterfaceTests + { + [Fact] + public void NormalTest() + { + var targetObject = new TargetObject(); + var proxy = targetObject.DuckCast(); + + proxy.SayHi().Should().Be("Hello World"); + proxy.SayHiWithWildcard().Should().Be("Hello World (*)"); + } + + [Fact] + public void GenericTest() + { + var targetObject = new TargetGenericObject(); + var proxy = targetObject.DuckCast(); + + proxy.Sum(1, 1).Should().Be(2); + proxy.Sum(1.0f, 1.0f).Should().Be(2.0f); + } + + [Fact] + public void NormalGenericInstanceTest() + { + var targetObject = new TargetObject(); + var proxy = targetObject.DuckCast(); + + proxy.SayHi().Should().Be("Hello World"); + proxy.SayHiWithWildcard().Should().Be("Hello World (*)"); + } + + [Fact] + public void GenericWithGenericInstanceTest() + { + var targetObject = new TargetGenericObject(); + var proxy = targetObject.DuckCast(); + + proxy.Sum(1, 1).Should().Be(2); + proxy.Sum(1.0f, 1.0f).Should().Be(2.0f); + } + + [Fact] + public void NormalGenericPrivateInstanceTest() + { + var targetObject = new TargetObject(); + var proxy = targetObject.DuckCast(); + + proxy.SayHi().Should().Be("Hello World"); + proxy.SayHiWithWildcard().Should().Be("Hello World (*)"); + } + + [Fact] + public void GenericWithGenericPrivateInstanceTest() + { + var targetObject = new TargetGenericObject(); + var proxy = targetObject.DuckCast(); + + proxy.Sum(1, 1).Should().Be(2); + proxy.Sum(1.0f, 1.0f).Should().Be(2.0f); + } + + public class TargetObject : ITarget + { + string ITarget.SayHi() + { + return "Hello World"; + } + + string ITarget.SayHiWithWildcard() + { + return "Hello World (*)"; + } + } + + public class TargetGenericObject : IGenericTarget + { + T IGenericTarget.Sum(T a, T b) + { + if (a is int aInt && b is int bInt) + { + return (T)(object)(aInt + bInt); + } + else if (a is float aFloat && b is float bFloat) + { + return (T)(object)(aFloat + bFloat); + } + + return default; + } + } + + public class TargetObject : ITarget + { + string ITarget.SayHi() + { + return "Hello World"; + } + + string ITarget.SayHiWithWildcard() + { + return "Hello World (*)"; + } + } + + public class TargetGenericObject : IGenericTarget + { + T IGenericTarget.Sum(T a, T b) + { + if (a is int aInt && b is int bInt) + { + return (T)(object)(aInt + bInt); + } + else if (a is float aFloat && b is float bFloat) + { + return (T)(object)(aFloat + bFloat); + } + + return default; + } + } + + public interface ITarget + { + string SayHi(); + + string SayHiWithWildcard(); + } + + public interface ITarget : ITarget + { + } + + public interface IGenericTarget + { + T Sum(T a, T b); + } + + public interface IGenericTarget : IGenericTarget + { + } + + public interface IProxyDefinition + { + [Duck(ExplicitInterfaceTypeName = "Datadog.Trace.DuckTyping.Tests.DuckExplicitInterfaceTests+ITarget")] + string SayHi(); + + [Duck(ExplicitInterfaceTypeName = "*")] + string SayHiWithWildcard(); + } + + public interface IGenericProxyDefinition + { + [Duck(ExplicitInterfaceTypeName = "*")] + T Sum(T a, T b); + } + + private class PrivateObject + { + } + } +} diff --git a/test/Datadog.Trace.DuckTyping.Tests/DuckILoggerTests.cs b/test/Datadog.Trace.DuckTyping.Tests/DuckILoggerTests.cs new file mode 100644 index 0000000000..d9a36191c6 --- /dev/null +++ b/test/Datadog.Trace.DuckTyping.Tests/DuckILoggerTests.cs @@ -0,0 +1,77 @@ +// +// 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. +// + +#pragma warning disable SA1201 // Elements must appear in the correct order + +#if !NETFRAMEWORK + +using System; +using System.Diagnostics; +using System.Threading.Tasks; +using Datadog.Trace.DuckTyping; +using FluentAssertions; +using Microsoft.AspNetCore.Hosting.Internal; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Xunit; + +namespace Datadog.Trace.Tests +{ + public class DuckILoggerTests + { + [Fact] + public void CanCallBeginScope() + { + var webHost = typeof(WebHostOptions).Assembly.GetType("Microsoft.AspNetCore.Hosting.Internal.WebHost"); + var hostingApplication = typeof(DuckILoggerTests) + .GetMethod(nameof(CreateHostingApplication)) + ?.MakeGenericMethod(webHost) + .Invoke(this, null); + + var proxy = hostingApplication.DuckCast(); + + proxy.Should().NotBeNull(); + + var logger = proxy.Diagnostics.Logger; + logger.Should().NotBeNull(); + var disposable = logger.BeginScope(new DatadogLoggingScope()); + disposable.Should().NotBeNull(); + } + + public object CreateHostingApplication() + { + return new HostingApplication( + application: context => Task.CompletedTask, + logger: new Logger(new LoggerFactory()), + new DiagnosticListener("ILoggerDuckTypingTests"), + httpContextFactory: new HttpContextFactory(Options.Create(new FormOptions()))); + } + + public class DatadogLoggingScope + { + } + + public interface IHostingApplication + { + [Duck(Name = "_diagnostics", Kind = DuckKind.Field)] + IHostingApplicationDiagnostics Diagnostics { get; } + } + + public interface IHostingApplicationDiagnostics + { + [Duck(Name = "_logger", Kind = DuckKind.Field)] + ILogger Logger { get; } + } + + public interface ILogger + { + [Duck(ExplicitInterfaceTypeName = "*")] + IDisposable BeginScope(TState state); + } + } +} +#endif diff --git a/test/Datadog.Trace.TestHelpers/EnvironmentHelper.cs b/test/Datadog.Trace.TestHelpers/EnvironmentHelper.cs index 5ad2fd1c98..9139659e46 100644 --- a/test/Datadog.Trace.TestHelpers/EnvironmentHelper.cs +++ b/test/Datadog.Trace.TestHelpers/EnvironmentHelper.cs @@ -17,7 +17,6 @@ namespace Datadog.Trace.TestHelpers { public class EnvironmentHelper { - private static readonly Assembly EntryAssembly = Assembly.GetEntryAssembly(); private static readonly Assembly ExecutingAssembly = Assembly.GetExecutingAssembly(); private static readonly string RuntimeFrameworkDescription = RuntimeInformation.FrameworkDescription.ToLower(); @@ -30,8 +29,6 @@ public class EnvironmentHelper private readonly string _runtime; private readonly bool _isCoreClr; private readonly string _samplesDirectory; - private readonly Type _anchorType; - private readonly Assembly _anchorAssembly; private readonly TargetFrameworkAttribute _targetFramework; private bool _requiresProfiling; @@ -42,14 +39,12 @@ public EnvironmentHelper( string sampleName, Type anchorType, ITestOutputHelper output, - string samplesDirectory = "test/test-applications/integrations", + string samplesDirectory = null, bool prependSamplesToAppName = true, bool requiresProfiling = true) { SampleName = sampleName; - _samplesDirectory = samplesDirectory ?? "test/test-applications/integrations"; - _anchorType = anchorType; - _anchorAssembly = Assembly.GetAssembly(_anchorType); + _samplesDirectory = samplesDirectory ?? Path.Combine("test", "test-applications", "integrations"); _targetFramework = Assembly.GetAssembly(anchorType).GetCustomAttribute(); _output = output; _requiresProfiling = requiresProfiling; @@ -80,22 +75,6 @@ public EnvironmentHelper( public string FullSampleName => $"{_appNamePrepend}{SampleName}"; - public static EnvironmentHelper NonProfiledHelper(Type anchor, string appName, string directory) - { - return new EnvironmentHelper( - sampleName: appName, - anchorType: anchor, - output: null, - samplesDirectory: directory, - prependSamplesToAppName: false, - requiresProfiling: false); - } - - public static string GetExecutingAssembly() - { - return ExecutingAssembly.Location; - } - public static bool IsNet5() { return Environment.Version.Major >= 5; @@ -106,18 +85,6 @@ public static bool IsCoreClr() return RuntimeFrameworkDescription.Contains("core") || IsNet5(); } - public static string GetRuntimeIdentifier() - { - return IsCoreClr() - ? string.Empty - : $"{EnvironmentTools.GetOS()}-{EnvironmentTools.GetPlatform()}"; - } - - public static string GetSolutionDirectory() - { - return EnvironmentTools.GetSolutionDirectory(); - } - public static void ClearProfilerEnvironmentVariables() { var environmentVariables = new[] @@ -154,11 +121,9 @@ public void SetEnvironmentVariables( int agentPort, int aspNetCorePort, int? statsdPort, - string processPath, StringDictionary environmentVariables, - bool ignoreProfilerProcesses = false) + string processToProfile = null) { - var processName = processPath; string profilerEnabled = _requiresProfiling ? "1" : "0"; string profilerPath; @@ -179,8 +144,6 @@ public void SetEnvironmentVariables( profilerPath = GetProfilerPath(); environmentVariables["COR_PROFILER_PATH"] = profilerPath; environmentVariables["OTEL_DOTNET_TRACER_HOME"] = Path.GetDirectoryName(profilerPath); - - processName = Path.GetFileName(processPath); } if (DebugModeEnabled) @@ -188,9 +151,9 @@ public void SetEnvironmentVariables( environmentVariables["OTEL_TRACE_DEBUG"] = "1"; } - if (!ignoreProfilerProcesses) + if (!string.IsNullOrEmpty(processToProfile)) { - environmentVariables["OTEL_PROFILER_PROCESSES"] = processName; + environmentVariables["OTEL_PROFILER_PROCESSES"] = Path.GetFileName(processToProfile); } string integrations = string.Join(";", GetIntegrationsFilePaths()); @@ -256,7 +219,7 @@ public string[] GetIntegrationsFilePaths() _output?.WriteLine($"Attempt 2: Unable to find integrations at {_integrationsFileLocation}."); // One last attempt at the solution root _integrationsFileLocation = Path.Combine( - GetSolutionDirectory(), + EnvironmentTools.GetSolutionDirectory(), fileName); } @@ -333,7 +296,7 @@ public string GetSampleApplicationPath(string packageVersion = "", string framew { string extension = "exe"; - if (EnvironmentHelper.IsCoreClr() || _samplesDirectory.Contains("aspnet")) + if (IsCoreClr() || _samplesDirectory.Contains("aspnet")) { extension = "dll"; } @@ -411,7 +374,7 @@ public string GetDotNetTest() public string GetSampleProjectDirectory() { - var solutionDirectory = GetSolutionDirectory(); + var solutionDirectory = EnvironmentTools.GetSolutionDirectory(); var projectDir = Path.Combine( solutionDirectory, _samplesDirectory, @@ -483,7 +446,7 @@ public string GetTargetFramework() private string GetProfilerProjectBin() { return Path.Combine( - GetSolutionDirectory(), + EnvironmentTools.GetSolutionDirectory(), "src", "Datadog.Trace.ClrProfiler.Native", "bin", diff --git a/test/Datadog.Trace.TestHelpers/ProfilerHelper.cs b/test/Datadog.Trace.TestHelpers/ProfilerHelper.cs index 46f301907b..6bb4fa5a20 100644 --- a/test/Datadog.Trace.TestHelpers/ProfilerHelper.cs +++ b/test/Datadog.Trace.TestHelpers/ProfilerHelper.cs @@ -4,7 +4,6 @@ // using System; -using System.Collections.Generic; using System.Diagnostics; namespace Datadog.Trace.TestHelpers @@ -13,43 +12,25 @@ public class ProfilerHelper { public static Process StartProcessWithProfiler( string executable, - string applicationPath, EnvironmentHelper environmentHelper, - IEnumerable integrationPaths, string arguments = null, bool redirectStandardInput = false, int traceAgentPort = 9696, int aspNetCorePort = 5000, int? statsdPort = null, - bool? forceExecutable = null) + string processToProfile = null) { if (environmentHelper == null) { throw new ArgumentNullException(nameof(environmentHelper)); } - if (integrationPaths == null) - { - throw new ArgumentNullException(nameof(integrationPaths)); - } - // clear all relevant environment variables to start with a clean slate EnvironmentHelper.ClearProfilerEnvironmentVariables(); - ProcessStartInfo startInfo; - - if (EnvironmentHelper.IsCoreClr() || forceExecutable == true) - { - // .NET Core - startInfo = new ProcessStartInfo(executable, $"{applicationPath} {arguments ?? string.Empty}"); - } - else - { - // .NET Framework - startInfo = new ProcessStartInfo(applicationPath, $"{arguments ?? string.Empty}"); - } + var startInfo = new ProcessStartInfo(executable, $"{arguments ?? string.Empty}"); - environmentHelper.SetEnvironmentVariables(traceAgentPort, aspNetCorePort, statsdPort, executable, startInfo.EnvironmentVariables, forceExecutable == true); + environmentHelper.SetEnvironmentVariables(traceAgentPort, aspNetCorePort, statsdPort, startInfo.EnvironmentVariables, processToProfile); startInfo.UseShellExecute = false; startInfo.CreateNoWindow = true; diff --git a/test/Datadog.Trace.Tests/RuntimeMetrics/PerformanceCountersListenerTests.cs b/test/Datadog.Trace.Tests/RuntimeMetrics/PerformanceCountersListenerTests.cs index 93fbdf1f64..ab9b1819fc 100644 --- a/test/Datadog.Trace.Tests/RuntimeMetrics/PerformanceCountersListenerTests.cs +++ b/test/Datadog.Trace.Tests/RuntimeMetrics/PerformanceCountersListenerTests.cs @@ -4,8 +4,12 @@ // #if NETFRAMEWORK +using System; +using System.Threading; +using System.Threading.Tasks; using Datadog.Trace.RuntimeMetrics; using Datadog.Trace.Vendors.StatsdClient; +using FluentAssertions; using Moq; using Xunit; @@ -14,12 +18,14 @@ namespace Datadog.Trace.Tests.RuntimeMetrics public class PerformanceCountersListenerTests { [Fact] - public void PushEvents() + public async Task PushEvents() { var statsd = new Mock(); using var listener = new PerformanceCountersListener(statsd.Object); + await listener.WaitForInitialization(); + listener.Refresh(); statsd.Verify(s => s.Gauge(MetricsNames.Gen0HeapSize, It.IsAny(), 1, null), Times.Once); @@ -45,8 +51,62 @@ public void PushEvents() statsd.VerifyNoOtherCalls(); } + + [Fact] + public void AsynchronousInitialization() + { + var barrier = new Barrier(2); + void Callback() + { + barrier.SignalAndWait(); + barrier.SignalAndWait(); + } + + var statsd = new Mock(); + + using var listener = new TestPerformanceCounterListener(statsd.Object, Callback); + + // The first SignalAndWait will deadlock if InitializePerformanceCounters is not called asynchronously + barrier.SignalAndWait(); + + listener.WaitForInitialization().IsCompleted.Should().BeFalse(); + + // Initialization is still pending, make sure Refresh doesn't throw + listener.Refresh(); + + // Nothing should have been pushed to statsd since counters are not initialized + statsd.VerifyNoOtherCalls(); + + // All done, free the thread and cleanup + barrier.SignalAndWait(); + } + + private class TestPerformanceCounterListener : PerformanceCountersListener + { + // The field needs to be volatile because it's used concurrently from two threads + private volatile Action _callback; + + public TestPerformanceCounterListener(IDogStatsd statsd, Action callback) + : base(statsd) + { + _callback = callback; + } + + protected override void InitializePerformanceCounters() + { + while (_callback == null) + { + // There is a subtle race condition because InitializePerformanceCounters is virtual + // and called from the base constructor + Thread.SpinWait(1); + } + + _callback(); + + base.InitializePerformanceCounters(); + } + } } } - #endif diff --git a/test/Datadog.Trace.Tests/Tagging/TagsListTests.cs b/test/Datadog.Trace.Tests/Tagging/TagsListTests.cs index 635599baea..de5237e8d0 100644 --- a/test/Datadog.Trace.Tests/Tagging/TagsListTests.cs +++ b/test/Datadog.Trace.Tests/Tagging/TagsListTests.cs @@ -142,7 +142,8 @@ public void Serialization(bool topLevelSpan) var deserializedSpan = MessagePack.MessagePackSerializer.Deserialize(buffer); - Assert.Equal(16, deserializedSpan.Tags.Count); + // For top-level spans, there is one tag added during serialization + Assert.Equal(topLevelSpan ? 17 : 16, deserializedSpan.Tags.Count); // For top-level spans, there is one metric added during serialization Assert.Equal(topLevelSpan ? 17 : 16, deserializedSpan.Metrics.Count); @@ -158,6 +159,7 @@ public void Serialization(bool topLevelSpan) if (topLevelSpan) { + Assert.Equal(Tracer.RuntimeId, deserializedSpan.Tags[Tags.RuntimeId]); Assert.Equal(1.0, deserializedSpan.Metrics[Metrics.TopLevelSpan]); } } diff --git a/test/Datadog.Trace.Tests/TracerTests.cs b/test/Datadog.Trace.Tests/TracerTests.cs index 78347cbca6..1cb07ed0c0 100644 --- a/test/Datadog.Trace.Tests/TracerTests.cs +++ b/test/Datadog.Trace.Tests/TracerTests.cs @@ -403,6 +403,18 @@ public void LogPartialFlushWarning(string agentVersion, bool partialFlushEnabled _tracer.ShouldLogPartialFlushWarning(agentVersion).Should().BeFalse(); } + [Fact] + public void RuntimeId() + { + var runtimeId = Tracer.RuntimeId; + + // Runtime id should be stable for a given process + Tracer.RuntimeId.Should().Be(runtimeId); + + // Runtime id should be a UUID + Guid.TryParse(runtimeId, out _).Should().BeTrue(); + } + #if NET452 // Test that storage in the Logical Call Context does not expire diff --git a/test/benchmarks/Benchmarks.Trace/AspNetCoreBenchmark.cs b/test/benchmarks/Benchmarks.Trace/AspNetCoreBenchmark.cs index b08b432e18..4b34821749 100644 --- a/test/benchmarks/Benchmarks.Trace/AspNetCoreBenchmark.cs +++ b/test/benchmarks/Benchmarks.Trace/AspNetCoreBenchmark.cs @@ -2,14 +2,11 @@ using System; using System.Net.Http; -using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; using BenchmarkDotNet.Attributes; using Datadog.Trace; using Datadog.Trace.ClrProfiler.AutoInstrumentation.Http.HttpClient.HttpClientHandler; -using Datadog.Trace.ClrProfiler.Emit; -using Datadog.Trace.ClrProfiler.Integrations; using Datadog.Trace.Configuration; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; @@ -26,10 +23,7 @@ public class AspNetCoreBenchmark static AspNetCoreBenchmark() { - var settings = new TracerSettings - { - StartupDiagnosticLogEnabled = false, - }; + var settings = new TracerSettings { StartupDiagnosticLogEnabled = false }; Tracer.Instance = new Tracer(settings, null, new DummyAgentWriter(), null, null, null); @@ -41,11 +35,8 @@ static AspNetCoreBenchmark() Datadog.Trace.ClrProfiler.Instrumentation.Initialize(); - HomeController.Initialize(); - var bench = new AspNetCoreBenchmark(); bench.SendRequest(); - bench.CallTargetSendRequest(); } [Benchmark] @@ -54,12 +45,6 @@ public string SendRequest() return Client.GetStringAsync("/Home").GetAwaiter().GetResult(); } - [Benchmark] - public string CallTargetSendRequest() - { - return Client.GetStringAsync("/CallTargetHome").GetAwaiter().GetResult(); - } - private class Startup { public void ConfigureServices(IServiceCollection services) @@ -84,64 +69,13 @@ public void Configure(IApplicationBuilder builder) /// Simple controller used for the aspnetcore benchmark /// public class HomeController : Controller - { - private static readonly HttpRequestMessage HttpRequest = new HttpRequestMessage { RequestUri = new Uri("http://datadoghq.com") }; - private static readonly HttpMessageHandler Handler = new CustomHttpClientHandler(); - private static readonly object BoxedCancellationToken = new CancellationToken(); - private static int _mdToken; - private static IntPtr _guidPtr; - - internal static void Initialize() - { - var methodInfo = typeof(HttpMessageHandler).GetMethod("SendAsync", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); - - _mdToken = methodInfo.MetadataToken; - var guid = typeof(HttpMessageHandler).Module.ModuleVersionId; - - _guidPtr = Marshal.AllocHGlobal(Marshal.SizeOf(guid)); - - Marshal.StructureToPtr(guid, _guidPtr, false); - } - - public async Task Index() - { - var task = (Task)HttpMessageHandlerIntegration.HttpMessageHandler_SendAsync( - Handler, - HttpRequest, - BoxedCancellationToken, - (int)OpCodeValue.Callvirt, - _mdToken, - (long)_guidPtr); - - await task; - - return "OK"; - } - - internal class CustomHttpClientHandler : HttpClientHandler - { - private static readonly Task CachedResult = Task.FromResult(new HttpResponseMessage()); - - internal static HttpClientHandler Create() => new HttpClientHandler(); - - protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) - { - return CachedResult; - } - } - } - - /// - /// Simple controller used for the calltarget aspnetcore benchmark - /// - public class CallTargetHomeController : Controller { private static readonly HttpRequestMessage HttpRequest = new HttpRequestMessage { RequestUri = new Uri("http://datadoghq.com") }; private static readonly Task CachedResult = Task.FromResult(new HttpResponseMessage()); - + public unsafe string Index() { - CallTarget.Run> + CallTarget.Run> (this, HttpRequest, CancellationToken.None, &GetResult).GetAwaiter().GetResult(); return "OK"; @@ -150,7 +84,6 @@ public unsafe string Index() } } } - #else using System.Threading.Tasks; diff --git a/test/benchmarks/Benchmarks.Trace/DbCommandBenchmark.cs b/test/benchmarks/Benchmarks.Trace/DbCommandBenchmark.cs index b68eae9b86..629e4a3eef 100644 --- a/test/benchmarks/Benchmarks.Trace/DbCommandBenchmark.cs +++ b/test/benchmarks/Benchmarks.Trace/DbCommandBenchmark.cs @@ -1,11 +1,8 @@ using System; using System.Data; -using System.Runtime.InteropServices; using BenchmarkDotNet.Attributes; using Datadog.Trace; using Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet; -using Datadog.Trace.ClrProfiler.Emit; -using Datadog.Trace.ClrProfiler.Integrations.AdoNet; using Datadog.Trace.Configuration; namespace Benchmarks.Trace @@ -13,9 +10,6 @@ namespace Benchmarks.Trace [MemoryDiagnoser] public class DbCommandBenchmark { - private static readonly int MdToken; - private static readonly IntPtr GuidPtr; - private static readonly IDbCommand DbCommand = new CustomDbCommand(); private static readonly CustomDbCommand CustomCommand = new CustomDbCommand(); static DbCommandBenchmark() @@ -27,28 +21,12 @@ static DbCommandBenchmark() Tracer.Instance = new Tracer(settings, null, new DummyAgentWriter(), null, null, null); - var methodInfo = typeof(IDbCommand).GetMethod("ExecuteNonQuery", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); - - MdToken = methodInfo.MetadataToken; - var guid = typeof(IDbCommand).Module.ModuleVersionId; - - GuidPtr = Marshal.AllocHGlobal(Marshal.SizeOf(guid)); - - Marshal.StructureToPtr(guid, GuidPtr, false); - var bench = new DbCommandBenchmark(); bench.ExecuteNonQuery(); - bench.CallTargetExecuteNonQuery(); - } - - [Benchmark] - public int ExecuteNonQuery() - { - return IDbCommandIntegration.ExecuteNonQuery(DbCommand, (int)OpCodeValue.Callvirt, MdToken, (long)GuidPtr); } [Benchmark] - public unsafe int CallTargetExecuteNonQuery() + public unsafe int ExecuteNonQuery() { return CallTarget.Run(CustomCommand, &InternalExecuteNonQuery); diff --git a/test/benchmarks/Benchmarks.Trace/ElasticsearchBenchmark.cs b/test/benchmarks/Benchmarks.Trace/ElasticsearchBenchmark.cs index 9de7dd41c0..04d882fd0a 100644 --- a/test/benchmarks/Benchmarks.Trace/ElasticsearchBenchmark.cs +++ b/test/benchmarks/Benchmarks.Trace/ElasticsearchBenchmark.cs @@ -1,12 +1,9 @@ using System; -using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; using BenchmarkDotNet.Attributes; using Datadog.Trace; using Datadog.Trace.ClrProfiler.AutoInstrumentation.Elasticsearch.V6; -using Datadog.Trace.ClrProfiler.Emit; -using Datadog.Trace.ClrProfiler.Integrations; using Datadog.Trace.Configuration; using Elasticsearch.Net; @@ -15,10 +12,7 @@ namespace Benchmarks.Trace [MemoryDiagnoser] public class ElasticsearchBenchmark { - private static readonly int MdToken; - private static readonly IntPtr GuidPtr; private static readonly RequestPipeline Pipeline = new RequestPipeline(); - private static readonly object PipelineObject = new RequestPipeline(); private static readonly RequestData Data = new RequestData { Method = HttpMethod.POST, @@ -35,49 +29,13 @@ static ElasticsearchBenchmark() Tracer.Instance = new Tracer(settings, null, new DummyAgentWriter(), null, null, null); - var methodInfo = typeof(RequestPipeline).GetMethod("CallElasticsearchAsync", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); - - MdToken = methodInfo.MetadataToken; - var guid = typeof(RequestPipeline).Module.ModuleVersionId; - - GuidPtr = Marshal.AllocHGlobal(Marshal.SizeOf(guid)); - - Marshal.StructureToPtr(guid, GuidPtr, false); - var bench = new ElasticsearchBenchmark(); bench.CallElasticsearch(); bench.CallElasticsearchAsync(); - bench.CallTargetCallElasticsearch(); - bench.CallTargetCallElasticsearchAsync(); - } - - [Benchmark] - public object CallElasticsearch() - { - return ElasticsearchNet6Integration.CallElasticsearch( - PipelineObject, - Data, - (int)OpCodeValue.Callvirt, - MdToken, - (long)GuidPtr); - } - - [Benchmark] - public int CallElasticsearchAsync() - { - var task = (Task)ElasticsearchNet6Integration.CallElasticsearchAsync( - PipelineObject, - Data, - CancellationToken.None, - (int)OpCodeValue.Callvirt, - MdToken, - (long)GuidPtr); - - return task.GetAwaiter().GetResult(); } [Benchmark] - public unsafe object CallTargetCallElasticsearch() + public unsafe object CallElasticsearch() { return CallTarget.Run(Pipeline, Data, &GetData); @@ -86,7 +44,7 @@ public unsafe object CallTargetCallElasticsearch() [Benchmark] - public unsafe int CallTargetCallElasticsearchAsync() + public unsafe int CallElasticsearchAsync() { return CallTarget.Run> (Pipeline, Data, CancellationToken.None, &GetData).GetAwaiter().GetResult(); diff --git a/test/benchmarks/Benchmarks.Trace/GraphQLBenchmark.cs b/test/benchmarks/Benchmarks.Trace/GraphQLBenchmark.cs index db9f6ca46c..05dd02b3d0 100644 --- a/test/benchmarks/Benchmarks.Trace/GraphQLBenchmark.cs +++ b/test/benchmarks/Benchmarks.Trace/GraphQLBenchmark.cs @@ -1,11 +1,7 @@ -using System; using System.Collections.Generic; -using System.Runtime.InteropServices; using System.Threading.Tasks; using BenchmarkDotNet.Attributes; using Datadog.Trace; -using Datadog.Trace.ClrProfiler.Emit; -using Datadog.Trace.ClrProfiler.Integrations; using Datadog.Trace.Configuration; using GraphQL; using GraphQL.Execution; @@ -16,8 +12,6 @@ namespace Benchmarks.Trace public class GraphQLBenchmark { private static readonly Task Result = Task.FromResult(new ExecutionResult { Value = 42 }); - private static readonly int MdToken; - private static readonly IntPtr GuidPtr; private static readonly GraphQLClient Client = new GraphQLClient(); private static readonly ExecutionContext Context = new ExecutionContext(); @@ -30,29 +24,11 @@ static GraphQLBenchmark() Tracer.Instance = new Tracer(settings, null, new DummyAgentWriter(), null, null, null); - var methodInfo = typeof(GraphQLClient).GetMethod("ExecuteAsync", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); - - MdToken = methodInfo.MetadataToken; - var guid = typeof(GraphQLClient).Module.ModuleVersionId; - - GuidPtr = Marshal.AllocHGlobal(Marshal.SizeOf(guid)); - - Marshal.StructureToPtr(guid, GuidPtr, false); - new GraphQLBenchmark().ExecuteAsync(); - - } - - [Benchmark] - public int ExecuteAsync() - { - var task = (Task)GraphQLIntegration.ExecuteAsync(Client, Context, (int)OpCodeValue.Callvirt, MdToken, (long)GuidPtr); - - return task.GetAwaiter().GetResult().Value; } [Benchmark] - public unsafe int CallTargetExecuteAsync() + public unsafe int ExecuteAsync() { var task = CallTarget.Run>( Client, diff --git a/test/benchmarks/Benchmarks.Trace/HttpClientBenchmark.cs b/test/benchmarks/Benchmarks.Trace/HttpClientBenchmark.cs index 7a381bf185..f593094ee0 100644 --- a/test/benchmarks/Benchmarks.Trace/HttpClientBenchmark.cs +++ b/test/benchmarks/Benchmarks.Trace/HttpClientBenchmark.cs @@ -1,13 +1,10 @@ using System; using System.Net.Http; -using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; using BenchmarkDotNet.Attributes; using Datadog.Trace; using Datadog.Trace.ClrProfiler.AutoInstrumentation.Http.HttpClient.HttpClientHandler; -using Datadog.Trace.ClrProfiler.Emit; -using Datadog.Trace.ClrProfiler.Integrations; using Datadog.Trace.Configuration; namespace Benchmarks.Trace @@ -16,11 +13,6 @@ namespace Benchmarks.Trace public class HttpClientBenchmark { private static readonly HttpRequestMessage HttpRequest = new HttpRequestMessage { RequestUri = new Uri("http://datadoghq.com") }; - private static readonly HttpMessageHandler Handler = new CustomHttpClientHandler(); - - private static readonly object BoxedCancellationToken = new CancellationToken(); - private static readonly int MdToken; - private static readonly IntPtr GuidPtr; private static readonly Task CachedResult = Task.FromResult(new HttpResponseMessage()); @@ -33,49 +25,12 @@ static HttpClientBenchmark() Tracer.Instance = new Tracer(settings, null, new DummyAgentWriter(), null, null, null); - var methodInfo = typeof(HttpMessageHandler).GetMethod("SendAsync", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); - - MdToken = methodInfo.MetadataToken; - var guid = typeof(HttpMessageHandler).Module.ModuleVersionId; - - GuidPtr = Marshal.AllocHGlobal(Marshal.SizeOf(guid)); - - Marshal.StructureToPtr(guid, GuidPtr, false); - var bench = new HttpClientBenchmark(); bench.SendAsync(); - bench.CallTargetSendAsync(); - } - - internal class CustomHttpClientHandler : HttpClientHandler - { - private static readonly Task CachedResult = Task.FromResult(new HttpResponseMessage()); - - internal static HttpClientHandler Create() => new HttpClientHandler(); - - protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) - { - return CachedResult; - } - } - - [Benchmark] - public string SendAsync() - { - var task = (Task)HttpMessageHandlerIntegration.HttpMessageHandler_SendAsync( - Handler, - HttpRequest, - BoxedCancellationToken, - (int)OpCodeValue.Callvirt, - MdToken, - (long)GuidPtr); - - task.GetAwaiter().GetResult(); - return "OK"; } [Benchmark] - public unsafe string CallTargetSendAsync() + public unsafe string SendAsync() { CallTarget.Run> (this, HttpRequest, CancellationToken.None, &GetResult).GetAwaiter().GetResult(); diff --git a/test/benchmarks/Benchmarks.Trace/RedisBenchmark.cs b/test/benchmarks/Benchmarks.Trace/RedisBenchmark.cs index 3911c5914f..ee552e42b6 100644 --- a/test/benchmarks/Benchmarks.Trace/RedisBenchmark.cs +++ b/test/benchmarks/Benchmarks.Trace/RedisBenchmark.cs @@ -1,12 +1,9 @@ using System; using System.Linq; -using System.Runtime.InteropServices; using System.Text; using BenchmarkDotNet.Attributes; using Datadog.Trace; using Datadog.Trace.ClrProfiler.AutoInstrumentation.Redis.ServiceStack; -using Datadog.Trace.ClrProfiler.Emit; -using Datadog.Trace.ClrProfiler.Integrations; using Datadog.Trace.Configuration; using ServiceStack.Redis; @@ -15,9 +12,6 @@ namespace Benchmarks.Trace [MemoryDiagnoser] public class RedisBenchmark { - private static readonly int MdToken; - private static readonly IntPtr GuidPtr; - private static readonly object ClientObject = new RedisNativeClient(); private static readonly RedisNativeClient Client = new RedisNativeClient(); private static readonly Func Fn = () => 42; private static readonly Action> CompletePipelineFn = _ => { }; @@ -32,38 +26,13 @@ static RedisBenchmark() Tracer.Instance = new Tracer(settings, null, new DummyAgentWriter(), null, null, null); - var methodInfo = typeof(RedisNativeClient).GetMethod("SendReceive", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); - - MdToken = methodInfo.MetadataToken; - var guid = typeof(RedisNativeClient).Module.ModuleVersionId; - - GuidPtr = Marshal.AllocHGlobal(Marshal.SizeOf(guid)); - - Marshal.StructureToPtr(guid, GuidPtr, false); - RawCommands = new[] {"Command", "arg1", "arg2"} .Select(Encoding.UTF8.GetBytes) .ToArray(); - - // new RedisBenchmark().ExecuteNonQuery(); - } - - [Benchmark] - public int SendReceive() - { - return ServiceStackRedisIntegration.SendReceive( - ClientObject, - RawCommands, - Fn, - CompletePipelineFn, - true, - (int)OpCodeValue.Callvirt, - MdToken, - (long)GuidPtr); } [Benchmark] - public unsafe int CallTargetSendReceive() + public unsafe int SendReceive() { return CallTarget.Run, Action>, bool, int> (Client, RawCommands, Fn, CompletePipelineFn, true, &SendReceive); diff --git a/test/test-applications/aspnet/Samples.WebForms/Samples.WebForms.csproj b/test/test-applications/aspnet/Samples.WebForms/Samples.WebForms.csproj index 9b9f5212b4..6f74eb8fab 100644 --- a/test/test-applications/aspnet/Samples.WebForms/Samples.WebForms.csproj +++ b/test/test-applications/aspnet/Samples.WebForms/Samples.WebForms.csproj @@ -45,6 +45,44 @@ prompt 4 + + true + bin\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + + + true + bin\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + + + true + bin\ + DEBUG;TRACE + full + x86 + prompt + MinimumRecommendedRules.ruleset + + + true + bin\ + TRACE + true + pdbonly + x86 + prompt + MinimumRecommendedRules.ruleset + ..\..\..\..\packages\Elasticsearch.Net.6.1.0\lib\net45\Elasticsearch.Net.dll diff --git a/test/test-applications/integrations/Samples.Kafka/Consumer.cs b/test/test-applications/integrations/Samples.Kafka/Consumer.cs index b3464132c4..b1d835414e 100644 --- a/test/test-applications/integrations/Samples.Kafka/Consumer.cs +++ b/test/test-applications/integrations/Samples.Kafka/Consumer.cs @@ -24,34 +24,48 @@ private Consumer(ConsumerConfig config, string topic, string consumerName) } - public void Consume(int retries, int timeoutMilliSeconds) + public bool Consume(int retries, int timeoutMilliSeconds) { try { for (int i = 0; i < retries; i++) { - // will block until a message is available - var consumeResult = _consumer.Consume(timeoutMilliSeconds); - if (consumeResult is null) + try { - Console.WriteLine($"{_consumerName}: Null consume result"); - continue; - } + // will block until a message is available + // on 1.5.3 this will throw if the topic doesn't exist + var consumeResult = _consumer.Consume(timeoutMilliSeconds); + if (consumeResult is null) + { + Console.WriteLine($"{_consumerName}: Null consume result"); + return true; + } - if (consumeResult.IsPartitionEOF) - { - Console.WriteLine($"{_consumerName}: Reached EOF"); + if (consumeResult.IsPartitionEOF) + { + Console.WriteLine($"{_consumerName}: Reached EOF"); + return true; + } + else + { + HandleMessage(consumeResult); + return true; + } } - else + catch (ConsumeException ex) { - HandleMessage(consumeResult); + Console.WriteLine($"Consume Exception in manual consume: {ex}"); } + + Task.Delay(500); } } catch (TaskCanceledException) { Console.WriteLine($"{_consumerName}: Cancellation requested, exiting."); } + + return false; } public void Consume(CancellationToken cancellationToken = default) diff --git a/test/test-applications/integrations/Samples.Kafka/Program.cs b/test/test-applications/integrations/Samples.Kafka/Program.cs index 11c1bd9399..33aba4201f 100644 --- a/test/test-applications/integrations/Samples.Kafka/Program.cs +++ b/test/test-applications/integrations/Samples.Kafka/Program.cs @@ -19,17 +19,37 @@ static async Task Main(string[] args) await TopicHelpers.TryDeleteTopic(topic, config); - await TopicHelpers.TryCreateTopic( - topic, - numPartitions: 3, - replicationFactor: 1, - config); + await ConsumeAgainstNonExistentTopic(topic, config); await ConsumeAndProduceMessages(topic, config); Console.WriteLine($"Shut down complete"); } + private static async Task ConsumeAgainstNonExistentTopic(string topic, ClientConfig config) + { + using var consumer = Consumer.Create(enableAutoCommit: true, topic, consumerName: "FailingConsumer 1"); + + Console.WriteLine($"Manually consuming non-existent topic..."); + + // On Kafka.Confluent 1.5.3 this will throw, so success will be false + // That creates an exception Span + // On other versions, this _won't_ throw, and _won't_ create a span + var success = consumer.Consume(retries: 1, timeoutMilliSeconds: 300); + Console.WriteLine($"Manual consume complete, success {success}"); + + // Create the topic and try again + await TopicHelpers.TryCreateTopic(topic, numPartitions: 3, replicationFactor: 1, config); + + Console.WriteLine($"Manually consuming topic..."); + + // manually try and consume. Should _not_ generate any spans, as nothing to consume + // but on 1.5.3 this may generate some error spans + success = consumer.Consume(retries: 5, timeoutMilliSeconds: 300); + + Console.WriteLine($"Manual consume finished, success {success}"); + } + private static async Task ConsumeAndProduceMessages(string topic, ClientConfig config) { var commitPeriod = 3; @@ -39,12 +59,13 @@ private static async Task ConsumeAndProduceMessages(string topic, ClientConfig c using var consumer1 = Consumer.Create(enableAutoCommit: true, topic, consumerName: "AutoCommitConsumer1"); using var consumer2 = Consumer.Create(enableAutoCommit: false, topic, consumerName: "ManualCommitConsumer2"); - // manually try and consume. Should _not_ generate any spans, as nothing to consume - consumer1.Consume(retries: 3, timeoutMilliSeconds: 300); + Console.WriteLine("Starting consumers..."); var consumeTask1 = Task.Run(() => consumer1.Consume(cts.Token)); var consumeTask2 = Task.Run(() => consumer2.ConsumeWithExplicitCommit(commitEveryXMessages: commitPeriod, cts.Token)); + Console.WriteLine($"Producing messages"); + var messagesProduced = await ProduceMessages(topic, config); // Wait for all messages to be consumed diff --git a/test/test-applications/integrations/Samples.Kafka/TopicHelpers.cs b/test/test-applications/integrations/Samples.Kafka/TopicHelpers.cs index 378691cece..eae44da1bd 100644 --- a/test/test-applications/integrations/Samples.Kafka/TopicHelpers.cs +++ b/test/test-applications/integrations/Samples.Kafka/TopicHelpers.cs @@ -32,6 +32,8 @@ await adminClient.CreateTopicsAsync(new List { ReplicationFactor = replicationFactor } }); + + Console.WriteLine($"Topic created"); return true; } catch (CreateTopicsException e) diff --git a/test/test-applications/integrations/Samples.RuntimeMetrics/Program.cs b/test/test-applications/integrations/Samples.RuntimeMetrics/Program.cs index 54a643d7b8..5ca7cb4692 100644 --- a/test/test-applications/integrations/Samples.RuntimeMetrics/Program.cs +++ b/test/test-applications/integrations/Samples.RuntimeMetrics/Program.cs @@ -6,17 +6,21 @@ namespace Samples.RuntimeMetrics { internal static class Program { + private static readonly object SyncRoot = new object(); + private static void Main() { // Force the tracer to be loaded _ = WebRequest.CreateHttp("http://localhost/"); - new Thread(ThrowExceptions) { IsBackground = true }.Start(); + Monitor.Enter(SyncRoot); + + new Thread(GenerateEvents) { IsBackground = true }.Start(); - Thread.Sleep(20000); + Thread.Sleep(30000); } - private static void ThrowExceptions() + private static void GenerateEvents() { while (true) { @@ -28,7 +32,8 @@ private static void ThrowExceptions() { } - Thread.Sleep(500); + // Sleep for 500ms while creating contention + Monitor.TryEnter(SyncRoot, 500); } } } diff --git a/test/test-applications/regression/AspNetMvcCorePerformance/AspNetMvcCorePerformance.csproj b/test/test-applications/regression/AspNetMvcCorePerformance/AspNetMvcCorePerformance.csproj index bae557b576..0464769f30 100644 --- a/test/test-applications/regression/AspNetMvcCorePerformance/AspNetMvcCorePerformance.csproj +++ b/test/test-applications/regression/AspNetMvcCorePerformance/AspNetMvcCorePerformance.csproj @@ -7,6 +7,9 @@ $(Platform) false false + + + false diff --git a/tools/Datadog.Core.Tools/ConcurrencyHelper.cs b/tools/Datadog.Core.Tools/ConcurrencyHelper.cs deleted file mode 100644 index d492110db1..0000000000 --- a/tools/Datadog.Core.Tools/ConcurrencyHelper.cs +++ /dev/null @@ -1,157 +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. -// - -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; - -namespace Datadog.Core.Tools -{ - public class ConcurrencyHelper - { - private readonly ManualResetEventSlim _initiateLevelsEvent = new ManualResetEventSlim(initialState: false); // Start blocked - private readonly ManualResetEventSlim _testFinishedEvent = new ManualResetEventSlim(initialState: false); // Start blocked - private int _remainingLevels; - - public enum HelperStatus - { - AwaitingConfig, - Ready, - Running, - Errored, - Finished - } - - public List Levels { get; set; } = new List(); - - public HelperStatus Status { get; private set; } = HelperStatus.AwaitingConfig; - - public DateTime Started { get; private set; } - - public DateTime Finished { get; private set; } - - public void RegisterLevel(Action action, int iterations, string friendlyName = null, int numberOfRegisters = 1) - { - for (var i = 0; i < numberOfRegisters; i++) - { - Levels.Add(new Level() - { - Status = HelperStatus.Ready, - Action = action, - Name = friendlyName, - Iterations = iterations, - }); - } - - Status = HelperStatus.Ready; - } - - public async Task Start() - { - Status = HelperStatus.Running; - - var registry = new ConcurrentQueue(); - - Started = DateTime.Now; - - var workers = - Levels - .Select(level => new Thread( - thread => - { - Interlocked.Increment(ref _remainingLevels); - _initiateLevelsEvent.Wait(); - level.Started = DateTime.Now; - level.Status = HelperStatus.Running; - - try - { - for (var i = 0; i < level.Iterations; i++) - { - try - { - level.Action(); - } - catch (Exception ex) - { - level.Exceptions.Add(ex); - } - } - } - finally - { - level.Finished = DateTime.Now; - level.Status = HelperStatus.Finished; - Interlocked.Decrement(ref _remainingLevels); - - if (_remainingLevels == 0) - { - // The run is finished - _testFinishedEvent.Set(); - } - } - })); - - foreach (var worker in workers) - { - registry.Enqueue(worker); - worker.Start(); - } - - // Run everything - _initiateLevelsEvent.Set(); - - // Wait for everything to finish - _testFinishedEvent.Wait(); - - Finished = DateTime.Now; - Status = HelperStatus.Finished; - - // Pause for the next run if this class is reused - _initiateLevelsEvent.Reset(); - - await Task.FromResult(0); - } - - public IReadOnlyDictionary GetExceptionSummary() - { - return Levels.SelectMany(l => l.Exceptions).GroupBy(ex => ex.Message).ToDictionary(group => group.Key, group => group.Count()); - } - - public double GetTotalRuntime() - { - return Levels.Sum(l => l.TotalMilliseconds); - } - - public double GetAverageActionRuntime() - { - return Levels.Average(l => l.AverageCallMilliseconds); - } - - public class Level - { - public string Name { get; set; } - - public Action Action { get; set; } - - public int Iterations { get; set; } - - public ConcurrentBag Exceptions { get; set; } = new ConcurrentBag(); - - public DateTime Started { get; set; } - - public DateTime Finished { get; set; } - - public double TotalMilliseconds => (Finished - Started).TotalMilliseconds; - - public double AverageCallMilliseconds => TotalMilliseconds / Iterations; - - public HelperStatus Status { get; set; } - } - } -} diff --git a/tools/Datadog.Core.Tools/EnvironmentTools.cs b/tools/Datadog.Core.Tools/EnvironmentTools.cs index 840859f5b4..d8bff274db 100644 --- a/tools/Datadog.Core.Tools/EnvironmentTools.cs +++ b/tools/Datadog.Core.Tools/EnvironmentTools.cs @@ -6,9 +6,7 @@ using System; using System.IO; using System.Linq; -using System.Reflection; using System.Runtime.InteropServices; -using System.Runtime.Versioning; namespace Datadog.Core.Tools { @@ -58,13 +56,6 @@ public static string GetSolutionDirectory() return _solutionDirectory; } - public static string GetTracerVersion() - { - // ReSharper disable once ConditionIsAlwaysTrueOrFalse - // ReSharper disable once UnreachableCode - return $"{TracerVersion.Major}.{TracerVersion.Minor}.{TracerVersion.Patch}{(TracerVersion.IsPreRelease ? "-prerelease" : string.Empty)}"; - } - public static string GetOS() { return IsWindows() ? "win" : @@ -91,43 +82,5 @@ public static string GetBuildConfiguration() return "Release"; #endif } - - public static bool IsConfiguredToProfile(Type anchorType) - { - var anchorAssembly = Assembly.GetAssembly(anchorType); - var targetFramework = anchorAssembly.GetCustomAttribute(); - - var parts = targetFramework.FrameworkName.Split(','); - var runtime = parts[0]; - var isCoreClr = runtime.Equals(CoreFramework); - - var environmentVariables = Environment.GetEnvironmentVariables(); - - var prefix = "COR"; - - if (isCoreClr) - { - prefix = "CORECLR"; - } - - if ((string)environmentVariables[$"{prefix}_ENABLE_PROFILING"] != "1") - { - return false; - } - - if ((string)environmentVariables[$"{prefix}_PROFILER"] != ProfilerClsId) - { - return false; - } - - var profilerPath = (string)environmentVariables[$"{prefix}_PROFILER_PATH"]; - - if (!File.Exists(profilerPath)) - { - return false; - } - - return true; - } } } diff --git a/tools/Datadog.Core.Tools/TracerVersion.cs b/tools/Datadog.Core.Tools/TracerVersion.cs deleted file mode 100644 index c83b74bedc..0000000000 --- a/tools/Datadog.Core.Tools/TracerVersion.cs +++ /dev/null @@ -1,33 +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. -// - -namespace Datadog.Core.Tools -{ - /// - /// The canonical version for the dd-trace-dotnet libraries and tools. - /// - public class TracerVersion - { - /// - /// The major portion of the current version. - /// - public const int Major = 0; - - /// - /// The minor portion of the current version. - /// - public const int Minor = 0; - - /// - /// The patch portion of the current version. - /// - public const int Patch = 1; - - /// - /// Whether the current release is a pre-release - /// - public const bool IsPreRelease = false; - } -} diff --git a/tools/UpdateVendors/Program.cs b/tools/UpdateVendors/Program.cs index 88f139f92c..7108b1d578 100644 --- a/tools/UpdateVendors/Program.cs +++ b/tools/UpdateVendors/Program.cs @@ -9,7 +9,7 @@ using System.IO.Compression; using System.Linq; using System.Net; -using Datadog.Trace.TestHelpers; +using Datadog.Core.Tools; namespace UpdateVendors { @@ -35,7 +35,7 @@ public static void Main() var honeypotProjTemplate = GetHoneyPotProjTemplate(); honeypotProjTemplate = honeypotProjTemplate.Replace("##PACKAGE_REFS##", fakeRefs); - var projLocation = Path.Combine(EnvironmentHelper.GetSolutionDirectory(), "honeypot", "Datadog.Dependabot.Honeypot.csproj"); + var projLocation = Path.Combine(EnvironmentTools.GetSolutionDirectory(), "honeypot", "Datadog.Dependabot.Honeypot.csproj"); File.WriteAllText(projLocation, honeypotProjTemplate); } diff --git a/tools/UpdateVendors/UpdateVendors.csproj b/tools/UpdateVendors/UpdateVendors.csproj index 59727fbf0b..922d8218ad 100644 --- a/tools/UpdateVendors/UpdateVendors.csproj +++ b/tools/UpdateVendors/UpdateVendors.csproj @@ -6,7 +6,7 @@ - +