diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7e6723ea8d..08fb886c80 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -26,9 +26,9 @@ updates: # Update a specific set of packages for unit and integration tests - package-ecosystem: nuget - directories: - - /tests/Agent/IntegrationTests - - / + directories: # not recursive - only the specified directory will be scanned for .csproj or .sln files + - /tests/Agent/IntegrationTests # will pick up container, integration and unbounded test solutions + - / # will pick up FullAgent.sln which contains the unit tests schedule: interval: weekly groups: @@ -44,3 +44,5 @@ updates: - dependency-name: "NUnit*" - dependency-name: "Selenium*" - dependency-name: "xunit*" + - dependency-name: "PublicApiGenerator" + - dependency-name: "Verify.NUnit" diff --git a/.github/workflows/all_solutions.yml b/.github/workflows/all_solutions.yml index 133bcd085c..91b5ffcc09 100644 --- a/.github/workflows/all_solutions.yml +++ b/.github/workflows/all_solutions.yml @@ -71,7 +71,7 @@ jobs: shell: powershell - name: Archive FullAgent Home folders - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: homefolders path: | @@ -115,7 +115,7 @@ jobs: shell: powershell - name: Archive msi _build Artifacts - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: msi-build-folder-artifacts path: ${{ github.workspace }}\src\_build @@ -160,7 +160,7 @@ jobs: shell: powershell - name: Archive Artifacts - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: integrationtests path: | @@ -198,7 +198,7 @@ jobs: shell: powershell - name: Archive Artifacts - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: unboundedintegrationtests path: | @@ -276,7 +276,7 @@ jobs: env: integration_tests_shared_project: ${{ github.workspace }}/tests/Agent/IntegrationTests/Shared - integration_tests_path: ${{ github.workspace }}/tests/Agent/IntegrationTests/IntegrationTests/bin/Release/net462 + integration_tests_path: ${{ github.workspace }}/tests/Agent/IntegrationTests/IntegrationTests/bin/Release/net481 # Make this variable true to enable extra data-gathering and logging to help troubleshoot test failures, at the cost of additional time and resources enhanced_logging: false NR_DOTNET_TEST_SAVE_WORKING_DIRECTORY: 1 @@ -327,9 +327,24 @@ jobs: name: integrationtests # Should not need a path because the integration test artifacts are archived with the full directory structure - - name: Install dependencies + - name: Install HostableWebCore Feature + if: | # only install for the required namespaces + matrix.namespace == 'AgentFeatures' || matrix.namespace == 'AgentLogs' || matrix.namespace == 'AgentMetrics' || matrix.namespace == 'BasicInstrumentation' || + matrix.namespace == 'CatInbound' || matrix.namespace == 'CatOutbound' || matrix.namespace == 'CodeLevelMetrics' || matrix.namespace == 'CSP' || + matrix.namespace == 'CustomAttributes' || matrix.namespace == 'CustomInstrumentation' || matrix.namespace == 'DataTransmission' || + matrix.namespace == 'DistributedTracing' || matrix.namespace == 'Errors' || matrix.namespace == 'HttpClientInstrumentation' || + matrix.namespace == 'Rejit.NetFramework' || matrix.namespace == 'RequestHandling' || matrix.namespace == 'RequestHeadersCapture.AspNet' || + matrix.namespace == 'RequestHeadersCapture.AspNetCore' || matrix.namespace == 'RequestHeadersCapture.EnvironmentVariables' || + matrix.namespace == 'RequestHeadersCapture.WCF' || matrix.namespace == 'WCF.Client.IIS.ASPDisabled' || + matrix.namespace == 'WCF.Client.IIS.ASPEnabled' || matrix.namespace == 'WCF.Service.IIS.ASPDisabled' || + matrix.namespace == 'WCF.Service.IIS.ASPEnabled' run: | Enable-WindowsOptionalFeature -Online -FeatureName IIS-HostableWebCore + shell: powershell + + - name: Install aiohttp + if: matrix.namespace == 'DistributedTracing' + run: | pip install aiohttp shell: powershell @@ -371,7 +386,7 @@ jobs: - name: Archive integration test results on failure if: ${{ failure() }} - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: integration-test-results-${{ matrix.namespace }} path: | @@ -406,7 +421,7 @@ jobs: env: integration_tests_shared_project: ${{ github.workspace }}/tests/Agent/IntegrationTests/Shared - unbounded_tests_path: ${{ github.workspace }}/tests/Agent/IntegrationTests/UnboundedIntegrationTests/bin/Release/net462 + unbounded_tests_path: ${{ github.workspace }}/tests/Agent/IntegrationTests/UnboundedIntegrationTests/bin/Release/net481 NR_DOTNET_TEST_SAVE_WORKING_DIRECTORY: 1 # Make this variable true to enable extra data-gathering and logging to help troubleshoot test failures, at the cost of additional time and resources enhanced_logging: false @@ -443,23 +458,28 @@ jobs: New-ItemProperty -Path $registryPath -Name "Enabled" -Value "0" -PropertyType DWORD -Force shell: powershell - - name: Install dependencies + - name: Install HostableWebCore Feature + if: | # only install for the required namespaces + matrix.namespace == 'Couchbase' || matrix.namespace == 'MongoDB' || matrix.namespace == 'MsSql' || matrix.namespace == 'Oracle' run: | - Write-Host "Installing HostableWebCore Feature" Enable-WindowsOptionalFeature -Online -FeatureName IIS-HostableWebCore - - if ("${{ matrix.namespace }}" -eq "Msmq") { - Write-Host "Installing Msmq Features" - Enable-WindowsOptionalFeature -Online -FeatureName MSMQ-Server -All - Enable-WindowsOptionalFeature -Online -FeatureName MSMQ-HTTP -All - Enable-WindowsOptionalFeature -Online -FeatureName MSMQ-Triggers -All - } + shell: powershell - if ("${{ matrix.namespace }}" -eq "MsSql") { - Write-Host "Installing MSSQL CLI" - msiexec /i "${{ github.workspace }}\build\Tools\sqlncli.msi" IACCEPTSQLNCLILICENSETERMS=YES /quiet /qn /norestart - Start-Sleep 20 # Need to wait for install to finish -- takes only a few seconds, but we need to be sure. - } + - name: Install MSMQ dependencies + if: matrix.namespace == 'Msmq' + run: | + Write-Host "Installing Msmq Features" + Enable-WindowsOptionalFeature -Online -FeatureName MSMQ-Server -All + Enable-WindowsOptionalFeature -Online -FeatureName MSMQ-HTTP -All + Enable-WindowsOptionalFeature -Online -FeatureName MSMQ-Triggers -All + shell: powershell + + - name: Install MsSql dependencies + if: matrix.namespace == 'MsSql' + run: | + Write-Host "Installing MSSQL CLI" + msiexec /i "${{ github.workspace }}\build\Tools\sqlncli.msi" IACCEPTSQLNCLILICENSETERMS=YES /quiet /qn /norestart + Start-Sleep 20 # Need to wait for install to finish -- takes only a few seconds, but we need to be sure. shell: powershell - name: Set up secrets @@ -503,7 +523,7 @@ jobs: - name: Archive unbounded test results on failure if: ${{ failure() }} - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: unbounded-test-working-directory-${{ matrix.namespace }} path: | @@ -519,7 +539,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit @@ -573,7 +593,7 @@ jobs: shell: bash - name: Archive RPM Package Artifacts - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: rpm-build-artifacts path: ${{ github.workspace }}/src/_build/CoreArtifacts @@ -586,7 +606,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit @@ -626,7 +646,7 @@ jobs: shell: bash - name: Archive Debian Package Artifacts - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: debian-build-artifacts path: ${{ github.workspace }}/src/_build/CoreArtifacts @@ -681,7 +701,7 @@ jobs: shell: powershell - name: Archive Deploy Artifacts - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: deploy-artifacts path: | @@ -697,7 +717,7 @@ jobs: if: always() steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit diff --git a/.github/workflows/assignproj.yml b/.github/workflows/assignproj.yml index 19473cdcb3..f9a09c5f5b 100644 --- a/.github/workflows/assignproj.yml +++ b/.github/workflows/assignproj.yml @@ -16,7 +16,7 @@ jobs: name: Assign to One Project steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit diff --git a/.github/workflows/build_profiler.yml b/.github/workflows/build_profiler.yml index 7633f4bde6..2d799a9ba2 100644 --- a/.github/workflows/build_profiler.yml +++ b/.github/workflows/build_profiler.yml @@ -116,14 +116,14 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} - name: Archive Build Artifacts - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: profiler-windows path: ${{ github.workspace }}\src\Agent\_profilerBuild\**\* if-no-files-found: error - name: Archive Code Coverage Artifacts - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: profiler-code-coverage path: | @@ -176,7 +176,7 @@ jobs: shell: bash - name: Archive Artifacts - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: profiler-amd64 path: ${{ github.workspace }}/src/Agent/_profilerBuild/ @@ -194,7 +194,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit @@ -248,7 +248,7 @@ jobs: shell: bash - name: Archive Artifacts - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: profiler-arm64 path: ${{ github.workspace }}/src/Agent/_profilerBuild/ @@ -348,7 +348,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit @@ -371,7 +371,7 @@ jobs: rm -f ${{ github.workspace }}/src/Agent/NewRelic/Home/_temp - name: Create Pull Request - uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0 + uses: peter-evans/create-pull-request@d121e62763d8cc35b5fb1710e887d6e69a52d3a4 # v7.0.2 with: commit-message: "chore: Update Profiler NuGet Package Reference to v${{ needs.package-and-deploy.outputs.package_version }}." title: "chore: Update Profiler NuGet Package Reference to v${{ needs.package-and-deploy.outputs.package_version }}" diff --git a/.github/workflows/check_modified_files.yml b/.github/workflows/check_modified_files.yml index e263ed4c34..0aa100743e 100644 --- a/.github/workflows/check_modified_files.yml +++ b/.github/workflows/check_modified_files.yml @@ -22,7 +22,7 @@ jobs: non-workflow-files-changed: ${{ steps.filter.outputs.non-workflow-files-changed }} steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 725b5c7230..982b73ada4 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -49,7 +49,7 @@ jobs: fetch-depth: 0 - name: Initialize CodeQL - uses: github/codeql-action/init@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 + uses: github/codeql-action/init@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 with: languages: csharp @@ -59,7 +59,7 @@ jobs: shell: powershell - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 + uses: github/codeql-action/analyze@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 with: category: "/language:csharp" @@ -84,7 +84,7 @@ jobs: fetch-depth: 0 - name: Initialize CodeQL - uses: github/codeql-action/init@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 + uses: github/codeql-action/init@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 with: languages: c-cpp @@ -100,6 +100,6 @@ jobs: shell: powershell - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 + uses: github/codeql-action/analyze@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 with: category: "/language:c-cpp" diff --git a/.github/workflows/deploy_agent.yml b/.github/workflows/deploy_agent.yml index 49956933fe..15fb3b3b86 100644 --- a/.github/workflows/deploy_agent.yml +++ b/.github/workflows/deploy_agent.yml @@ -61,7 +61,7 @@ jobs: workflow_run_id: ${{ steps.step2.outputs.workflow_run_id }} steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit @@ -155,7 +155,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit @@ -170,7 +170,7 @@ jobs: repository: ${{ github.repository }} - name: Upload Deploy Artifacts Locally - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: deploy-artifacts path: ${{ github.workspace }} @@ -350,7 +350,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/markdowncheck.yml b/.github/workflows/markdowncheck.yml index 9350b05a37..dd0fdd77a2 100644 --- a/.github/workflows/markdowncheck.yml +++ b/.github/workflows/markdowncheck.yml @@ -22,7 +22,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit # Leave it audit mode diff --git a/.github/workflows/multiverse_run.yml b/.github/workflows/multiverse_run.yml index ab1392e909..3263fdf064 100644 --- a/.github/workflows/multiverse_run.yml +++ b/.github/workflows/multiverse_run.yml @@ -36,7 +36,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit @@ -73,7 +73,7 @@ jobs: shell: bash - name: Upload MVS - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: mvs path: | @@ -102,7 +102,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit @@ -131,7 +131,7 @@ jobs: shell: bash - name: Deploy 🚀 - uses: JamesIves/github-pages-deploy-action@94f3c658273cf92fb48ef99e5fbc02bd2dc642b2 # 4.6.3 + uses: JamesIves/github-pages-deploy-action@920cbb300dcd3f0568dbc42700c61e2fd9e6139c # 4.6.4 with: branch: gh-pages folder: . diff --git a/.github/workflows/nuget_slack_notifications.yml b/.github/workflows/nuget_slack_notifications.yml index eebf9f2c65..49929b5cf7 100644 --- a/.github/workflows/nuget_slack_notifications.yml +++ b/.github/workflows/nuget_slack_notifications.yml @@ -34,7 +34,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit # Leave it audit mode diff --git a/.github/workflows/post_deploy_agent.yml b/.github/workflows/post_deploy_agent.yml index 334d0e402d..4abf4e784a 100644 --- a/.github/workflows/post_deploy_agent.yml +++ b/.github/workflows/post_deploy_agent.yml @@ -45,7 +45,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: false egress-policy: audit @@ -78,7 +78,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit @@ -119,7 +119,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit @@ -143,7 +143,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit @@ -171,7 +171,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit diff --git a/.github/workflows/publish_release_notes.yml b/.github/workflows/publish_release_notes.yml index 6fb69c6533..e03f349f0b 100644 --- a/.github/workflows/publish_release_notes.yml +++ b/.github/workflows/publish_release_notes.yml @@ -35,7 +35,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 4088e55c7b..a8a539d393 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit diff --git a/.github/workflows/repolinter.yml b/.github/workflows/repolinter.yml index a4c86a13f2..b468815046 100644 --- a/.github/workflows/repolinter.yml +++ b/.github/workflows/repolinter.yml @@ -31,7 +31,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit diff --git a/.github/workflows/run_integration_tests.yml b/.github/workflows/run_integration_tests.yml index 66927cf4a9..f84d2a8283 100644 --- a/.github/workflows/run_integration_tests.yml +++ b/.github/workflows/run_integration_tests.yml @@ -44,7 +44,7 @@ jobs: unbounded-tests-matrix: ${{ steps.configure_unbounded_tests_matrix.outputs.matrix }} steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit @@ -190,7 +190,7 @@ jobs: - name: Archive integration test results on failure if: ${{ failure() }} - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: integration-test-working-directory-${{ matrix.namespace }} path: | @@ -313,7 +313,7 @@ jobs: - name: Archive unbounded test results on failure if: ${{ failure() }} - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: unbounded-test-working-directory-${{ matrix.namespace }} path: | diff --git a/.github/workflows/run_linux_container_tests.yml b/.github/workflows/run_linux_container_tests.yml index 24467fade0..d34db1dcc3 100644 --- a/.github/workflows/run_linux_container_tests.yml +++ b/.github/workflows/run_linux_container_tests.yml @@ -42,7 +42,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/run_unit_tests.yml b/.github/workflows/run_unit_tests.yml index 005c214958..48633b694f 100644 --- a/.github/workflows/run_unit_tests.yml +++ b/.github/workflows/run_unit_tests.yml @@ -61,7 +61,7 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} - name: Upload coverage report artifact - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: UnitTestResults # Artifact name path: ${{ env.test_results_path }} # Directory containing files to upload diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index a22a9043c1..87b072e130 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit @@ -65,7 +65,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: SARIF file path: results.sarif @@ -73,6 +73,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 + uses: github/codeql-action/upload-sarif@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 with: sarif_file: results.sarif diff --git a/.github/workflows/scripts/nugetSlackNotifications/nugetSlackNotifications.csproj b/.github/workflows/scripts/nugetSlackNotifications/nugetSlackNotifications.csproj index 616e8787bd..f3d1ba2e99 100644 --- a/.github/workflows/scripts/nugetSlackNotifications/nugetSlackNotifications.csproj +++ b/.github/workflows/scripts/nugetSlackNotifications/nugetSlackNotifications.csproj @@ -6,7 +6,7 @@ - + diff --git a/.github/workflows/set_community_label.yml b/.github/workflows/set_community_label.yml index dd1f6991e5..217686be11 100644 --- a/.github/workflows/set_community_label.yml +++ b/.github/workflows/set_community_label.yml @@ -15,7 +15,7 @@ jobs: issues: write steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: audit diff --git a/.github/workflows/siteextension_release.yml b/.github/workflows/siteextension_release.yml index 9b414a2e70..44e208480c 100644 --- a/.github/workflows/siteextension_release.yml +++ b/.github/workflows/siteextension_release.yml @@ -55,7 +55,7 @@ jobs: shell: powershell - name: Archive Deploy Artifacts - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: deploy-artifacts path: | diff --git a/FullAgent.sln b/FullAgent.sln index cf4ba9b901..9878ae537e 100644 --- a/FullAgent.sln +++ b/FullAgent.sln @@ -217,6 +217,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AwsSdk", "src\Agent\NewReli EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureFunction", "src\Agent\NewRelic\Agent\Extensions\Providers\Wrapper\AzureFunction\AzureFunction.csproj", "{338AD83A-ED68-438A-8FB1-E93A3AE87EA8}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PublicApiChangeTests", "tests\Agent\UnitTests\PublicApiChangeTests\PublicApiChangeTests.csproj", "{A8F6EFEA-1C31-4461-A7B4-25C30D954EE2}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -455,6 +457,10 @@ Global {338AD83A-ED68-438A-8FB1-E93A3AE87EA8}.Debug|Any CPU.Build.0 = Debug|Any CPU {338AD83A-ED68-438A-8FB1-E93A3AE87EA8}.Release|Any CPU.ActiveCfg = Release|Any CPU {338AD83A-ED68-438A-8FB1-E93A3AE87EA8}.Release|Any CPU.Build.0 = Release|Any CPU + {A8F6EFEA-1C31-4461-A7B4-25C30D954EE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A8F6EFEA-1C31-4461-A7B4-25C30D954EE2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A8F6EFEA-1C31-4461-A7B4-25C30D954EE2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A8F6EFEA-1C31-4461-A7B4-25C30D954EE2}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -524,6 +530,7 @@ Global {DC3E4801-A54A-42A4-AC45-DBD2F0CAE438} = {E5B988C0-5D19-407E-8210-71FFB90C579A} {37262C22-6A3A-4AD7-AB78-3853D2B2931D} = {5E86E10A-C38F-48CB-ADE9-67B22BB2F50A} {338AD83A-ED68-438A-8FB1-E93A3AE87EA8} = {5E86E10A-C38F-48CB-ADE9-67B22BB2F50A} + {A8F6EFEA-1C31-4461-A7B4-25C30D954EE2} = {E5B988C0-5D19-407E-8210-71FFB90C579A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D8B98070-6B8E-403C-A07F-A3F2E4A3A3D0} diff --git a/build/NugetValidator/NugetValidator.csproj b/build/NugetValidator/NugetValidator.csproj index 0a48809d5a..0c6db9842f 100644 --- a/build/NugetValidator/NugetValidator.csproj +++ b/build/NugetValidator/NugetValidator.csproj @@ -15,7 +15,7 @@ - + diff --git a/build/NugetVersionDeprecator/NugetVersionDeprecator.csproj b/build/NugetVersionDeprecator/NugetVersionDeprecator.csproj index 64bfe4781f..f5625c8e4d 100644 --- a/build/NugetVersionDeprecator/NugetVersionDeprecator.csproj +++ b/build/NugetVersionDeprecator/NugetVersionDeprecator.csproj @@ -22,8 +22,8 @@ - - + + diff --git a/build/ReleaseNotesBuilder/ReleaseNotesBuilder.csproj b/build/ReleaseNotesBuilder/ReleaseNotesBuilder.csproj index 73b99f6d15..204b008643 100644 --- a/build/ReleaseNotesBuilder/ReleaseNotesBuilder.csproj +++ b/build/ReleaseNotesBuilder/ReleaseNotesBuilder.csproj @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git a/build/S3Validator/S3Validator.csproj b/build/S3Validator/S3Validator.csproj index f8d90ae114..b01b3752c5 100644 --- a/build/S3Validator/S3Validator.csproj +++ b/build/S3Validator/S3Validator.csproj @@ -19,7 +19,7 @@ - + diff --git a/release-please/.release-please-manifest.json b/release-please/.release-please-manifest.json index a9a6e730cc..9ef1ddb2d2 100644 --- a/release-please/.release-please-manifest.json +++ b/release-please/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "10.29.0" + ".": "10.30.0" } \ No newline at end of file diff --git a/src/Agent/CHANGELOG.md b/src/Agent/CHANGELOG.md index a97b9729f3..ce56c2ac10 100644 --- a/src/Agent/CHANGELOG.md +++ b/src/Agent/CHANGELOG.md @@ -4,6 +4,19 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [10.30.0](https://github.com/newrelic/newrelic-dotnet-agent/compare/v10.29.0...v10.30.0) (2024-09-11) + + +### New features + +* Oracle instrumentation now supports latest version ([#2721](https://github.com/newrelic/newrelic-dotnet-agent/issues/2721)) ([50cb663](https://github.com/newrelic/newrelic-dotnet-agent/commit/50cb663957ccfcfd55d104a7f54755100bfa46cc)) +* Preview support for instrumentation of "isolated" model Azure Functions. Instrumentation is disabled by default. Please reach out to your account team if you would like to try this new feature. ([d8a79e5](https://github.com/newrelic/newrelic-dotnet-agent/commit/d8a79e51683225e9b574efc8d1b154b2a4b9eadc)) + + +### Fixes + +* Preserve custom query name even if statement can't be parsed. ([#2708](https://github.com/newrelic/newrelic-dotnet-agent/issues/2708)) ([#2709](https://github.com/newrelic/newrelic-dotnet-agent/issues/2709)) ([3ab0cb4](https://github.com/newrelic/newrelic-dotnet-agent/commit/3ab0cb4f36d3f5fa07d4003b930917e533c7cba2)) + ## [10.29.0](https://github.com/newrelic/newrelic-dotnet-agent/compare/v10.28.0...v10.29.0) (2024-08-20) diff --git a/src/Agent/NewRelic/Agent/Core/Core.csproj b/src/Agent/NewRelic/Agent/Core/Core.csproj index 1130062399..30e3f4dea7 100644 --- a/src/Agent/NewRelic/Agent/Core/Core.csproj +++ b/src/Agent/NewRelic/Agent/Core/Core.csproj @@ -38,7 +38,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Agent/NewRelic/Agent/Core/DataTransport/ConnectionManager.cs b/src/Agent/NewRelic/Agent/Core/DataTransport/ConnectionManager.cs index d1cffe1fa6..137533ac87 100644 --- a/src/Agent/NewRelic/Agent/Core/DataTransport/ConnectionManager.cs +++ b/src/Agent/NewRelic/Agent/Core/DataTransport/ConnectionManager.cs @@ -10,7 +10,9 @@ using System.IO; using System.Linq; using System.Net; +#if !NETFRAMEWORK using System.Net.Http; +#endif using System.Net.Sockets; namespace NewRelic.Agent.Core.DataTransport @@ -107,12 +109,14 @@ private void Connect() { HandleHttpErrorResponse(ex); } +#if !NETFRAMEWORK // Only available in System.Net.Http // Occurs when the agent is unable to connect to APM. The request failed due to an underlying // issue such as network connectivity, DNS failure, server certificate validation or timeout. catch (HttpRequestException) { ScheduleRestart(); } +#endif // Occurs when the agent connects to APM but the connection gets aborted by the collector catch (SocketException) { @@ -168,7 +172,7 @@ public T SendDataRequest(string method, params object[] data) } } - #endregion Synchronized methods +#endregion Synchronized methods #region Helper methods diff --git a/src/Agent/NewRelic/Agent/Extensions/Providers/Wrapper/AzureFunction/Instrumentation.xml b/src/Agent/NewRelic/Agent/Extensions/Providers/Wrapper/AzureFunction/Instrumentation.xml index 9716842fa3..ddc787d2e4 100644 --- a/src/Agent/NewRelic/Agent/Extensions/Providers/Wrapper/AzureFunction/Instrumentation.xml +++ b/src/Agent/NewRelic/Agent/Extensions/Providers/Wrapper/AzureFunction/Instrumentation.xml @@ -18,7 +18,7 @@ SPDX-License-Identifier: Apache-2.0 - + diff --git a/src/Agent/NewRelic/Agent/Extensions/Providers/Wrapper/AzureFunction/InvokeFunctionAsyncWrapper.cs b/src/Agent/NewRelic/Agent/Extensions/Providers/Wrapper/AzureFunction/InvokeFunctionAsyncWrapper.cs index d693132792..cb766d91b0 100644 --- a/src/Agent/NewRelic/Agent/Extensions/Providers/Wrapper/AzureFunction/InvokeFunctionAsyncWrapper.cs +++ b/src/Agent/NewRelic/Agent/Extensions/Providers/Wrapper/AzureFunction/InvokeFunctionAsyncWrapper.cs @@ -72,7 +72,7 @@ public AfterWrappedMethodDelegate BeforeWrappedMethod(InstrumentedMethodCall ins if (IsColdStart) // only report this attribute if it's a cold start { - transaction.AddFaasAttribute("faas.coldStart", "true"); + transaction.AddFaasAttribute("faas.coldStart", true); } transaction.AddFaasAttribute("cloud.resource_id", agent.Configuration.AzureFunctionResourceIdWithFunctionName(functionDetails.FunctionName)); @@ -126,7 +126,7 @@ void InvokeFunctionAsyncResponse(Task responseTask) { agent.Logger.Debug($"Unexpected Azure Function invocationResult.Value type '{resultTypeName ?? "(null)"}' - unable to set http response status code."); } - } + } } catch (Exception ex) @@ -313,4 +313,5 @@ public bool IsValid() public string RequestMethod { get; private set; } public string RequestPath { get; private set; } } + } diff --git a/tests/Agent/Benchmarking/Benchmarking/Benchmarking.csproj b/tests/Agent/Benchmarking/Benchmarking/Benchmarking.csproj index b8e9e5b4ac..3c0538702a 100644 --- a/tests/Agent/Benchmarking/Benchmarking/Benchmarking.csproj +++ b/tests/Agent/Benchmarking/Benchmarking/Benchmarking.csproj @@ -1,6 +1,6 @@ - net462 + net481 Benchmarking Benchmarking diff --git a/tests/Agent/Benchmarking/BenchmarkingTests/BenchmarkingTests.csproj b/tests/Agent/Benchmarking/BenchmarkingTests/BenchmarkingTests.csproj index 8a507e7c50..cf78b2923c 100644 --- a/tests/Agent/Benchmarking/BenchmarkingTests/BenchmarkingTests.csproj +++ b/tests/Agent/Benchmarking/BenchmarkingTests/BenchmarkingTests.csproj @@ -1,6 +1,6 @@ - net462 + net481 BenchmarkingTests NewRelic.Agent.Core.BenchmarkingTests Full @@ -13,11 +13,11 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/tests/Agent/Benchmarking/ConcurrentBenchmarking/ConcurrentBenchmarking.csproj b/tests/Agent/Benchmarking/ConcurrentBenchmarking/ConcurrentBenchmarking.csproj index 60b4973495..32abd50a1a 100644 --- a/tests/Agent/Benchmarking/ConcurrentBenchmarking/ConcurrentBenchmarking.csproj +++ b/tests/Agent/Benchmarking/ConcurrentBenchmarking/ConcurrentBenchmarking.csproj @@ -1,6 +1,6 @@ - net462 + net481 ConcurrentBenchmarking ConcurrentBenchmarking diff --git a/tests/Agent/IntegrationTests/ContainerApplications/AwsSdkTestApp/AwsSdkTestApp.csproj b/tests/Agent/IntegrationTests/ContainerApplications/AwsSdkTestApp/AwsSdkTestApp.csproj index 63966f6cad..c3d95f261e 100644 --- a/tests/Agent/IntegrationTests/ContainerApplications/AwsSdkTestApp/AwsSdkTestApp.csproj +++ b/tests/Agent/IntegrationTests/ContainerApplications/AwsSdkTestApp/AwsSdkTestApp.csproj @@ -14,7 +14,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/tests/Agent/IntegrationTests/ContainerApplications/KafkaTestApp/KafkaTestApp.csproj b/tests/Agent/IntegrationTests/ContainerApplications/KafkaTestApp/KafkaTestApp.csproj index 5705deb168..8de6a4e504 100644 --- a/tests/Agent/IntegrationTests/ContainerApplications/KafkaTestApp/KafkaTestApp.csproj +++ b/tests/Agent/IntegrationTests/ContainerApplications/KafkaTestApp/KafkaTestApp.csproj @@ -10,7 +10,7 @@ - + diff --git a/tests/Agent/IntegrationTests/IntegrationTests/AzureFunction/AzureFunctionHttpTriggerTests.cs b/tests/Agent/IntegrationTests/IntegrationTests/AzureFunction/AzureFunctionHttpTriggerTests.cs index 1423dd5f03..0ef72db77f 100644 --- a/tests/Agent/IntegrationTests/IntegrationTests/AzureFunction/AzureFunctionHttpTriggerTests.cs +++ b/tests/Agent/IntegrationTests/IntegrationTests/AzureFunction/AzureFunctionHttpTriggerTests.cs @@ -73,9 +73,9 @@ public void Test() { "request.uri", "/Unknown"} }; - var transactionTraceExpectedAttributes = new Dictionary() + var transactionTraceExpectedAttributes = new Dictionary() { - { "faas.coldStart", "true"}, + { "faas.coldStart", true}, //new("faas.invocation_id", "test_invocation_id"), This one is a random guid, not something we can specifically look for { "faas.name", "HttpTriggerFunctionUsingAspNetCorePipeline" }, { "faas.trigger", "http" }, diff --git a/tests/Agent/IntegrationTests/IntegrationTests/AzureFunction/AzureFunctionQueueTriggerTests.cs b/tests/Agent/IntegrationTests/IntegrationTests/AzureFunction/AzureFunctionQueueTriggerTests.cs index a0456a9be9..ea3582ee2c 100644 --- a/tests/Agent/IntegrationTests/IntegrationTests/AzureFunction/AzureFunctionQueueTriggerTests.cs +++ b/tests/Agent/IntegrationTests/IntegrationTests/AzureFunction/AzureFunctionQueueTriggerTests.cs @@ -54,9 +54,9 @@ public void Test() "cloud.resource_id" }; - var transactionTraceExpectedAttributes = new Dictionary() + var transactionTraceExpectedAttributes = new Dictionary() { - { "faas.coldStart", "true"}, + { "faas.coldStart", true}, //new("faas.invocation_id", "test_invocation_id"), This one is a random guid, not something we can specifically look for { "faas.name", "QueueTriggerFunction" }, { "faas.trigger", "datasource" }, diff --git a/tests/Agent/IntegrationTests/IntegrationTests/IntegrationTests.csproj b/tests/Agent/IntegrationTests/IntegrationTests/IntegrationTests.csproj index c56635fb50..00850a046d 100644 --- a/tests/Agent/IntegrationTests/IntegrationTests/IntegrationTests.csproj +++ b/tests/Agent/IntegrationTests/IntegrationTests/IntegrationTests.csproj @@ -2,9 +2,9 @@ NewRelic.Agent.IntegrationTests NewRelic.Agent.IntegrationTests - net462;net8.0 + net481;net8.0 - + true @@ -55,12 +55,14 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + + + diff --git a/tests/Agent/IntegrationTests/SharedApplications/Common/MFALatestPackages/MFALatestPackages.csproj b/tests/Agent/IntegrationTests/SharedApplications/Common/MFALatestPackages/MFALatestPackages.csproj index 4030e7399a..06cff0f3de 100644 --- a/tests/Agent/IntegrationTests/SharedApplications/Common/MFALatestPackages/MFALatestPackages.csproj +++ b/tests/Agent/IntegrationTests/SharedApplications/Common/MFALatestPackages/MFALatestPackages.csproj @@ -5,8 +5,8 @@ - - + + @@ -92,8 +92,8 @@ - - + + diff --git a/tests/Agent/IntegrationTests/UnboundedIntegrationTests/UnboundedIntegrationTests.csproj b/tests/Agent/IntegrationTests/UnboundedIntegrationTests/UnboundedIntegrationTests.csproj index 8448342933..97828d7c21 100644 --- a/tests/Agent/IntegrationTests/UnboundedIntegrationTests/UnboundedIntegrationTests.csproj +++ b/tests/Agent/IntegrationTests/UnboundedIntegrationTests/UnboundedIntegrationTests.csproj @@ -2,7 +2,7 @@ NewRelic.Agent.UnboundedIntegrationTests NewRelic.Agent.UnboundedIntegrationTests - net462 + net481 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages diff --git a/tests/Agent/NewRelic.Testing.Assertions/NewRelic.Testing.Assertions.csproj b/tests/Agent/NewRelic.Testing.Assertions/NewRelic.Testing.Assertions.csproj index ae20e7b7c4..1ca4549f2f 100644 --- a/tests/Agent/NewRelic.Testing.Assertions/NewRelic.Testing.Assertions.csproj +++ b/tests/Agent/NewRelic.Testing.Assertions/NewRelic.Testing.Assertions.csproj @@ -1,13 +1,13 @@ - net462;net8.0 + net481;net8.0 all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/tests/Agent/Shared/TestSerializationHelpers.Test/TestSerializationHelpers.Test.csproj b/tests/Agent/Shared/TestSerializationHelpers.Test/TestSerializationHelpers.Test.csproj index 8b023f08e8..536d1c1169 100644 --- a/tests/Agent/Shared/TestSerializationHelpers.Test/TestSerializationHelpers.Test.csproj +++ b/tests/Agent/Shared/TestSerializationHelpers.Test/TestSerializationHelpers.Test.csproj @@ -1,12 +1,12 @@ - net462;net8.0 + net481;net8.0 NewRelic.Agent.Tests.TestSerializationHelpers.Tests - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/tests/Agent/UnitTests/AsyncLocalTests/AsyncLocalTests.csproj b/tests/Agent/UnitTests/AsyncLocalTests/AsyncLocalTests.csproj index cd447eaed3..f81d9fb6a7 100644 --- a/tests/Agent/UnitTests/AsyncLocalTests/AsyncLocalTests.csproj +++ b/tests/Agent/UnitTests/AsyncLocalTests/AsyncLocalTests.csproj @@ -1,6 +1,6 @@ - net462 + net481 NewRelic.Providers.CallStack.AsyncLocalTests NewRelic.Providers.CallStack.AsyncLocalTests Full @@ -12,9 +12,9 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/tests/Agent/UnitTests/CompositeTests/CompositeTests.csproj b/tests/Agent/UnitTests/CompositeTests/CompositeTests.csproj index fee195c3a9..bc8eeddd63 100644 --- a/tests/Agent/UnitTests/CompositeTests/CompositeTests.csproj +++ b/tests/Agent/UnitTests/CompositeTests/CompositeTests.csproj @@ -1,6 +1,6 @@ - net462;net8.0 + net481;net8.0 CompositeTests NewRelic.Agent.Core.CompositeTests Full @@ -11,12 +11,12 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -29,7 +29,7 @@ - + diff --git a/tests/Agent/UnitTests/Core.UnitTest/Core.UnitTest.csproj b/tests/Agent/UnitTests/Core.UnitTest/Core.UnitTest.csproj index a4b1f0696c..5d2b513605 100644 --- a/tests/Agent/UnitTests/Core.UnitTest/Core.UnitTest.csproj +++ b/tests/Agent/UnitTests/Core.UnitTest/Core.UnitTest.csproj @@ -1,6 +1,6 @@ - net462;net8.0 + net481;net8.0 NewRelic.Agent.Core NewRelic.Agent.Core.UnitTest Full @@ -11,11 +11,11 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -28,12 +28,13 @@ - + + @@ -46,7 +47,7 @@ - + diff --git a/tests/Agent/UnitTests/Core.UnitTest/DataTransport/ConnectionManagerTests.cs b/tests/Agent/UnitTests/Core.UnitTest/DataTransport/ConnectionManagerTests.cs index 368a1b3cbe..289e6028da 100644 --- a/tests/Agent/UnitTests/Core.UnitTest/DataTransport/ConnectionManagerTests.cs +++ b/tests/Agent/UnitTests/Core.UnitTest/DataTransport/ConnectionManagerTests.cs @@ -81,14 +81,15 @@ public void AttemptAutoStart_SchedulesConnectAsynchronously_IfAutoStartIsOnAndSy } } - [Test] [TestCase("ForceRestartException")] [TestCase("HttpException")] - [TestCase("HttpRequestException")] [TestCase("SocketException")] [TestCase("IOException")] [TestCase("OperationCanceledException")] +#if !NETFRAMEWORK + [TestCase("HttpRequestException")] +#endif public void AttemptAutoStart_SchedulesReconnect_IfCertainExceptionOccurs(string execeptionType) { Exception ex = null; diff --git a/tests/Agent/UnitTests/NewRelic.Agent.Extensions.Tests/NewRelic.Agent.Extensions.Tests.csproj b/tests/Agent/UnitTests/NewRelic.Agent.Extensions.Tests/NewRelic.Agent.Extensions.Tests.csproj index 5dfbe5c599..3d02556477 100644 --- a/tests/Agent/UnitTests/NewRelic.Agent.Extensions.Tests/NewRelic.Agent.Extensions.Tests.csproj +++ b/tests/Agent/UnitTests/NewRelic.Agent.Extensions.Tests/NewRelic.Agent.Extensions.Tests.csproj @@ -1,6 +1,6 @@ - net462;net8.0 + net481;net8.0 Agent.Extensions.Tests NewRelic.Agent.Extensions.Tests Full @@ -11,9 +11,9 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -25,7 +25,7 @@ - + diff --git a/tests/Agent/UnitTests/NewRelic.Agent.TestUtilities/NewRelic.Agent.TestUtilities.csproj b/tests/Agent/UnitTests/NewRelic.Agent.TestUtilities/NewRelic.Agent.TestUtilities.csproj index 6edf6a58c9..0b4fbc431a 100644 --- a/tests/Agent/UnitTests/NewRelic.Agent.TestUtilities/NewRelic.Agent.TestUtilities.csproj +++ b/tests/Agent/UnitTests/NewRelic.Agent.TestUtilities/NewRelic.Agent.TestUtilities.csproj @@ -1,6 +1,6 @@ - net462;net8.0 + net481;net8.0 NewRelic.Agent.TestUtilities NewRelic.Agent.TestUtilities @@ -9,7 +9,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -21,7 +21,7 @@ - + diff --git a/tests/Agent/UnitTests/NewRelic.Testing.Assertions.UnitTests/NewRelic.Testing.Assertions.UnitTests.csproj b/tests/Agent/UnitTests/NewRelic.Testing.Assertions.UnitTests/NewRelic.Testing.Assertions.UnitTests.csproj index 4db34d48a0..f1c48888ce 100644 --- a/tests/Agent/UnitTests/NewRelic.Testing.Assertions.UnitTests/NewRelic.Testing.Assertions.UnitTests.csproj +++ b/tests/Agent/UnitTests/NewRelic.Testing.Assertions.UnitTests/NewRelic.Testing.Assertions.UnitTests.csproj @@ -2,7 +2,7 @@ x86 {A6AE0190-AEAB-4B3A-B671-95C2D5123BF9} - net462 + net481 {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} NewRelic.Testing.Assertions.UnitTests NewRelic.Testing.Assertions.UnitTests @@ -22,8 +22,8 @@ all - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/tests/Agent/UnitTests/PublicApiChangeTests/PublicApiChangeTests.csproj b/tests/Agent/UnitTests/PublicApiChangeTests/PublicApiChangeTests.csproj new file mode 100644 index 0000000000..2903b8dc92 --- /dev/null +++ b/tests/Agent/UnitTests/PublicApiChangeTests/PublicApiChangeTests.csproj @@ -0,0 +1,42 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + diff --git a/tests/Agent/UnitTests/PublicApiChangeTests/PublicApiTest.PublicApiHasNotChanged.verified.txt b/tests/Agent/UnitTests/PublicApiChangeTests/PublicApiTest.PublicApiHasNotChanged.verified.txt new file mode 100644 index 0000000000..73f56203c0 --- /dev/null +++ b/tests/Agent/UnitTests/PublicApiChangeTests/PublicApiTest.PublicApiHasNotChanged.verified.txt @@ -0,0 +1,100 @@ +[assembly: System.Reflection.AssemblyMetadata("RepositoryUrl", "https://github.com/newrelic/dotnet-agent")] +[assembly: System.Runtime.Versioning.TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName=".NET Standard 2.0")] +namespace NewRelic.Api.Agent +{ + public static class Constants + { + public const string DistributedTracePayloadKey = "Newrelic"; + } + public interface IAgent + { + NewRelic.Api.Agent.ISpan CurrentSpan { get; } + NewRelic.Api.Agent.ITransaction CurrentTransaction { get; } + NewRelic.Api.Agent.ITraceMetadata TraceMetadata { get; } + System.Collections.Generic.Dictionary GetLinkingMetadata(); + } + public interface IDistributedTracePayload + { + string HttpSafe(); + bool IsEmpty(); + string Text(); + } + public interface ISpan + { + NewRelic.Api.Agent.ISpan AddCustomAttribute(string key, object value); + NewRelic.Api.Agent.ISpan SetName(string name); + } + public interface ITraceMetadata + { + bool IsSampled { get; } + string SpanId { get; } + string TraceId { get; } + } + public interface ITransaction + { + NewRelic.Api.Agent.ISpan CurrentSpan { get; } + void AcceptDistributedTraceHeaders(T carrier, System.Func> getter, NewRelic.Api.Agent.TransportType transportType); + NewRelic.Api.Agent.ITransaction AddCustomAttribute(string key, object value); + void InsertDistributedTraceHeaders(T carrier, System.Action setter); + NewRelic.Api.Agent.SegmentWrapper? RecordDatastoreSegment(string vendor, string model, string operation, string? commandText = null, string? host = null, string? portPathOrID = null, string? databaseName = null); + void SetUserId(string userid); + } + public static class NewRelic + { + public static void DisableBrowserMonitoring(bool overrideManual = false) { } + public static NewRelic.Api.Agent.IAgent GetAgent() { } + public static string GetBrowserTimingHeader() { } + public static string GetBrowserTimingHeader(string nonce) { } + public static System.Collections.Generic.IEnumerable> GetRequestMetadata() { } + public static System.Collections.Generic.IEnumerable> GetResponseMetadata() { } + public static void IgnoreApdex() { } + public static void IgnoreTransaction() { } + public static void IncrementCounter(string name) { } + public static void NoticeError(System.Exception exception) { } + public static void NoticeError(System.Exception exception, System.Collections.Generic.IDictionary? parameters) { } + public static void NoticeError(System.Exception exception, System.Collections.Generic.IDictionary? parameters) { } + public static void NoticeError(string message, System.Collections.Generic.IDictionary? parameters) { } + public static void NoticeError(string message, System.Collections.Generic.IDictionary? parameters) { } + public static void NoticeError(string message, System.Collections.Generic.IDictionary? parameters, bool isExpected) { } + public static void NoticeError(string message, System.Collections.Generic.IDictionary? parameters, bool isExpected) { } + public static void RecordCustomEvent(string eventType, System.Collections.Generic.IEnumerable> attributes) { } + public static void RecordLlmFeedbackEvent(string traceId, object rating, string category = "", string message = "", System.Collections.Generic.IDictionary? metadata = null) { } + public static void RecordMetric(string name, float value) { } + public static void RecordResponseTimeMetric(string name, long millis) { } + public static void SetApplicationName(string applicationName, string? applicationName2 = null, string? applicationName3 = null) { } + public static void SetErrorGroupCallback(System.Func, string> callback) { } + public static void SetLlmTokenCountingCallback(System.Func callback) { } + public static void SetTransactionName(string? category, string name) { } + public static void SetTransactionUri(System.Uri uri) { } + public static void SetUserParameters(string? userName, string? accountName, string? productName) { } + public static void StartAgent() { } + } + public class SegmentWrapper : System.IDisposable + { + public void Dispose() { } + public static NewRelic.Api.Agent.SegmentWrapper GetDatastoreWrapper([System.Runtime.CompilerServices.Dynamic] object transaction, string vendor, string model, string operation, string? commandText, string? host, string? portPathOrID, string? databaseName) { } + } + [System.AttributeUsage(System.AttributeTargets.Method)] + public class TraceAttribute : System.Attribute + { + public TraceAttribute() { } + } + [System.AttributeUsage(System.AttributeTargets.Method)] + public class TransactionAttribute : NewRelic.Api.Agent.TraceAttribute + { + public TransactionAttribute() { } + public bool Web { get; set; } + } + public enum TransportType + { + Unknown = 0, + HTTP = 1, + HTTPS = 2, + Kafka = 3, + JMS = 4, + IronMQ = 5, + AMQP = 6, + Queue = 7, + Other = 8, + } +} \ No newline at end of file diff --git a/tests/Agent/UnitTests/PublicApiChangeTests/PublicApiTest.cs b/tests/Agent/UnitTests/PublicApiChangeTests/PublicApiTest.cs new file mode 100644 index 0000000000..4f315ebb69 --- /dev/null +++ b/tests/Agent/UnitTests/PublicApiChangeTests/PublicApiTest.cs @@ -0,0 +1,28 @@ +// Copyright 2020 New Relic, Inc. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +using System.Reflection; +using DiffEngine; +using PublicApiGenerator; + +namespace PublicApiChangeTests; + +[TestFixture] +public class PublicApiTest +{ + [Test] + public Task PublicApiHasNotChanged() + { + if (BuildServerDetector.Detected) // don't launch the diff engine if the test fails on a build server + DiffRunner.Disabled = true; + + // Get the assembly for the library we want to document + Assembly assembly = typeof(NewRelic.Api.Agent.IAgent).Assembly; + + // Retrieve the public API for all types in the assembly + string publicApi = assembly.GeneratePublicApi(); + + // Run a snapshot test on the returned string + return Verify(publicApi); + } +}