diff --git a/.circleci/config.yml b/.circleci/config.yml index 0ed83abeef7..0951d85e174 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -107,7 +107,7 @@ test_containers: image: memcached:1.5-alpine - &memcached_port 11211 - &container_testagent - image: ghcr.io/datadog/dd-apm-test-agent/ddapm-test-agent:v1.12.0 + image: ghcr.io/datadog/dd-apm-test-agent/ddapm-test-agent:v1.18.0 name: testagent environment: - LOG_LEVEL=DEBUG @@ -159,6 +159,14 @@ step_rubocop: &step_rubocop # The workaround is to use `cpu.shares / 1024`: # https://discuss.circleci.com/t/environment-variable-set-to-the-number-of-available-cpus/32670/4 command: PARALLEL_PROCESSOR_COUNT=$((`cat /sys/fs/cgroup/cpu/cpu.shares` / 1024)) bundle exec rake rubocop +step_standardrb: &step_standardrb + run: + name: Delint with Standardrb + # There's no straightforward way to get the number of available processors & CPU threads in CircleCI. + # Currently it always return 18 physical processors and 36 threads, regardless of executor size. + # The workaround is to use `cpu.shares / 1024`: + # https://discuss.circleci.com/t/environment-variable-set-to-the-number-of-available-cpus/32670/4 + command: PARALLEL_PROCESSOR_COUNT=$((`cat /sys/fs/cgroup/cpu/cpu.shares` / 1024)) bundle exec rake standard step_appraisal_install: &step_appraisal_install run: name: Install Appraisal gems @@ -377,6 +385,7 @@ orbs: keys: - bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-{{ checksum ".circleci/images/primary/binary_version" }}-<>-{{ checksum "lib/datadog/version.rb" }}-{{ .Branch }}-{{ checksum ".circleci/bundle_checksum" }} - *step_rubocop + - *step_standardrb coverage: <<: *test_job_default steps: diff --git a/.env b/.env index dc43c08aab8..b2bbebe9be8 100644 --- a/.env +++ b/.env @@ -33,7 +33,7 @@ TEST_POSTGRES_HOST=127.0.0.1 TEST_POSTGRES_PASSWORD=postgres TEST_POSTGRES_PORT=5432 TEST_POSTGRES_USER=postgres -TEST_PRESTO_HOST=presto +TEST_PRESTO_HOST=127.0.0.1 TEST_PRESTO_PORT=8080 TEST_REDIS_HOST=127.0.0.1 TEST_REDIS_PORT=6379 diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 2a54e1e5fcb..30f1ed4da90 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -3,3 +3,24 @@ 372f7c20696e30f319cf20622758f7f0ef585875 # First multi-line argument has line break 6e8ae58d320d6a48f6c1d21db894d414bdf140b2 +# Profiling migration to standardrb +ac6824dce79859fd8de45f3f0f6bf7a8924af9ec +41851227391f27f0c1d4dd3c1c9ee6b472eca868 +1e575a7fe35f7ce3d4527d794c7a21e70b5da75b +6af85872506508d1530bdd2fb27c1f892b399a71 +871794d8316e41f81a34137115f23f1f4e968436 +5a05ec39937d3166efaf735aec3dcb57fd864cb3 +4acf1e5cbf88c51b69025357ce3effc0a3ea3d9c +dd4db277900ffe6826f5bd45f475340f7978fc38 +b16a6530321eae11f8456981892c36f3847026e6 +cc84721645bc75fc76a62bc6228c8b730ed3a30f +74542fc1aab3b58606b91a89e4268d2fbb340a1d +f89961150051276ea21bbca3fa00bda9b3cf4f1d +9e7648e1bcce370ff7cf6aeaa1c32bf9ecacf0a6 +6924556fc9e38c244e2ff3d429d581819f275ee9 +aba860197ce4f708e917e27323884d8efe3692ca +464dd7177b72d6fe2c7f6e1aba0e4a6d3826f0d9 +acee9c7f3d953551cc0f20ef60e5045432bcf7e6 +6e4193c5bf3c2b948c91598c7a70bc34b59872fa +b1481b215d8b1bf33a1d53419d1b95ebd1a70877 +01ec575b25bc68edfea7de2046ce3c43bc3ed4af diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 1e2e6c0a667..3393cef0fef 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -11,6 +11,12 @@ run the test suite, write new integrations, and more. **Motivation:** +**Change log entry** + + **Additional Notes:** @@ -22,4 +28,4 @@ If this change cannot be feasibly tested, please explain why, unless the change does not modify code (e.g. only modifies docs, comments). --> -Unsure? Have a question? Request a review! + diff --git a/.github/dependency_filters.yml b/.github/dependency_filters.yml new file mode 100644 index 00000000000..b3c3aa1b287 --- /dev/null +++ b/.github/dependency_filters.yml @@ -0,0 +1,9 @@ +dependencies: + - Gemfile + - Appraisals + - datadog.gemspec + - tasks/appraisal.rake + - .github/workflows/lock-dependency.yml + - lib/datadog/version.rb + - appraisal/** + - gemfiles/** diff --git a/.github/workflows/add-milestone-to-pull-requests.yml b/.github/workflows/add-milestone-to-pull-requests.yml index 0c7bf93cc21..50731476d0e 100644 --- a/.github/workflows/add-milestone-to-pull-requests.yml +++ b/.github/workflows/add-milestone-to-pull-requests.yml @@ -5,12 +5,16 @@ on: jobs: add_milestone: + permissions: + contents: read + issues: write + pull-requests: write runs-on: ubuntu-latest if: github.event.pull_request.merged == true && github.event.pull_request.milestone == null steps: - name: Checkout code # Checks out the branch that the pull request is merged into - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.base.ref }} diff --git a/.github/workflows/build-gem.yml b/.github/workflows/build-gem.yml index b82986029d7..5beb70f45d3 100644 --- a/.github/workflows/build-gem.yml +++ b/.github/workflows/build-gem.yml @@ -60,7 +60,7 @@ jobs: run: | find pkg - name: Upload artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: 'datadog-gem-${{ matrix.type }}-gha${{ github.run_id }}-g${{ github.sha }}' path: 'pkg/*.gem' @@ -77,7 +77,7 @@ jobs: - build steps: - name: Download artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: 'datadog-gem-${{ matrix.type }}-gha${{ github.run_id }}-g${{ github.sha }}' path: 'pkg' @@ -103,7 +103,7 @@ jobs: if: ${{ inputs.push }} steps: - name: Download artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: 'datadog-gem-${{ matrix.type }}-gha${{ github.run_id }}-g${{ github.sha }}' path: 'pkg' diff --git a/.github/workflows/lib-injection.yml b/.github/workflows/lib-injection.yml deleted file mode 100644 index 2a593f4693c..00000000000 --- a/.github/workflows/lib-injection.yml +++ /dev/null @@ -1,120 +0,0 @@ -name: "Library Injection" -on: - # Build each branch for testing - push: - -jobs: - build-and-publish-test-image: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v2 - - name: Login to Docker - run: docker login -u publisher -p ${{ secrets.GITHUB_TOKEN }} ghcr.io - - name: Docker latest snapshot build - if: github.ref == 'refs/heads/master' - uses: docker/build-push-action@v3 - with: - push: true - tags: ghcr.io/datadog/dd-trace-rb/dd-lib-ruby-init:latest_snapshot - platforms: 'linux/amd64,linux/arm64/v8' - # The build arguments must match what is defined in lib-injection/Dockerfile - build-args: DATADOG_RUBY_GEM_SHA=${{ github.sha }} - context: ./lib-injection - - name: Docker Build - uses: docker/build-push-action@v3 - with: - push: true - tags: ghcr.io/datadog/dd-trace-rb/dd-lib-ruby-init:${{ github.sha }} - platforms: 'linux/amd64,linux/arm64/v8' - # The build arguments must match what is defined in lib-injection/Dockerfile - build-args: DATADOG_RUBY_GEM_SHA=${{ github.sha }} - context: ./lib-injection - test: - needs: - - build-and-publish-test-image - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - - strategy: - matrix: - weblog-variant: - - dd-lib-ruby-init-test-rails - - dd-lib-ruby-init-test-rails-explicit - - dd-lib-ruby-init-test-rails-gemsrb - fail-fast: false - env: - TEST_LIBRARY: ruby - WEBLOG_VARIANT: ${{ matrix.weblog-variant }} - LIB_INIT_IMAGE: ghcr.io/datadog/dd-trace-rb/dd-lib-ruby-init:${{ github.sha }} - LIBRARY_INJECTION_TEST_APP_IMAGE: ghcr.io/datadog/system-tests/${{ matrix.weblog-variant }}:latest - BUILDX_PLATFORMS: linux/amd64,linux/arm64/v8 - steps: - - name: Checkout system tests - uses: actions/checkout@v4 - with: - repository: 'DataDog/system-tests' - - - name: Install runner - uses: ./.github/actions/install_runner - - - name: Run K8s Lib Injection Tests - run: ./run.sh K8S_LIBRARY_INJECTION_BASIC - - - name: Compress logs - id: compress_logs - if: always() - run: tar -czvf artifact.tar.gz $(ls | grep logs) - - - name: Upload artifact - if: always() - uses: actions/upload-artifact@v3 - with: - name: logs_k8s_lib_injection - path: artifact.tar.gz - - test-negative: - runs-on: ubuntu-latest - strategy: - matrix: - variant: - - dd-lib-ruby-init-test-rails-conflict - - dd-lib-ruby-init-test-rails-bundle-deploy - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Checkout system-tests - uses: actions/checkout@v4 - with: - repository: DataDog/system-tests - path: system-tests - - name: Overwrite auto inject script with commit SHA - run: | - sed -i "s~~${{github.sha}}~g" lib-injection/auto_inject.rb - sed -i "s~~~g" lib-injection/auto_inject.rb - - name: Build app - run: | - cp -r system-tests/lib-injection/build/docker/ruby/lib_injection_rails_app system-tests/lib-injection/build/docker/ruby/${{matrix.variant}} - cp system-tests/lib-injection/build/docker/ruby/.dockerignore system-tests/lib-injection/build/docker/ruby/${{matrix.variant}} - docker build -t ${{matrix.variant}} system-tests/lib-injection/build/docker/ruby/${{matrix.variant}} - - name: Run app with injection - run: | - docker run -d \ - --name ${{matrix.variant}} \ - -e RUBYOPT=-r/lib-injection/auto_inject \ - -e DD_TRACE_DEBUG=true \ - -v $(pwd)/lib-injection:/lib-injection \ - -p 18080:18080 \ - ${{matrix.variant}} - - name: Log container to see error message - run: | - sleep 10 - docker logs ${{matrix.variant}} - - name: Send http request to ensure app remains running even with lib injection failure - run: curl -v --retry 10 -f --retry-all-errors --retry-delay 5 -s -o /dev/null http://localhost:18080 diff --git a/.github/workflows/lock-dependency.yml b/.github/workflows/lock-dependency.yml new file mode 100644 index 00000000000..65e0346c1ea --- /dev/null +++ b/.github/workflows/lock-dependency.yml @@ -0,0 +1,129 @@ +name: Lock Dependency + +# TODO: Make this job mandatory +# TODO: Make this on workflow_dispatch + +on: + # Limitation about `paths` types: + # > https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#git-diff-comparisons + push: + branches-ignore: + - master + - release + - '*-stable' + pull_request: + # Run this job when a PR is opened, covering the scenario where branch is ready and pushed before PR is opened. + types: + - opened + + +# TODO: Improve concurrency between push event and pull_request event +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + pr: + name: Pull Request attached + runs-on: ubuntu-latest + outputs: + pr_found: ${{ steps.pr.outputs.pr_found }} + pr_base_ref: ${{ steps.pr.outputs.pr.base.ref }} + steps: + # Limitation with pull_request trigger: https://github.com/8BitJonny/gh-get-current-pr/tree/3.0.0/?tab=readme-ov-file#limitations + - uses: 8BitJonny/gh-get-current-pr@3.0.0 + id: pr + with: + filterOutClosed: true # Don't trigger on commits with closed PRs, including merges into `master`. + + dependency: + name: Depenedency changes + needs: pr + if: ${{ needs.pr.outputs.pr_found == 'true' }} + runs-on: ubuntu-latest + outputs: + changes: ${{ steps.changes.outputs.dependencies }} + steps: + - uses: actions/checkout@v4 + - uses: dorny/paths-filter@v3 + id: changes + with: + # This is the best effort to get the diff comparison. + # The result remains time-sensitive since the `base` is constantly changing and + # the PR cannot be guaranteed to be up-to-date. + # + # Unless enable `Require branches to be up to date before merging` in the repository rule settings + base: ${{ needs.pr.outputs.pr_base_ref }} + filters: .github/dependency_filters.yml + + lock: + runs-on: ubuntu-latest + needs: dependency + if: ${{ needs.dependency.outputs.changes == 'true' }} + strategy: + fail-fast: false + matrix: + engine: + # ADD NEW RUBIES HERE + - name: ruby + version: '3.4' + - name: ruby + version: '3.3' + - name: ruby + version: '3.2' + - name: ruby + version: '3.1' + - name: ruby + version: '3.0' + - name: ruby + version: '2.7' + - name: ruby + version: '2.6' + - name: ruby + version: '2.5' + - name: jruby + version: '9.4' + - name: jruby + version: '9.3' + - name: jruby + version: '9.2' + container: + image: ghcr.io/datadog/images-rb/engines/${{ matrix.engine.name }}:${{ matrix.engine.version }} + env: + BUNDLE_WITHOUT: check + steps: + - uses: actions/checkout@v4 + - run: | + ruby -v + gem -v + bundler -v + - run: bundle install + + # TODO: Migrate away from `appraisal` + - run: bundle exec appraisal generate + - run: bundle exec rake dependency:lock + - uses: actions/upload-artifact@v4 + with: + name: lock-dependency-${{ github.run_id }}-${{ matrix.engine.name }}-${{ matrix.engine.version }} + path: gemfiles/${{ matrix.engine.name }}_${{ matrix.engine.version }}* + retention-days: 1 + + # TODO: Change token to trigger workflow automation + # > New commit by GITHUB_TOKEN does not trigger workflow automation to prevent infinite loop + commit: + name: Commit changes + needs: lock + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.GHA_PAT }} + - uses: actions/download-artifact@v4 + with: + path: gemfiles + pattern: lock-dependency-${{ github.run_id }}-* + merge-multiple: true + - uses: stefanzweifel/git-auto-commit-action@v5 + with: + file_pattern: 'gemfiles/*' + commit_message: "[🤖] Lock Dependency: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml new file mode 100644 index 00000000000..ea38c870b4f --- /dev/null +++ b/.github/workflows/nix.yml @@ -0,0 +1,55 @@ +name: Test Nix + +on: + push: + branches: + - "**" + +jobs: + test: + strategy: + fail-fast: false + matrix: + platform: + - os: darwin + cpu: x86_64 + base: macos-13 # always x86_64-darwin + - os: darwin + cpu: arm64 + base: macos-14 # always arm64-darwin + - os: linux + cpu: x86_64 + base: ubuntu-24.04 # always x86_64-linux-gnu + - os: linux + cpu: aarch64 + base: arm-4core-linux-ubuntu24.04 # always aarch64-linux-gnu + nix: + - 24.05 + + name: Test Nix (${{ matrix.platform.cpu }}-${{ matrix.platform.os }}, ${{ matrix.nix }}) + runs-on: ${{ matrix.platform.base }} + + permissions: + contents: read + id-token: write + + env: + SKIP_SIMPLECOV: 1 + DD_INSTRUMENTATION_TELEMETRY_ENABLED: false + DD_REMOTE_CONFIGURATION_ENABLED: false + + steps: + - name: Check CPU arch + run: | + test "$(uname -m)" = "${{ matrix.platform.cpu }}" + - uses: actions/checkout@v4 + - uses: DeterminateSystems/nix-installer-action@main + - uses: DeterminateSystems/magic-nix-cache-action@main + - name: Print ruby version + run: | + nix develop --command which ruby + nix develop --command ruby --version + - name: Bundle install + run: nix develop --command bundle install + - name: Run spec:main + run: nix develop --command bundle exec rake spec:main diff --git a/.github/workflows/pull-request-labeler.yml b/.github/workflows/pull-request-labeler.yml index 869d0d63323..c4cf689fdec 100644 --- a/.github/workflows/pull-request-labeler.yml +++ b/.github/workflows/pull-request-labeler.yml @@ -9,8 +9,7 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: kachkaev/labeler@d89797c51d07680aec17049cc6790e9d323d9a93 # actions/labeler@v4 + https://github.com/actions/labeler/pull/316 + - uses: actions/labeler@v5 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" configuration-path: .github/labeler.yml - dot: true # From https://github.com/actions/labeler/pull/316 \ No newline at end of file diff --git a/.github/workflows/release-lib-injection.yml b/.github/workflows/release-lib-injection.yml deleted file mode 100644 index 46d7e29c2b6..00000000000 --- a/.github/workflows/release-lib-injection.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: "Release Library Injection" -on: - push: - tags: - - 'v*.*.*' - - '!v*.*.*.*' # Exclude prerelease tags - -jobs: - build-and-publish-release-image: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set version - id: version - run: echo "version=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT - - name: Get version - run: echo "The selected version is ${{ steps.version.outputs.version }}" - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v2 - - name: Login to Docker - run: docker login -u publisher -p ${{ secrets.GITHUB_TOKEN }} ghcr.io - - name: Docker Build - uses: docker/build-push-action@v3 - with: - push: true - tags: ghcr.io/datadog/dd-trace-rb/dd-lib-ruby-init:${{ steps.version.outputs.version }} - platforms: 'linux/amd64,linux/arm64/v8' - # The build arguments must match what is defined in lib-injection/Dockerfile - build-args: DATADOG_RUBY_GEM_VERSION=${{ steps.version.outputs.version }} - context: ./lib-injection diff --git a/.github/workflows/system-tests.yml b/.github/workflows/system-tests.yml index 3fa130f5252..3b9ea847e79 100644 --- a/.github/workflows/system-tests.yml +++ b/.github/workflows/system-tests.yml @@ -12,7 +12,8 @@ env: REGISTRY: ghcr.io REPO: ghcr.io/datadog/dd-trace-rb ST_REF: main - FORCE_TESTS: + FORCE_TESTS: -F tests/appsec/test_asm_standalone.py + FORCE_TESTS_SCENARIO: APPSEC_STANDALONE jobs: build-harness: @@ -27,6 +28,8 @@ jobs: - name: proxy internal: datadog/system-tests:proxy-v1 runs-on: ubuntu-latest + permissions: + packages: write name: Build (${{ matrix.image.name }}) steps: - name: Checkout @@ -34,6 +37,7 @@ jobs: with: repository: 'DataDog/system-tests' ref: ${{ env.ST_REF }} + persist-credentials: false - name: Pull released image run: | if docker pull ${{ env.REPO }}/system-tests/${{ matrix.image.name }}:latest; then @@ -86,9 +90,15 @@ jobs: path: dd-trace-rb app: - rack -# - sinatra14 # DEV-2.0: Uncomment after https://github.com/DataDog/system-tests/pull/1882 is merged + - sinatra14 - sinatra20 - sinatra21 + - sinatra22 + - sinatra30 + - sinatra31 + - sinatra32 + - sinatra40 + - rails42 - rails50 - rails51 - rails52 @@ -96,20 +106,25 @@ jobs: - rails61 - rails70 - rails71 + - graphql23 runs-on: ubuntu-latest name: Build (${{ matrix.app }}) + permissions: + packages: write steps: - name: Checkout uses: actions/checkout@v4 with: repository: 'DataDog/system-tests' ref: ${{ env.ST_REF }} + persist-credentials: false - name: Checkout ${{ matrix.library.repository }} uses: actions/checkout@v4 with: repository: '${{ matrix.library.repository }}' path: 'binaries/${{ matrix.library.path }}' fetch-depth: 2 + persist-credentials: false - name: Pull released image run: | if docker pull ${{ env.REPO }}/system-tests/${{ matrix.library.name }}/${{ matrix.image }}-${{ matrix.app }}:latest; then @@ -163,9 +178,15 @@ jobs: - ruby app: - rack -# - sinatra14 # DEV-2.0: Uncomment after https://github.com/DataDog/system-tests/pull/1882 is merged + - sinatra14 - sinatra20 - sinatra21 + - sinatra22 + - sinatra30 + - sinatra31 + - sinatra32 + - sinatra40 + - rails42 - rails50 - rails51 - rails52 @@ -178,7 +199,14 @@ jobs: - APPSEC_DISABLED - APPSEC_BLOCKING_FULL_DENYLIST - APPSEC_REQUEST_BLOCKING + - APPSEC_STANDALONE include: + - library: ruby + app: rack + scenario: INTEGRATIONS + - library: ruby + app: rack + scenario: CROSSED_TRACING_LIBRARIES - library: ruby app: rack scenario: REMOTE_CONFIG_MOCKED_BACKEND_ASM_DD @@ -236,6 +264,9 @@ jobs: - library: ruby app: rack scenario: TELEMETRY_METRIC_GENERATION_DISABLED + - library: ruby + app: graphql23 + scenario: GRAPHQL_APPSEC runs-on: ubuntu-latest needs: - build-harness @@ -247,6 +278,7 @@ jobs: with: repository: 'DataDog/system-tests' ref: ${{ env.ST_REF }} + persist-credentials: false - name: Pull runner image run: | docker pull ${{ env.REPO }}/system-tests/runner:gha${{ github.run_id }}-g${{ github.sha }} @@ -268,9 +300,11 @@ jobs: docker image list - name: Run scenario run: | - ./run.sh ++docker ${{ matrix.scenario }} ${{ env.FORCE_TESTS }} + ./run.sh ++docker ${{ matrix.scenario }} ${{matrix.scenario == env.FORCE_TESTS_SCENARIO && env.FORCE_TESTS || ''}} env: DD_API_KEY: ${{ secrets.DD_APPSEC_SYSTEM_TESTS_API_KEY }} + SYSTEM_TESTS_AWS_ACCESS_KEY_ID: ${{ secrets.SYSTEM_TESTS_IDM_AWS_ACCESS_KEY_ID }} + SYSTEM_TESTS_AWS_SECRET_ACCESS_KEY: ${{ secrets.SYSTEM_TESTS_IDM_AWS_SECRET_ACCESS_KEY }} - name: Archive logs uses: actions/upload-artifact@v4 if: ${{ always() }} @@ -286,9 +320,15 @@ jobs: - ruby app: - rack -# - sinatra14 # DEV-2.0: Uncomment after https://github.com/DataDog/system-tests/pull/1882 is merged + - sinatra14 - sinatra20 - sinatra21 + - sinatra22 + - sinatra30 + - sinatra31 + - sinatra32 + - sinatra40 + - rails42 - rails50 - rails51 - rails52 @@ -296,8 +336,11 @@ jobs: - rails61 - rails70 - rails71 + - graphql23 runs-on: ubuntu-latest needs: + - build-harness + - build-apps - test if: ${{ always() }} name: Aggregate (${{ matrix.app }}) @@ -311,6 +354,7 @@ jobs: with: repository: 'DataDog/system-tests' ref: ${{ env.ST_REF }} + persist-credentials: false - name: Retrieve logs uses: actions/download-artifact@v4 with: @@ -330,15 +374,22 @@ jobs: - runner - agent - weblog-rack -# - weblog-sinatra14 # DEV-2.0: Uncomment after https://github.com/DataDog/system-tests/pull/1882 is merged + - weblog-sinatra14 - weblog-sinatra20 - weblog-sinatra21 + - weblog-sinatra22 + - weblog-sinatra30 + - weblog-sinatra31 + - weblog-sinatra32 + - weblog-sinatra40 + - weblog-rails42 - weblog-rails50 - weblog-rails51 - weblog-rails52 - weblog-rails60 - weblog-rails61 - weblog-rails70 + - weblog-graphql23 runs-on: ubuntu-latest needs: - test @@ -348,7 +399,7 @@ jobs: - name: Log in to the Container registry run: | echo ${{ secrets.GITHUB_TOKEN }} | docker login ${{ env.REGISTRY }} -u ${{ github.actor }} --password-stdin - - uses: actions/delete-package-versions@v4 + - uses: actions/delete-package-versions@v5 with: package-version-ids: 'gha${{ github.run_id }}-g${{ github.sha }}' package-name: 'system-tests/${{ matrix.image }}' diff --git a/.github/workflows/test-memory-leaks.yaml b/.github/workflows/test-memory-leaks.yaml new file mode 100644 index 00000000000..a80a55da14d --- /dev/null +++ b/.github/workflows/test-memory-leaks.yaml @@ -0,0 +1,36 @@ +name: Test for memory leaks +on: [push] +jobs: + test-memcheck: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.4.0-preview1 # TODO: Use stable version once 3.4 is out + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + bundler: latest + cache-version: v1 # bump this to invalidate cache + - run: sudo apt-get update && (sudo apt-get install -y valgrind || sleep 5 && sudo apt-get install -y valgrind) && valgrind --version + - run: bundle exec rake compile spec:profiling:memcheck + test-asan: + # Temporarily disabled on 2024-09-17 until ruby-asan builds are available again on + # https://github.com/ruby/ruby-dev-builder/releases + if: false + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + # We're using a fork of ruby/setup-ruby because the "asan" tool is built into the clang compiler toolchain, and + # needs Ruby to be built with a special configuration. + # + # The special configuration is not yet available in the upstream `ruby/setup-ruby` github action, so I needed to + # fork it and push a small tweak to make it available. + # + # (The Ruby builds were added in https://github.com/ruby/ruby-dev-builder/pull/10 ). + - uses: datadog/setup-ruby@0c7206d6db81faf999795ceebfac00d164298bd5 + with: + ruby-version: asan + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + bundler: latest + cache-version: v1 # bump this to invalidate cache + - run: env RUBY_FREE_AT_EXIT=1 LSAN_OPTIONS=verbosity=0:log_threads=1:suppressions=`pwd`/suppressions/lsan.supp ASAN_OPTIONS=detect_leaks=1 bundle exec rake spec:profiling:main diff --git a/.github/workflows/test-yjit.yaml b/.github/workflows/test-yjit.yaml index 23b16bacbe9..b9ce09fbda3 100644 --- a/.github/workflows/test-yjit.yaml +++ b/.github/workflows/test-yjit.yaml @@ -11,10 +11,20 @@ jobs: - '3.2' - '3.3' # ADD NEW RUBIES HERE - name: Test (${{ matrix.os }}, ${{ matrix.ruby }}) + rubyopt: + - '--yjit' + - '--yjit --yjit-stats=quiet' + exclude: + # NOTE: `--yjit-stats=quiet` is only present in 3.3+. + # We've had `--yjit-stats` since 3.0, but + # 1) it dumps stat info to stdout, and + # 2) none of our <3.3 tests require the additional stats + - ruby: '3.2' + rubyopt: '--yjit --yjit-stats=quiet' + name: Test YJIT (${{ matrix.os }}, ${{ matrix.ruby }} ${{ matrix.rubyopt }}) runs-on: ${{ matrix.os }} env: - RUBYOPT: "--yjit" + RUBYOPT: ${{ matrix.rubyopt }} SKIP_SIMPLECOV: 1 DD_INSTRUMENTATION_TELEMETRY_ENABLED: false DD_REMOTE_CONFIGURATION_ENABLED: false diff --git a/.github/workflows/update-gemfiles.yml b/.github/workflows/update-gemfiles.yml deleted file mode 100644 index 3085e123083..00000000000 --- a/.github/workflows/update-gemfiles.yml +++ /dev/null @@ -1,80 +0,0 @@ -name: Update Gemfiles - -# This action cannot be skipped altogether because it is a mandatory status check. -# Instead we conditionally skip it at job level, instead of workflow level. -on: - # Execute on `push` and not `pull_request` because `pull_request` - # always compares if the `paths` have changed compared to the PR base. - # This is an issue because it means that all commits to the branch - # will trigger the gemfile update process, which is unnecessary and expensive. - # - # By executing on `push`, GitHub compares `paths` with the parent commit, - # meaning the gemfile update process will only execute on the exact commit - # that changes any of the `paths`. - # - # Because this process is slow and expensive, and we commit the gemfile changes back - # to the branch, we have an additional filter to only execute this action on branches - # attached to a PR. - # - # We could do the inverse: execute this action on `pull_request`, and additionally check - # if `paths` was changed compared to the parent commit, but this proved more complicated. - push - -# Ensure obsolete job is cancelled if another commit is pushed to the same branch. -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - check: - name: Update Gemfiles - runs-on: ubuntu-22.04 - steps: - # Only execute if there's a PR attached to this branch. - # Because we execute on `push`, we have to double check here if this is part of a PR. - - name: Check if this branch is attached to a Pull Request - uses: 8bitjonny/gh-get-current-pr@2215326c76d51bfa3f2af0a470f32677f6c0cae9 # v2.2.0 - id: pr - with: - filterOutClosed: true # Don't trigger on commits with closed PRs, including merges into `master`. - - if: steps.pr.outputs.pr_found == 'true' - uses: actions/checkout@v4 - # And also, only execute if files that can affect gemfiles are modified. - - if: steps.pr.outputs.pr_found == 'true' - uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1 - id: filter - with: - base: ${{ github.ref_name }} - filters: | - gemfile: - # Files that declare the dependency tree - - Gemfile - - Appraisals - - datadog.gemspec - # Files that control gemfile generation - - tasks/appraisal.rake - - .github/workflows/update-gemfiles.yml - # The gem version is present in all lock files - - lib/datadog/version.rb - # In case the generated files were updated manually or in a merge commit - - appraisal/** - - gemfiles/** - - if: steps.pr.outputs.pr_found == 'true' && steps.filter.outputs.gemfile == 'true' - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.2' - bundler-cache: true # runs 'bundle install' and caches installed gems automatically - - if: steps.pr.outputs.pr_found == 'true' && steps.filter.outputs.gemfile == 'true' - name: Ensure gemfiles/*.gemfile.lock match gem definition - run: bundle exec rake appraisal:lock - - if: steps.pr.outputs.pr_found == 'true' && steps.filter.outputs.gemfile == 'true' - name: Add all supported platforms to gemfiles/*.gemfile.lock - run: bundle exec rake appraisal:platform - - if: steps.pr.outputs.pr_found == 'true' && steps.filter.outputs.gemfile == 'true' - name: Remove obsolete gemfiles/* - run: bundle exec rake appraisal:clean - - if: steps.pr.outputs.pr_found == 'true' && steps.filter.outputs.gemfile == 'true' - name: Commit gemfiles changes, if any, back to the branch - uses: stefanzweifel/git-auto-commit-action@3ea6ae190baf489ba007f7c92608f33ce20ef04a # v4.16.0 - with: - commit_message: Update gemfiles/* diff --git a/.github/workflows/update-latest-dependency.yml b/.github/workflows/update-latest-dependency.yml new file mode 100644 index 00000000000..378252aaecf --- /dev/null +++ b/.github/workflows/update-latest-dependency.yml @@ -0,0 +1,95 @@ +name: "Update Latest Dependency" + +on: + schedule: + - cron: '0 0 * * 0' # Every Sunday at midnight + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-22.04 + permissions: + contents: read + strategy: + fail-fast: false + matrix: + engine: + # ADD NEW RUBIES HERE + - name: ruby + version: '3.4' + - name: ruby + version: '3.3' + - name: ruby + version: '3.2' + - name: ruby + version: '3.1' + - name: ruby + version: '3.0' + - name: ruby + version: '2.7' + - name: ruby + version: '2.6' + - name: ruby + version: '2.5' + - name: jruby + version: '9.4' + - name: jruby + version: '9.3' + - name: jruby + version: '9.2' + container: + image: "ghcr.io/datadog/images-rb/engines/${{ matrix.engine.name }}:${{ matrix.engine.version }}" + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Output Ruby version + run: ruby -v + + - name: Bundle + run: bundle install + + - name: Update latest + run: bundle exec rake edge:latest + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: 'gha${{ github.run_id }}-datadog-gem-${{ matrix.engine.name }}-${{ matrix.engine.version }}' + path: gemfiles/${{ matrix.engine.name }}_${{ matrix.engine.version }}_* + retention-days: 1 + + aggregate: + needs: build + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Download artifacts for all runtimes + uses: actions/download-artifact@v4 + with: + path: gemfiles + pattern: gha${{ github.run_id }}-datadog-gem-* + merge-multiple: true + + - run: git diff + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v7 + with: + token: ${{ secrets.GHA_PAT }} + branch: auto-generate/update-latest-dependencies + title: '[🤖] Update Latest Dependency' + base: master + labels: dev/internal, integrations + commit-message: "[🤖] Update Latest Dependency: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" + delete-branch: true + body: | + _This is an auto-generated PR from [here](https://github.com/DataDog/dd-trace-rb/blob/master/.github/workflows/update-latest-dependency.yml), which creates a pull request that will be continually updated with new changes until it is merged or closed)_ + + The PR updates latest versions of defined dependencies. Please review the changes and merge when ready. diff --git a/.github/workflows/yard.yml b/.github/workflows/yard.yml index 70185f8a092..3a303388763 100644 --- a/.github/workflows/yard.yml +++ b/.github/workflows/yard.yml @@ -25,22 +25,25 @@ jobs: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest + container: + image: ghcr.io/datadog/images-rb/engines/ruby:3.2 + env: + BUNDLE_GEMFILE: tools/yard.gemfile steps: - name: Checkout uses: actions/checkout@v4 - - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.2' - bundler-cache: true + - run: ls -al + - name: Bundle + run: bundle install - name: Generate YARD documentation - run: bundle exec rake docs + run: bundle exec rake docs --rakefile=tasks/yard.rake - name: Setup Pages - uses: actions/configure-pages@v3 + uses: actions/configure-pages@v5 - name: Upload artifact - uses: actions/upload-pages-artifact@v1 + uses: actions/upload-pages-artifact@v3 with: # Upload generated YARD directory path: 'doc/' - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v2 + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index ac343d8b12b..eeb2f45c7a5 100644 --- a/.gitignore +++ b/.gitignore @@ -38,7 +38,8 @@ ext/**/skipped_reason.txt # unless supporting rvm < 1.11.0 or doing something fancy, ignore this: .rvmrc # Ignore local variables -.envrc +/.envrc +/.direnv # lock files Gemfile.lock diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ad3775513db..2948a30f937 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,22 +1,20 @@ stages: - manual-images - package - - integration-tests - - deploy + - shared-pipeline + - vaccine - macrobenchmarks - microbenchmarks - benchmarks include: - - remote: https://gitlab-templates.ddbuild.io/apm/packaging.yml + - remote: https://gitlab-templates.ddbuild.io/libdatadog/include/one-pipeline.yml - local: ".gitlab/benchmarks.yml" - - remote: https://gitlab-templates.ddbuild.io/libdatadog/include/single-step-instrumentation-tests.yml variables: - DOWNSTREAM_BRANCH: - value: "master" - description: "Run a specific datadog-reliability-env branch downstream" RUBY_CUSTOM_IMAGE_BASE: $DOCKER_REGISTRY/ci/dd-trace-rb/custom_ruby + REPO_LANG: ruby # ruby is used rather that "rb" + BUILD_JOB_NAME: save_versions default: tags: ["runner:main", "size:large"] @@ -72,15 +70,6 @@ promote-image: build-gem: image: $DOCKER_REGISTRY/images/mirror/ruby:3.2.2 stage: package - rules: - - if: $CI_PIPELINE_SOURCE == "schedule" - when: on_success - - if: $CI_COMMIT_TAG - when: on_success - - if: $CI_COMMIT_BRANCH == 'master' - when: on_success - - when: manual - allow_failure: true script: - | if [ -z "$CI_COMMIT_TAG" ]; then @@ -91,22 +80,25 @@ build-gem: .gitlab/patch_gem_version.sh glci $CI_JOB_ID $CI_COMMIT_REF_NAME $CI_COMMIT_SHA fi - bundle install && chmod go-w -R . && bundle exec rake build - - mkdir -p tmp && ruby -Ilib -rdatadog/version -e 'puts Gem::Version.new(Datadog::VERSION::STRING).to_s' >> tmp/version.txt + - mkdir -p tmp && ruby -Ilib -rdatadog/version -e 'puts Gem::Version.new(Datadog::VERSION::STRING).to_s' >> tmp/version artifacts: paths: - pkg - tmp - lib/datadog/version.rb -.install-dependencies: +install-dependencies: + image: $RUBY_CUSTOM_IMAGE_BASE/$RUBY_VERSION-$ARCH:current + tags: [ "arch:$ARCH" ] parallel: matrix: - RUBY_VERSION: ["2.7.8", "3.0.6", "3.1.4", "3.2.2"] + ARCH: [ "amd64", "arm64" ] stage: package needs: - build-gem script: - - export RUBY_PACKAGE_VERSION=$(cat tmp/version.txt) + - export RUBY_PACKAGE_VERSION=$(cat tmp/version) - export DATADOG_GEM_LOCATION=$(readlink -f pkg/datadog-*.gem) - ruby -v - gem -v @@ -115,124 +107,28 @@ build-gem: artifacts: paths: - pkg - - tmp + - tmp/$ARCH - lib/datadog/version.rb -install-dependencies-amd64: - extends: .install-dependencies - image: $RUBY_CUSTOM_IMAGE_BASE/$RUBY_VERSION-amd64:current - tags: ["runner:main"] - -install-dependencies-arm64: - extends: .install-dependencies - image: $RUBY_CUSTOM_IMAGE_BASE/$RUBY_VERSION-arm64:current - tags: ["arch:arm64"] - -package-amd64: - extends: .package - needs: - - build-gem - - install-dependencies-amd64 - script: - - ls ../pkg - - cp ../lib-injection/host_inject.rb ../tmp - - export RUBY_PACKAGE_VERSION=$(cat ../tmp/version.txt) - - ../.gitlab/build-deb-rpm.sh - - find . -iregex '.*\.\(deb\|rpm\)' -printf '%f\0' | xargs -0 dd-pkg lint - -package-arm64: - extends: .package-arm - needs: - - build-gem - - install-dependencies-arm64 - script: - - ls ../pkg - - cp ../lib-injection/host_inject.rb ../tmp - - export RUBY_PACKAGE_VERSION=$(cat ../tmp/version.txt) - - ../.gitlab/build-deb-rpm.sh - - find . -iregex '.*\.\(deb\|rpm\)' -printf '%f\0' | xargs -0 dd-pkg lint - -package-oci-amd64: - extends: .package-oci - stage: package +package-oci: needs: - build-gem - - install-dependencies-amd64 - variables: - ARCH: amd64 - script: - - cp ../lib-injection/host_inject.rb ../tmp - - export RUBY_PACKAGE_VERSION=$(cat ../tmp/version.txt) - - ../.gitlab/build-oci-package.sh - -package-oci-arm64: - extends: .package-oci - stage: package - needs: - - build-gem - - install-dependencies-arm64 - variables: - ARCH: arm64 - script: - - cp ../lib-injection/host_inject.rb ../tmp - - export RUBY_PACKAGE_VERSION=$(cat ../tmp/version.txt) - - ../.gitlab/build-oci-package.sh - -oci-internal-publish: - extends: .oci-internal-publish - stage: package - needs: [ package-oci-arm64, package-oci-amd64 ] - rules: - - when: on_success - variables: - FLAVOR: datadog-apm-library-ruby - -oci-internal-test-ecr-publish: - stage: package - needs: [ oci-internal-publish ] - rules: - - when: on_success - trigger: - project: DataDog/public-images - branch: main - strategy: depend - variables: - IMG_SOURCES: registry.ddbuild.io/ci/remote-updates/datadog-apm-library-ruby:pipeline-${CI_PIPELINE_ID}-1 - IMG_DESTINATIONS: apm-library-ruby-package:pipeline-${CI_PIPELINE_ID} - IMG_REGISTRIES: agent-qa + - install-dependencies -onboarding_tests: - extends: .base_job_onboarding - stage: integration-tests - needs: [ oci-internal-test-ecr-publish ] - allow_failure: false - variables: - TEST_LIBRARY: ruby - SCENARIO: SIMPLE_INSTALLER_AUTO_INJECTION - DD_INSTALLER_LIBRARY_VERSION: pipeline-${CI_PIPELINE_ID} +onboarding_tests_installer: parallel: - matrix: - - ONBOARDING_FILTER_WEBLOG: [test-app-ruby, test-app-ruby-container] - script: - - git clone https://git@github.com/DataDog/system-tests.git system-tests - - cd system-tests - - ./build.sh -i runner - - timeout 2700s ./run.sh $SCENARIO --vm-weblog ${ONBOARDING_FILTER_WEBLOG} --vm-env prod --vm-library ${TEST_LIBRARY} --vm-provider aws --vm-skip-branches ubuntu18_amd64 + matrix: + - ONBOARDING_FILTER_WEBLOG: [test-app-ruby, test-app-ruby-container] -.release-package: - stage: deploy - variables: - PRODUCT_NAME: auto_inject-ruby +onboarding_tests_k8s_injection: + parallel: + matrix: + - WEBLOG_VARIANT: [dd-lib-ruby-init-test-rails, dd-lib-ruby-init-test-rails-explicit,dd-lib-ruby-init-test-rails-gemsrb] save_versions: image: $DOCKER_REGISTRY/images/mirror/ruby:3.2.2 - stage: deploy + stage: package needs: [] - rules: - - if: $CI_PIPELINE_SOURCE == "schedule" - when: on_success - - when: manual - allow_failure: true script: - git fetch --all - echo COMMIT_SHA_1X=$(git rev-parse origin/1.x-stable) >> upstream.env @@ -242,62 +138,19 @@ save_versions: - upstream.env deploy_to_reliability_env: - stage: deploy needs: - save_versions - rules: - - if: $CI_PIPELINE_SOURCE == "schedule" - when: on_success - - when: manual - allow_failure: true - trigger: - project: DataDog/apm-reliability/datadog-reliability-env - branch: $DOWNSTREAM_BRANCH - variables: - UPSTREAM_BRANCH: $CI_COMMIT_REF_NAME - UPSTREAM_PROJECT_ID: $CI_PROJECT_ID - UPSTREAM_PROJECT_NAME: $CI_PROJECT_NAME - UPSTREAM_COMMIT_SHA: $CI_COMMIT_SHA - UPSTREAM_PACKAGE_JOB: save_versions - UPSTREAM_PIPELINE_ID: $CI_PIPELINE_ID - CI_SERVER_URL: $CI_SERVER_URL -prepare_image_destinations: - stage: deploy - tags: ["arch:amd64"] - image: $DOCKER_REGISTRY/images/mirror/ruby:3.2.2 - rules: - - if: '$POPULATE_CACHE' - when: never - - if: $CI_COMMIT_TAG =~ /^v(\d+)\.(\d+)\.(\d+)$/ # Exclude prerelease - when: always - - when: manual - allow_failure: true - script: - - ruby -v - - gem -v - - bundle -v - - ./.gitlab/check_gem_presence.rb $CI_COMMIT_TAG - - | - IMG_DESTINATIONS=$(./.gitlab/prepare_image_destinations.rb dd-lib-ruby-init $CI_COMMIT_TAG) || { - echo "Failed to prepare image destinations: $CI_COMMIT_TAG" - exit 1 - } - echo "IMG_DESTINATIONS=$IMG_DESTINATIONS" > build.env - artifacts: - reports: - dotenv: build.env - -deploy_to_docker_registries: - stage: deploy - needs: - - job: prepare_image_destinations - artifacts: true - trigger: - project: DataDog/public-images - branch: main - strategy: depend - variables: - IMG_SOURCES: ghcr.io/datadog/dd-trace-rb/dd-lib-ruby-init:$CI_COMMIT_TAG - IMG_DESTINATIONS: $IMG_DESTINATIONS - IMG_SIGNING: "false" +vaccine: + image: $DOCKER_REGISTRY/docker:20.10.13 + tags: [ "arch:amd64" ] + stage: vaccine + needs: [create-multiarch-lib-injection-image] + script: | + GH_VACCINE_PAT=$(vault kv get -field=vaccine-token kv/k8s/gitlab-runner/dd-trace-rb/github-token) + + curl -X POST \ + -H "Accept: application/vnd.github.v3+json" \ + -H "Authorization: token $GH_VACCINE_PAT" \ + https://api.github.com/repos/TonyCTHsu/vaccine/actions/workflows/vaccine.yml/dispatches \ + -d '{"ref":"master", "inputs": {"commit_sha": "'$CI_COMMIT_SHA'"}}' diff --git a/.gitlab/benchmarks.yml b/.gitlab/benchmarks.yml index c6d19493a8b..ee2ff15b4c3 100644 --- a/.gitlab/benchmarks.yml +++ b/.gitlab/benchmarks.yml @@ -10,6 +10,7 @@ variables: .benchmarks: stage: macrobenchmarks tags: ["runner:apm-k8s-same-cpu"] + needs: [] timeout: 1h rules: - if: $CI_COMMIT_REF_NAME == "master" @@ -30,6 +31,10 @@ variables: # Benchmark's env variables. Modify to tweak benchmark parameters. DD_TRACE_DEBUG: "false" DD_RUNTIME_METRICS_ENABLED: "true" + + DD_SERVICE: "bp-ruby-gitlab" + DD_ENV: "staging" + # Gitlab makes use of the rugged gem, which triggers the automatic no signals workaround use, see # https://docs.datadoghq.com/profiler/profiler_troubleshooting/ruby/#unexpected-failures-or-errors-from-ruby-gems-that-use-native-extensions-in-dd-trace-rb-1110 # But in practice the endpoints we test it aren't affected, so we prefer to run the profiler in its default, @@ -80,6 +85,7 @@ only-profiling: variables: DD_BENCHMARKS_CONFIGURATION: only-profiling DD_PROFILING_ENABLED: "true" + ADD_TO_GEMFILE: "gem 'datadog', github: 'datadog/dd-trace-rb', ref: '$CI_COMMIT_SHA'" only-profiling-alloc: extends: .benchmarks @@ -87,6 +93,7 @@ only-profiling-alloc: DD_BENCHMARKS_CONFIGURATION: only-profiling DD_PROFILING_ENABLED: "true" DD_PROFILING_ALLOCATION_ENABLED: "true" + ADD_TO_GEMFILE: "gem 'datadog', github: 'datadog/dd-trace-rb', ref: '$CI_COMMIT_SHA'" only-profiling-heap: extends: .benchmarks @@ -95,13 +102,17 @@ only-profiling-heap: DD_PROFILING_ENABLED: "true" DD_PROFILING_ALLOCATION_ENABLED: "true" DD_PROFILING_EXPERIMENTAL_HEAP_ENABLED: "true" + ADD_TO_GEMFILE: "gem 'datadog', github: 'datadog/dd-trace-rb', ref: '$CI_COMMIT_SHA'" -only-profiling-crashtracking: +only-profiling-heap-clean-after-gc: extends: .benchmarks variables: DD_BENCHMARKS_CONFIGURATION: only-profiling DD_PROFILING_ENABLED: "true" - DD_PROFILING_EXPERIMENTAL_CRASH_TRACKING_ENABLED: "true" + DD_PROFILING_ALLOCATION_ENABLED: "true" + DD_PROFILING_EXPERIMENTAL_HEAP_ENABLED: "true" + DD_PROFILING_HEAP_CLEAN_AFTER_GC_ENABLED: "true" + ADD_TO_GEMFILE: "gem 'datadog', github: 'datadog/dd-trace-rb', ref: '$CI_COMMIT_SHA'" profiling-and-tracing: extends: .benchmarks diff --git a/.gitlab/build-deb-rpm.sh b/.gitlab/build-deb-rpm.sh deleted file mode 100755 index 90a7225d2cb..00000000000 --- a/.gitlab/build-deb-rpm.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - - -echo -n "$RUBY_PACKAGE_VERSION" > auto_inject-ruby.version - -source common_build_functions.sh - -# The normal settings for /tmp are 1777, which ls shows as drwxrwxrwt. That is wide open. -# -# This gives all users read access, and removes write access for group and others, -# to all files and directories in the tmp directory. -chmod -R a+r,go-w ../tmp/* - -fpm_wrapper "datadog-apm-library-ruby" "$RUBY_PACKAGE_VERSION" \ - --input-type dir \ - --url "https://github.com/DataDog/dd-trace-rb" \ - --description "Datadog APM client library for Ruby" \ - --license "BSD-3-Clause" \ - --chdir=../tmp \ - --prefix "$LIBRARIES_INSTALL_BASE/ruby" \ - .=. diff --git a/.gitlab/build-oci-package.sh b/.gitlab/build-oci-package.sh deleted file mode 100755 index 268e25d700c..00000000000 --- a/.gitlab/build-oci-package.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -set -e - -mkdir sources - -cp -r ../tmp/* sources -sed -i "s#/opt/datadog/apm/library/ruby/#/opt/datadog-packages/datadog-apm-library-ruby/$RUBY_PACKAGE_VERSION/#g" sources/host_inject.rb - -echo -n "$RUBY_PACKAGE_VERSION" > sources/version - -datadog-package create \ - --version="$RUBY_PACKAGE_VERSION" \ - --package="datadog-apm-library-ruby" \ - --archive=true \ - --archive-path="datadog-apm-library-ruby-$RUBY_PACKAGE_VERSION-$ARCH.tar" \ - --arch "$ARCH" \ - --os "linux" \ - ./sources diff --git a/.gitlab/install_datadog_deps.rb b/.gitlab/install_datadog_deps.rb index f2c7f506fea..1f9b254f163 100755 --- a/.gitlab/install_datadog_deps.rb +++ b/.gitlab/install_datadog_deps.rb @@ -22,7 +22,7 @@ current_path = Pathname.new(FileUtils.pwd) -tmp_path = current_path.join('tmp') +tmp_path = current_path.join('tmp', ENV["ARCH"]) versioned_path = tmp_path.join(ruby_api_version) @@ -63,8 +63,21 @@ puts gem_version_mapping -gem_version_mapping.each do |gem, version| - env = {} +env = { + 'GEM_HOME' => versioned_path.to_s, + # Install `datadog` gem locally without its profiling native extension + 'DD_PROFILING_NO_EXTENSION' => 'true', +} + +[ + 'datadog-ruby_core_source', + 'ffi', + 'libddwaf', + 'msgpack', + 'libdatadog', # libdatadog MUST be installed before datadog to ensure libdatadog native extension is compiled + 'datadog', +].each do |gem| + version = gem_version_mapping.delete(gem) gem_install_cmd = "gem install #{gem} "\ "--version #{version} "\ @@ -73,19 +86,13 @@ case gem when 'ffi' - gem_install_cmd << "--install-dir #{versioned_path} " # Install `ffi` gem with its built-in `libffi` native extension instead of using system's `libffi` gem_install_cmd << '-- --disable-system-libffi ' when 'datadog' - # Install `datadog` gem locally without its profiling native extension - env['DD_PROFILING_NO_EXTENSION'] = 'true' gem_install_cmd = "gem install --local #{ENV.fetch('DATADOG_GEM_LOCATION')} "\ '--no-document '\ '--ignore-dependencies '\ - "--install-dir #{versioned_path} " - else - gem_install_cmd << "--install-dir #{versioned_path} " end puts "Execute: #{gem_install_cmd}" @@ -99,6 +106,14 @@ end end +raise "#{gem_version_mapping.keys.join(',')} are not installed." if gem_version_mapping.any? + +datadog_gem_path = versioned_path.join("gems/datadog-#{ENV.fetch('RUBY_PACKAGE_VERSION')}") +libdatadog_so_file = "libdatadog_api.#{RUBY_VERSION[/\d+.\d+/]}_#{RUBY_PLATFORM}.so" +unless File.exist?("#{datadog_gem_path}/lib/#{libdatadog_so_file}") + raise "Missing #{libdatadog_so_file} in #{datadog_gem_path}." +end + FileUtils.cd(versioned_path.join("extensions/#{Gem::Platform.local}"), verbose: true) do # Symlink those directories to be utilized by Ruby compiled with shared libraries FileUtils.ln_sf Gem.extension_api_version, ruby_api_version diff --git a/.gitlab/prepare-oci-package.sh b/.gitlab/prepare-oci-package.sh new file mode 100755 index 00000000000..cf96732ba47 --- /dev/null +++ b/.gitlab/prepare-oci-package.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -e + +mkdir sources + +cp ../lib-injection/host_inject.rb sources +# Kubernetes injection expects a different path +ln -rs sources/host_inject.rb sources/auto_inject.rb + +cp -r ../tmp/${ARCH}/* sources + +cp ../tmp/version sources diff --git a/.gitlab/prepare_image_destinations.rb b/.gitlab/prepare_image_destinations.rb deleted file mode 100755 index 5f85820d8ce..00000000000 --- a/.gitlab/prepare_image_destinations.rb +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env ruby - -require 'bundler/inline' - -gemfile { gem 'gems', source: 'https://rubygems.org' } - -require 'rubygems' -require 'gems' - -image_name = ARGV[0].chomp -version = ARGV[1].chomp -version = version.delete_prefix('v') if version.start_with?('v') - -candidate = Gem::Version.new(version) -versions = Gems.versions('datadog').map { |h| Gem::Version.new(h['number']) } - -# Make sure candidate has already been published to 'https://rubygems.org' -unless versions.include?(candidate) - warn "Version #{candidate} not found in RubyGems" - exit 1 -end - -# Skip pre-releases -if candidate.prerelease? - warn 'No tags for pre-releases' - exit 1 -end - -major, minor, = candidate.to_s.split('.') -current_major_versions = versions.select { |v| v.to_s.start_with?("#{major}.") } - -tags = [] - -# Disable tagging 'latest' for now avoid crossing major versions -# tags << 'latest' if versions.all? { |v| candidate >= v } -tags << "v#{major}" if current_major_versions.all? { |v| candidate >= v } -tags << "v#{major}.#{minor}" -tags << "v#{candidate}" - -# $stdout.puts "tags: #{tags}" # Uncomment for debugging - -destinations = tags.map { |tag| "#{image_name}:#{tag}" } -$stdout.puts destinations.join(',') diff --git a/.rubocop.yml b/.rubocop.yml index a26c044da4c..ce46fe2fb19 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -24,9 +24,28 @@ AllCops: - 'spec/**/**/interesting_backtrace_helper.rb' # This file needs quite a few bizarre code patterns by design - 'vendor/bundle/**/*' - 'spec/datadog/tracing/contrib/grpc/support/gen/**/*.rb' # Skip protoc autogenerated code + - lib/datadog/di/**/* + - lib/datadog/di.rb + - spec/datadog/di/**/* NewCops: disable # Don't allow new cops to be enabled implicitly. SuggestExtensions: false # Stop pushing suggestions constantly. +# Profiling has migrated to standard and is not managed by rubocop: +Style: + Exclude: + - 'lib/datadog/profiling*' + - 'lib/datadog/profiling/**/*' + - 'spec/datadog/profiling*' + - 'spec/datadog/profiling/**/*' + - 'ext/datadog_profiling_*/**/*' +Layout: + Exclude: + - 'lib/datadog/profiling/*' + - 'lib/datadog/profiling/**/**' + - 'spec/datadog/profiling/*' + - 'spec/datadog/profiling/**/**' + - 'ext/datadog_profiling_*/**/*' + Layout/LineLength: Max: 124 Exclude: diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 99797623fbf..93d7206858a 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -38,6 +38,7 @@ Metrics/BlockNesting: # AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS Naming/FileName: Exclude: + - 'lib/datadog/single_step_instrument.rb' - 'lib/datadog/appsec/autoload.rb' - 'lib/datadog/opentelemetry/api/trace/span.rb' - 'lib/datadog/opentelemetry/sdk/trace/span.rb' @@ -131,3 +132,4 @@ Style/ClassVars: - 'spec/datadog/tracing/contrib/rails/support/rails4.rb' - 'spec/datadog/tracing/contrib/rails/support/rails5.rb' - 'spec/datadog/tracing/contrib/rails/support/rails6.rb' + - 'spec/datadog/tracing/contrib/rails/support/rails7.rb' diff --git a/.standard.yml b/.standard.yml new file mode 100644 index 00000000000..ef9d77149a0 --- /dev/null +++ b/.standard.yml @@ -0,0 +1,3 @@ +# For available configuration options, see: +# https://github.com/testdouble/standard +ruby_version: 2.5 diff --git a/.standard_todo.yml b/.standard_todo.yml new file mode 100644 index 00000000000..088c8d995b6 --- /dev/null +++ b/.standard_todo.yml @@ -0,0 +1,46 @@ +# This file is used to ignore specific rules for specific files or directories. +--- +ignore: + +# After quite some discussion on the team, we decided to make an exception to the +# "standard-isn't-supposed-to-be-configured" thing to allow for trailing comma, see +# https://github.com/standardrb/standard/issues/611 for a discussion +- '**/**': + - Style/TrailingCommaInArguments + - Style/TrailingCommaInArrayLiteral + - Style/TrailingCommaInHashLiteral + - Style/StringLiterals + +# This disables standardrb for the rest of dd-trace-rb (other than profiling) +- .pryrc +- .simplecov +- Appraisals +- datadog.gemspec +- Gemfile +- Rakefile +- Steepfile +- appraisal/**/** +- benchmarks/**/** +- gemfiles/**/** +- integration/**/** +- lib-injection/**/** +- ext/libdatadog_extconf_helpers.rb +- ext/libdatadog_api/**/** +- lib/* +- lib/datadog/* +- lib/datadog/appsec/**/** +- lib/datadog/core/**/** +- lib/datadog/kit/**/** +- lib/datadog/opentelemetry/**/** +- lib/datadog/tracing/**/** +- spec/* +- spec/datadog/* +- spec/datadog/appsec/**/** +- spec/datadog/benchmark/**/** +- spec/datadog/core/**/** +- spec/datadog/kit/**/** +- spec/datadog/tracing/**/** +- spec/support/**/** +- tasks/**/** +- tools/**/** +- yard/**/** diff --git a/Appraisals b/Appraisals index b7d018c8631..ab1c9c4949e 100644 --- a/Appraisals +++ b/Appraisals @@ -16,6 +16,7 @@ REMOVED_GEMS = { :check => [ 'rbs', 'steep', + 'standard', ], :dev => [ 'ruby-lsp', @@ -40,6 +41,38 @@ def appraise(group, &block) end end +# Builds a matrix of versions to test for a given integration +# +# `range`: the range of versions to test +# `gem` : optional, gem name to test (gem name can be different from the integration name) +# `min` : optional, minimum version to test +# `meta` : optional, additional metadata (development dependencies, etc.) for the group +def build_coverage_matrix(integration, range, gem: nil, min: nil, meta: {}) + gem ||= integration + + if min + appraise "#{integration}-min" do + gem gem, "= #{min}" + meta.each { |k, v| v ? gem(k, v) : gem(k) } + end + end + + range.each do |n| + appraise "#{integration}-#{n}" do + gem gem, "~> #{n}" + meta.each { |k, v| v ? gem(k, v) : gem(k) } + end + end + + appraise "#{integration}-latest" do + # The latest group declares dependencies without version constraints, + # still requires being updated to pick up the next major version and + # committing the changes to lockfiles. + gem gem + meta.each { |k, v| v ? gem(k, v) : gem(k) } + end +end + major, minor, = if defined?(RUBY_ENGINE_VERSION) Gem::Version.new(RUBY_ENGINE_VERSION).segments else diff --git a/CHANGELOG.md b/CHANGELOG.md index efedce64293..d2628a80ec3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,61 @@ ## [Unreleased] +### Added + +* AppSec: Add Experimental Standalone AppSec Threats billing ([#3965][]) + +## [2.4.0] - 2024-10-11 + +### Added + +* Core: Allow changing sampling rate for customer defined tags and resources ([#3956][]) +* Profiling: Add GVL profiling for Ruby 3.2+ as a preview feature ([#3929][]) +* Profiling: Otel: Add preview support for correlating profiling with otel ruby gem ([#3984][]) +* Tracing: AppSec: Add http.route tag to Rails, Grape, and Sinatra integrations ([#3849][]) +* Tracing: Add capabilities to remote config: tracing sample rate, tracing logs injection, tracing http header tags ([#3888][]) +* AppSec: Add a force disable of AppSec feature when using Ruby >= 3.3 with old FFI gem version ([#3969][]) + +### Changed + +* AppSec: Improve PII compliance ([#3857][]) +* AppSec: Integrations: Improve accuracy of login tracking for Devise ([#3867][]) +* Crashtracking feature is now disabled by default ([#3970][]) + +### Fixed + +* AppSec: Integrations: Fix GraphQL instrumentation for query fragments ([#3887][]) +* Bug: Profiling: Fix (small) memory leak in profiler when forking ([#3852][]) +* Tracing: Integrations: Fix GraphQL integration reconfiguration ([#3859][]) + +## [2.3.0] - 2024-08-22 + +### Added + +* Core: Support agentless telemetry ([#3779][]) +* Tracing: Add support for span events ([#3776][]) +* Tracing: Add tags to enable inferred service dependencies for databases ([#3789][]) +* Tracing: Emit log message and instructions for incompatible Lograge setup ([#3812][], [#3839][]) +* Tracing: Add `append_comment` option to append SQL comment propagation for `mysql`, `pg` and `trilogy` ([#3809][]) +* AppSec: Add threat detection and protection for `graphql` ([#3769][], [#3814][]) + +### Changed + +* Core: Enable crashtracking by default ([#3826][]) +* Profiling: Reduce allocation overhead ([#3805][], [#3797][]) +* Profiling: Speed up stack sampling ([#3837][]) +* Profiling: Upgrade to libdatadog 11 ([#3799][]) +* Profiling: Disable allocation counting feature by default ([#3798][]) +* Profiling: Reduce the maximum biased result for allocation samples ([#3793][]) +* Tracing: Reduce noisy integration logs ([#3785][]) + +### Fixed + +* Tracing: Fix `require` issue for `graphql` ([#3813][]) +* AppSec: Fix an error when parsing http headers with integer value ([#3790][]) +* AppSec: Fix an error when tracking login failure without `user_id` ([#3841][]) +* Fix a syntax error for Ruby < 2.4 during single step instrumentation ([#3795][]) + ## [2.2.0] - 2024-07-11 ### Added @@ -2934,7 +2989,9 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1 Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1 -[Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v2.2.0...master +[Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v2.4.0...master +[2.4.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.3.0...v2.4.0 +[2.3.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.2.0...v2.3.0 [2.2.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.1.0...v2.2.0 [2.1.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.0.0...v2.1.0 [2.0.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.0.0.rc1...v2.0.0 @@ -4331,9 +4388,41 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1 [#3753]: https://github.com/DataDog/dd-trace-rb/issues/3753 [#3757]: https://github.com/DataDog/dd-trace-rb/issues/3757 [#3759]: https://github.com/DataDog/dd-trace-rb/issues/3759 +[#3769]: https://github.com/DataDog/dd-trace-rb/issues/3769 [#3770]: https://github.com/DataDog/dd-trace-rb/issues/3770 [#3772]: https://github.com/DataDog/dd-trace-rb/issues/3772 [#3774]: https://github.com/DataDog/dd-trace-rb/issues/3774 +[#3776]: https://github.com/DataDog/dd-trace-rb/issues/3776 +[#3779]: https://github.com/DataDog/dd-trace-rb/issues/3779 +[#3785]: https://github.com/DataDog/dd-trace-rb/issues/3785 +[#3789]: https://github.com/DataDog/dd-trace-rb/issues/3789 +[#3790]: https://github.com/DataDog/dd-trace-rb/issues/3790 +[#3793]: https://github.com/DataDog/dd-trace-rb/issues/3793 +[#3795]: https://github.com/DataDog/dd-trace-rb/issues/3795 +[#3797]: https://github.com/DataDog/dd-trace-rb/issues/3797 +[#3798]: https://github.com/DataDog/dd-trace-rb/issues/3798 +[#3799]: https://github.com/DataDog/dd-trace-rb/issues/3799 +[#3805]: https://github.com/DataDog/dd-trace-rb/issues/3805 +[#3809]: https://github.com/DataDog/dd-trace-rb/issues/3809 +[#3812]: https://github.com/DataDog/dd-trace-rb/issues/3812 +[#3813]: https://github.com/DataDog/dd-trace-rb/issues/3813 +[#3814]: https://github.com/DataDog/dd-trace-rb/issues/3814 +[#3826]: https://github.com/DataDog/dd-trace-rb/issues/3826 +[#3837]: https://github.com/DataDog/dd-trace-rb/issues/3837 +[#3839]: https://github.com/DataDog/dd-trace-rb/issues/3839 +[#3841]: https://github.com/DataDog/dd-trace-rb/issues/3841 +[#3849]: https://github.com/DataDog/dd-trace-rb/issues/3849 +[#3852]: https://github.com/DataDog/dd-trace-rb/issues/3852 +[#3857]: https://github.com/DataDog/dd-trace-rb/issues/3857 +[#3859]: https://github.com/DataDog/dd-trace-rb/issues/3859 +[#3867]: https://github.com/DataDog/dd-trace-rb/issues/3867 +[#3887]: https://github.com/DataDog/dd-trace-rb/issues/3887 +[#3888]: https://github.com/DataDog/dd-trace-rb/issues/3888 +[#3929]: https://github.com/DataDog/dd-trace-rb/issues/3929 +[#3956]: https://github.com/DataDog/dd-trace-rb/issues/3956 +[#3969]: https://github.com/DataDog/dd-trace-rb/issues/3969 +[#3970]: https://github.com/DataDog/dd-trace-rb/issues/3970 +[#3984]: https://github.com/DataDog/dd-trace-rb/issues/3984 [@AdrianLC]: https://github.com/AdrianLC [@Azure7111]: https://github.com/Azure7111 [@BabyGroot]: https://github.com/BabyGroot @@ -4485,4 +4574,4 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1 [@y-yagi]: https://github.com/y-yagi [@yujideveloper]: https://github.com/yujideveloper [@yukimurasawa]: https://github.com/yukimurasawa -[@zachmccormick]: https://github.com/zachmccormick +[@zachmccormick]: https://github.com/zachmccormick \ No newline at end of file diff --git a/Gemfile b/Gemfile index 28ab18df764..0a02fae14a9 100644 --- a/Gemfile +++ b/Gemfile @@ -5,7 +5,7 @@ gemspec gem 'appraisal', '~> 2.4.0' gem 'benchmark-ips', '~> 2.8' gem 'benchmark-memory', '< 0.2' # V0.2 only works with 2.5+ -gem 'builder' + gem 'climate_control', '~> 0.2.0' gem 'concurrent-ruby' @@ -44,9 +44,12 @@ gem 'webmock', '>= 3.10.0' gem 'rexml', '>= 3.2.7' # https://www.ruby-lang.org/en/news/2024/05/16/dos-rexml-cve-2024-35176/ -gem 'webrick', '>= 1.7.0' if RUBY_VERSION >= '3.0.0' # No longer bundled by default since Ruby 3.0 - -gem 'yard', '~> 0.9' # NOTE: YardDoc is generated with ruby 3.2 in GitHub Actions +if RUBY_VERSION.start_with?('3.4.') + # ruby 3.4 breaks stable webrick; we need this fix until a version later than 1.8.1 comes out + gem 'webrick', git: 'https://github.com/ruby/webrick.git', ref: '0c600e169bd4ae267cb5eeb6197277c848323bbe' +elsif RUBY_VERSION >= '3.0.0' # No longer bundled by default since Ruby 3.0 + gem 'webrick', '>= 1.7.0' +end if RUBY_VERSION >= '2.6.0' # 1.50 is the last version to support Ruby 2.6 @@ -70,18 +73,18 @@ gem 'dogstatsd-ruby', '>= 3.3.0', '!= 5.0.0', '!= 5.0.1', '!= 5.1.0' if RUBY_PLATFORM != 'java' if RUBY_VERSION >= '2.7.0' # Bundler 1.x fails to find that versions >= 3.8.0 are not compatible because of binary gems gem 'google-protobuf', ['~> 3.0', '!= 3.7.0', '!= 3.7.1'] - elsif RUBY_VERSION >= '2.3.0' - gem 'google-protobuf', ['~> 3.0', '!= 3.7.0', '!= 3.7.1', '< 3.19.2'] else - gem 'google-protobuf', ['~> 3.0', '!= 3.7.0', '!= 3.7.1', '< 3.8.0'] + gem 'google-protobuf', ['~> 3.0', '!= 3.7.0', '!= 3.7.1', '< 3.19.2'] end end group :check do if RUBY_VERSION >= '3.0.0' && RUBY_PLATFORM != 'java' - gem 'rbs', '~> 3.2.0', require: false - gem 'steep', '~> 1.6.0', require: false + gem 'rbs', '~> 3.6', require: false + gem 'steep', '~> 1.7.0', require: false end + gem 'ruby_memcheck', '>= 3' if RUBY_VERSION >= '3.4.0' && RUBY_PLATFORM != 'java' + gem 'standard', require: false end group :dev do diff --git a/Matrixfile b/Matrixfile index fc08323fbbd..56a71886cf7 100644 --- a/Matrixfile +++ b/Matrixfile @@ -7,12 +7,16 @@ '' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', 'core-old' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' }, + 'crashtracking' => { + '' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ❌ jruby', + }, 'appsec:main' => { '' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' }, 'profiling:main' => { - 'opentelemetry' => '❌ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ❌ jruby', - '' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' + 'opentelemetry' => '❌ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ❌ jruby', + 'opentelemetry_otlp' => '❌ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ❌ jruby', + '' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', }, 'profiling:ractors' => { '' => '❌ 2.5 / ❌ 2.6 / ❌ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' @@ -24,7 +28,10 @@ 'opentelemetry' => '❌ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ❌ jruby' }, 'action_pack' => { - 'activesupport' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'rails5-mysql2' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ❌ 3.0 / ❌ 3.1 / ❌ 3.2 / ❌ 3.3 / ❌ 3.4 / ✅ jruby', + 'rails6-mysql2' => '❌ 2.5 / ❌ 2.6 / ❌ 2.7 / ❌ 3.0 / ❌ 3.1 / ❌ 3.2 / ❌ 3.3 / ❌ 3.4 / ✅ jruby', + 'rails7' => '❌ 2.5 / ❌ 2.6 / ❌ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ❌ jruby', + 'rails71' => '❌ 2.5 / ❌ 2.6 / ❌ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ❌ jruby', }, 'action_view' => { 'activesupport' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', @@ -56,8 +63,9 @@ 'relational_db' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' }, 'elasticsearch' => { - 'elasticsearch-7' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', - 'elasticsearch-8' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' + 'elasticsearch-latest' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'elasticsearch-8' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'elasticsearch-7' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', }, 'ethon' => { 'http' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ❌ jruby' @@ -72,10 +80,11 @@ 'grape' => { 'activesupport' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' }, - 'graphql' => { - 'graphql-2.2' => '❌ 2.5 / ❌ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', - 'graphql-2.1' => '❌ 2.5 / ❌ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', - 'graphql-2.0' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + ['graphql', 'graphql_unified_trace_patcher', 'graphql_trace_patcher', 'graphql_tracing_patcher'] => { + 'graphql-2.3' => '❌ 2.5 / ❌ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'graphql-2.2' => '❌ 2.5 / ❌ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'graphql-2.1' => '❌ 2.5 / ❌ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'graphql-2.0' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', # Although GraphQL 1.13.x depends on Ruby >= 2.4, but it does not work with Ruby 2.5 # # require 'graphql' @@ -109,8 +118,9 @@ 'relational_db' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ❌ jruby' }, 'opensearch' => { - 'opensearch-2' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', - 'opensearch-3' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' + 'opensearch-latest' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'opensearch-3' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'opensearch-2' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', }, 'pg' => { 'relational_db' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ❌ jruby' @@ -125,10 +135,11 @@ 'activesupport' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' }, 'rack' => { + 'rack-latest' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'rack-3' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'rack-2' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', # Non-deprecated form of Regexp.new does not backport to Rack 1.x, see: https://github.com/rack/rack/pull/1998 - 'rack-1' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ❌ 3.3 / ❌ 3.4 / ✅ jruby', - 'rack-2' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', - 'rack-3' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'rack-1' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ❌ 3.3 / ❌ 3.4 / ✅ jruby', }, 'rake' => { 'contrib' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' @@ -160,7 +171,15 @@ 'contrib' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' }, 'stripe' => { - 'http' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' + 'stripe-latest' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'stripe-12' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'stripe-11' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'stripe-10' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'stripe-9' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'stripe-8' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'stripe-7' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + # TODO: Add stripe-5 and stripe-6 + 'stripe-min' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', # 5.15.0 }, 'sucker_punch' => { 'contrib' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' @@ -226,7 +245,7 @@ 'rails6-postgres-redis' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ❌ 3.0 / ❌ 3.1 / ❌ 3.2 / ❌ 3.3 / ❌ 3.4 / ✅ jruby', 'rails61-postgres-redis' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' }, - 'hanami' => { + ['hanami', 'hanami_autoinstrument'] => { 'hanami-1' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ❌ 3.0 / ❌ 3.1 / ❌ 3.2 / ❌ 3.3 / ❌ 3.4 / ❌ jruby' }, 'sinatra' => { @@ -240,10 +259,11 @@ 'redis-5' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby' }, 'appsec:rack' => { + 'rack-latest' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'rack-3' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'rack-2' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', # Non-deprecated form of Regexp.new does not backport to Rack 1.x, see: https://github.com/rack/rack/pull/1998 - 'rack-1' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ❌ 3.3 / ❌ 3.4 / ✅ jruby', - 'rack-2' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', - 'rack-3' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'rack-1' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ❌ 3.3 / ❌ 3.4 / ✅ jruby', }, 'appsec:sinatra' => { 'sinatra-2' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', @@ -258,8 +278,21 @@ 'rails5-mysql2' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ❌ 3.0 / ❌ 3.1 / ❌ 3.2 / ❌ 3.3 / ❌ 3.4 / ❌ jruby', 'rails6-mysql2' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ❌ 3.0 / ❌ 3.1 / ❌ 3.2 / ❌ 3.3 / ❌ 3.4 / ❌ jruby', 'rails61-mysql2' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ❌ jruby' + }, + 'appsec:graphql' => { + 'graphql-2.3' => '❌ 2.5 / ❌ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'graphql-2.2' => '❌ 2.5 / ❌ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'graphql-2.1' => '❌ 2.5 / ❌ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'graphql-2.0' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'graphql-1.13' => '❌ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', } -}.freeze +}.each_with_object({}) do |(tasks, spec_metadata), hash| + # Explode arrays of task names into individual tasks + # e.g. ['rails', 'railsdisableenv'] => {'...'} becomes 'rails7' => {'...'}, 'railsdisableenv7' => {'...'} + Array(tasks).each do |task| + hash[task] = spec_metadata + end +end.freeze # rubocop:enable Layout/HashAlignment # vim: ft=ruby diff --git a/Rakefile b/Rakefile index 06cb8e77f30..652e5c245bd 100644 --- a/Rakefile +++ b/Rakefile @@ -1,10 +1,22 @@ require 'bundler/gem_tasks' require 'datadog/version' require 'rubocop/rake_task' if Gem.loaded_specs.key? 'rubocop' +require 'standard/rake' if Gem.loaded_specs.key? 'standard' require 'rspec/core/rake_task' require 'rake/extensiontask' -require 'yard' require 'os' +if Gem.loaded_specs.key? 'ruby_memcheck' + require 'ruby_memcheck' + require 'ruby_memcheck/rspec/rake_task' + + RubyMemcheck.config( + # If there's an error, print the suppression for that error, to allow us to easily skip such an error if it's + # a false-positive / something in the VM we can't fix. + valgrind_generate_suppressions: true, + # This feature provides better quality data -- I couldn't get good output out of ruby_memcheck without it. + use_only_ruby_free_at_exit: true, + ) +end Dir.glob('tasks/*.rake').each { |r| import r } @@ -70,15 +82,17 @@ end desc 'Run RSpec' # rubocop:disable Metrics/BlockLength namespace :spec do + # REMINDER: If adding a new task here, make sure also add it to the `Matrixfile` task all: [:main, :benchmark, + :graphql, :graphql_unified_trace_patcher, :graphql_trace_patcher, :graphql_tracing_patcher, :rails, :railsredis, :railsredis_activesupport, :railsactivejob, :elasticsearch, :http, :redis, :sidekiq, :sinatra, :hanami, :hanami_autoinstrument, - :profiling] + :profiling, :crashtracking] desc '' # "Explicitly hiding from `rake -T`" RSpec::Core::RakeTask.new(:main) do |t, args| t.pattern = 'spec/**/*_spec.rb' - t.exclude_pattern = 'spec/**/{contrib,benchmark,redis,auto_instrument,opentelemetry,profiling}/**/*_spec.rb,'\ + t.exclude_pattern = 'spec/**/{contrib,benchmark,redis,auto_instrument,opentelemetry,profiling,crashtracking}/**/*_spec.rb,'\ ' spec/**/{auto_instrument,opentelemetry}_spec.rb, spec/datadog/gem_packaging_spec.rb' t.rspec_opts = args.to_a.join(' ') end @@ -88,6 +102,27 @@ namespace :spec do t.rspec_opts = args.to_a.join(' ') end + RSpec::Core::RakeTask.new(:graphql) do |t, args| + t.pattern = 'spec/datadog/tracing/contrib/graphql/**/*_spec.rb' + t.exclude_pattern = 'spec/datadog/tracing/contrib/graphql/{unified_trace,trace,tracing}_patcher_spec.rb' + t.rspec_opts = args.to_a.join(' ') + end + + RSpec::Core::RakeTask.new(:graphql_unified_trace_patcher) do |t, args| + t.pattern = 'spec/datadog/tracing/contrib/graphql/unified_trace_patcher_spec.rb' + t.rspec_opts = args.to_a.join(' ') + end + + RSpec::Core::RakeTask.new(:graphql_trace_patcher) do |t, args| + t.pattern = 'spec/datadog/tracing/contrib/graphql/trace_patcher_spec.rb' + t.rspec_opts = args.to_a.join(' ') + end + + RSpec::Core::RakeTask.new(:graphql_tracing_patcher) do |t, args| + t.pattern = 'spec/datadog/tracing/contrib/graphql/tracing_patcher_spec.rb' + t.rspec_opts = args.to_a.join(' ') + end + desc '' # "Explicitly hiding from `rake -T`" RSpec::Core::RakeTask.new(:opentelemetry) do |t, args| t.pattern = 'spec/datadog/opentelemetry/**/*_spec.rb,spec/datadog/opentelemetry_spec.rb' @@ -169,21 +204,23 @@ namespace :spec do t.rspec_opts = args.to_a.join(' ') end + # rubocop:disable Style/MultilineBlockChain + RSpec::Core::RakeTask.new(:crashtracking) do |t, args| + t.pattern = 'spec/datadog/core/crashtracking/**/*_spec.rb' + t.rspec_opts = args.to_a.join(' ') + end.tap do |t| + Rake::Task[t.name].enhance(["compile:libdatadog_api.#{RUBY_VERSION[/\d+.\d+/]}_#{RUBY_PLATFORM}"]) + end + # rubocop:enable Style/MultilineBlockChain + desc '' # "Explicitly hiding from `rake -T`" RSpec::Core::RakeTask.new(:contrib) do |t, args| contrib_paths = [ - 'analytics', - 'configurable', + '*', 'configuration/*', 'configuration/resolvers/*', - 'extensions', - 'integration', - 'patchable', - 'patcher', - 'registerable', - 'registry', 'registry/*', - 'propagation/**/*' + 'propagation/**/*', ].join(',') t.pattern = "spec/**/contrib/{#{contrib_paths}}_spec.rb" @@ -191,6 +228,7 @@ namespace :spec do end # Datadog Tracing integrations + # REMINDER: If adding a new task here, make sure also add it to the `Matrixfile` [ :action_cable, :action_mailer, @@ -208,7 +246,6 @@ namespace :spec do :excon, :faraday, :grape, - :graphql, :grpc, :http, :httpclient, @@ -247,7 +284,7 @@ namespace :spec do end namespace :appsec do - task all: [:main, :rack, :rails, :sinatra, :devise] + task all: [:main, :rack, :rails, :sinatra, :devise, :graphql] # Datadog AppSec main specs desc '' # "Explicitly hiding from `rake -T`" @@ -264,6 +301,7 @@ namespace :spec do :sinatra, :rails, :devise, + :graphql, ].each do |contrib| desc '' # "Explicitly hiding from `rake -T`" RSpec::Core::RakeTask.new(contrib) do |t, args| @@ -303,6 +341,25 @@ namespace :spec do t.rspec_opts = [*args.to_a, '-t ractors'].join(' ') end + desc 'Run spec:profiling:main tests with memory leak checking' + if Gem.loaded_specs.key?('ruby_memcheck') + RubyMemcheck::RSpec::RakeTask.new(:memcheck) do |t, args| + t.pattern = 'spec/datadog/profiling/**/*_spec.rb,spec/datadog/profiling_spec.rb' + # Some of our specs use multi-threading + busy looping, or multiple processes, or are just really really slow. + # We skip running these when running under valgrind. + # (As a reminder, by default valgrind simulates a sequential/single-threaded execution). + # + # @ivoanjo: I previously tried https://github.com/Shopify/ruby_memcheck/issues/51 but in some cases valgrind + # would give incomplete output, causing a "FATAL: Premature end of data in tag valgrindoutput line 3" error in + # ruby_memcheck. I did not figure out why exactly. + t.rspec_opts = [*args.to_a, '-t ~ractors -t ~memcheck_valgrind_skip'].join(' ') + end + else + task :memcheck do + raise 'Memcheck requires the ruby_memcheck gem to be installed' + end + end + # Make sure each profiling test suite has a dependency on compiled native extensions Rake::Task[:all].prerequisite_tasks.each { |t| t.enhance([:compile_native_extensions]) } end @@ -315,17 +372,6 @@ if defined?(RuboCop::RakeTask) end end -YARD::Rake::YardocTask.new(:docs) do |t| - # Options defined in `.yardopts` are read first, then merged with - # options defined here. - # - # It's recommended to define options in `.yardopts` instead of here, - # as `.yardopts` can be read by external YARD tools, like the - # hot-reload YARD server `yard server --reload`. - - t.options += ['--title', "datadog #{Datadog::VERSION::STRING} documentation"] -end - # Jobs are parallelized if running in CI. desc 'CI task; it runs all tests for current version of Ruby' task ci: 'test:all' @@ -382,6 +428,10 @@ NATIVE_EXTS = [ Rake::ExtensionTask.new("datadog_profiling_loader.#{RUBY_VERSION}_#{RUBY_PLATFORM}") do |ext| ext.ext_dir = 'ext/datadog_profiling_loader' + end, + + Rake::ExtensionTask.new("libdatadog_api.#{RUBY_VERSION[/\d+.\d+/]}_#{RUBY_PLATFORM}") do |ext| + ext.ext_dir = 'ext/libdatadog_api' end ].freeze @@ -416,7 +466,7 @@ namespace :native_dev do end desc 'Runs rubocop + main test suite' -task default: ['rubocop', 'typecheck', 'spec:main'] +task default: ['rubocop', 'standard', 'typecheck', 'spec:main'] desc 'Runs the default task in parallel' -multitask fastdefault: ['rubocop', 'typecheck', 'spec:main'] +multitask fastdefault: ['rubocop', 'standard', 'typecheck', 'spec:main'] diff --git a/Steepfile b/Steepfile index 02fb04de0e0..d2b0f428454 100644 --- a/Steepfile +++ b/Steepfile @@ -5,6 +5,8 @@ target :datadog do ignore 'lib/datadog/appsec.rb' ignore 'lib/datadog/appsec/component.rb' + # Excluded due to https://github.com/soutaro/steep/issues/1232 + ignore 'lib/datadog/appsec/configuration/settings.rb' ignore 'lib/datadog/appsec/contrib/' ignore 'lib/datadog/appsec/contrib/auto_instrument.rb' ignore 'lib/datadog/appsec/contrib/integration.rb' @@ -32,28 +34,6 @@ target :datadog do ignore 'lib/datadog/appsec/contrib/sinatra/request_middleware.rb' ignore 'lib/datadog/appsec/monitor/gateway/watcher.rb' ignore 'lib/datadog/appsec/monitor/reactive/set_user.rb' - ignore 'lib/datadog/ci.rb' - ignore 'lib/datadog/ci/configuration/components.rb' - ignore 'lib/datadog/ci/configuration/settings.rb' - ignore 'lib/datadog/ci/contrib/' - ignore 'lib/datadog/ci/contrib/cucumber/configuration/settings.rb' - ignore 'lib/datadog/ci/contrib/cucumber/ext.rb' - ignore 'lib/datadog/ci/contrib/cucumber/formatter.rb' - ignore 'lib/datadog/ci/contrib/cucumber/instrumentation.rb' - ignore 'lib/datadog/ci/contrib/cucumber/integration.rb' - ignore 'lib/datadog/ci/contrib/cucumber/patcher.rb' - ignore 'lib/datadog/ci/contrib/rspec/configuration/settings.rb' - ignore 'lib/datadog/ci/contrib/rspec/example.rb' - ignore 'lib/datadog/ci/contrib/rspec/ext.rb' - ignore 'lib/datadog/ci/contrib/rspec/integration.rb' - ignore 'lib/datadog/ci/contrib/rspec/patcher.rb' - ignore 'lib/datadog/ci/ext/app_types.rb' - ignore 'lib/datadog/ci/ext/environment.rb' - ignore 'lib/datadog/ci/ext/settings.rb' - ignore 'lib/datadog/ci/ext/test.rb' - ignore 'lib/datadog/ci/extensions.rb' - ignore 'lib/datadog/ci/flush.rb' - ignore 'lib/datadog/ci/test.rb' ignore 'lib/datadog/core.rb' ignore 'lib/datadog/core/buffer/cruby.rb' ignore 'lib/datadog/core/buffer/random.rb' @@ -73,7 +53,6 @@ target :datadog do ignore 'lib/datadog/core/diagnostics/health.rb' ignore 'lib/datadog/core/encoding.rb' ignore 'lib/datadog/core/environment/container.rb' - ignore 'lib/datadog/core/environment/ext.rb' ignore 'lib/datadog/core/environment/identity.rb' ignore 'lib/datadog/core/environment/platform.rb' ignore 'lib/datadog/core/environment/socket.rb' @@ -91,6 +70,8 @@ target :datadog do ignore 'lib/datadog/core/metrics/metric.rb' ignore 'lib/datadog/core/metrics/options.rb' ignore 'lib/datadog/core/pin.rb' + # steep fails in this file due to https://github.com/soutaro/steep/issues/1231 + ignore 'lib/datadog/core/remote/tie.rb' ignore 'lib/datadog/core/runtime/ext.rb' ignore 'lib/datadog/core/runtime/metrics.rb' ignore 'lib/datadog/core/transport/ext.rb' @@ -102,6 +83,7 @@ target :datadog do ignore 'lib/datadog/core/transport/http/env.rb' ignore 'lib/datadog/core/transport/http/response.rb' ignore 'lib/datadog/core/utils.rb' + ignore 'lib/datadog/core/utils/at_fork_monkey_patch.rb' # @ivoanjo: I wasn't able to type this one, it's kinda weird ignore 'lib/datadog/core/utils/forking.rb' ignore 'lib/datadog/core/utils/hash.rb' # Refinement module ignore 'lib/datadog/core/utils/network.rb' @@ -122,6 +104,7 @@ target :datadog do ignore 'lib/datadog/core/workers/polling.rb' ignore 'lib/datadog/core/workers/queue.rb' ignore 'lib/datadog/core/workers/runtime_metrics.rb' + ignore 'lib/datadog/di/configuration/settings.rb' ignore 'lib/datadog/kit/appsec/events.rb' # disabled because of https://github.com/soutaro/steep/issues/701 ignore 'lib/datadog/kit/identity.rb' # disabled because of https://github.com/soutaro/steep/issues/701 ignore 'lib/datadog/opentelemetry.rb' @@ -133,7 +116,6 @@ target :datadog do ignore 'lib/datadog/opentelemetry/sdk/span_processor.rb' ignore 'lib/datadog/opentelemetry/sdk/trace/span.rb' ignore 'lib/datadog/profiling/collectors/code_provenance.rb' - ignore 'lib/datadog/profiling/ext/forking.rb' ignore 'lib/datadog/profiling/scheduler.rb' ignore 'lib/datadog/profiling/tag_builder.rb' ignore 'lib/datadog/profiling/tasks/setup.rb' @@ -518,7 +500,6 @@ target :datadog do ignore 'lib/datadog/tracing/sampling/priority_sampler.rb' ignore 'lib/datadog/tracing/sampling/rate_by_key_sampler.rb' ignore 'lib/datadog/tracing/sampling/rate_by_service_sampler.rb' - ignore 'lib/datadog/tracing/sampling/rate_limiter.rb' ignore 'lib/datadog/tracing/sampling/rate_sampler.rb' ignore 'lib/datadog/tracing/sampling/rule.rb' ignore 'lib/datadog/tracing/sampling/rule_sampler.rb' @@ -592,6 +573,7 @@ target :datadog do library 'passenger' library 'webmock' library 'graphql' + library 'datadog-ci' # TODO: gem 'libddwaf' library 'libddwaf' diff --git a/appraisal/jruby-9.2.rb b/appraisal/jruby-9.2.rb index 0fb685ce0e6..571acd7252c 100644 --- a/appraisal/jruby-9.2.rb +++ b/appraisal/jruby-9.2.rb @@ -186,21 +186,12 @@ gem 'http', '~> 4' # TODO: Fix test breakage and flakiness for 5+ gem 'httpclient' gem 'rest-client' - gem 'stripe', '~> 7.0' gem 'typhoeus' end -[2, 3].each do |n| - appraise "opensearch-#{n}" do - gem 'opensearch-ruby', "~> #{n}" - end -end - -[7, 8].each do |n| - appraise "elasticsearch-#{n}" do - gem 'elasticsearch', "~> #{n}" - end -end +build_coverage_matrix('stripe', 7..12, min: '5.15.0') +build_coverage_matrix('opensearch', 2..3, gem: 'opensearch-ruby') +build_coverage_matrix('elasticsearch', 7..8) appraise 'relational_db' do gem 'activerecord', '~> 5' @@ -209,7 +200,7 @@ gem 'makara' gem 'activerecord-jdbcmysql-adapter', '>= 52', platform: :jruby gem 'activerecord-jdbcpostgresql-adapter', '>= 52', platform: :jruby - gem 'sequel', '~> 5.54.0' # TODO: Support sequel 5.62.0+ + gem 'sequel' gem 'activerecord-jdbcsqlite3-adapter', '>= 52', platform: :jruby end @@ -246,17 +237,14 @@ '2.0', ].each do |v| appraise "graphql-#{v}" do + gem 'rails', '~> 6.1.0' gem 'graphql', "~> #{v}.0" + gem 'sprockets', '< 4' + gem 'lograge', '~> 0.11' end end -[1, 2, 3].each do |n| - appraise "rack-#{n}" do - gem 'rack', "~> #{n}" - gem 'rack-contrib' - gem 'rack-test' # Dev dependencies for testing rack-based code - end -end +build_coverage_matrix('rack', 1..3, meta: { 'rack-contrib' => nil, 'rack-test' => nil }) [2].each do |n| appraise "sinatra-#{n}" do diff --git a/appraisal/jruby-9.3.rb b/appraisal/jruby-9.3.rb index 84bd68667a6..f796fd81c21 100644 --- a/appraisal/jruby-9.3.rb +++ b/appraisal/jruby-9.3.rb @@ -159,21 +159,12 @@ gem 'http', '~> 4' # TODO: Fix test breakage and flakiness for 5+ gem 'httpclient' gem 'rest-client' - gem 'stripe', '~> 8.0' gem 'typhoeus' end -[2, 3].each do |n| - appraise "opensearch-#{n}" do - gem 'opensearch-ruby', "~> #{n}" - end -end - -[7, 8].each do |n| - appraise "elasticsearch-#{n}" do - gem 'elasticsearch', "~> #{n}" - end -end +build_coverage_matrix('stripe', 7..12, min: '5.15.0') +build_coverage_matrix('opensearch', 2..3, gem: 'opensearch-ruby') +build_coverage_matrix('elasticsearch', 7..8) appraise 'relational_db' do gem 'activerecord', '~> 6.0.0' @@ -182,7 +173,7 @@ gem 'makara' gem 'activerecord-jdbcmysql-adapter', platform: :jruby gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby - gem 'sequel', '~> 5.54.0' # TODO: Support sequel 5.62.0+ + gem 'sequel' gem 'jdbc-sqlite3', '>= 3.28', platform: :jruby end @@ -219,17 +210,14 @@ '1.13', ].each do |v| appraise "graphql-#{v}" do + gem 'rails', '~> 6.1.0' gem 'graphql', "~> #{v}.0" + gem 'sprockets', '< 4' + gem 'lograge', '~> 0.11' end end -[1, 2, 3].each do |n| - appraise "rack-#{n}" do - gem 'rack', "~> #{n}" - gem 'rack-contrib' - gem 'rack-test' # Dev dependencies for testing rack-based code - end -end +build_coverage_matrix('rack', 1..3, meta: { 'rack-contrib' => nil, 'rack-test' => nil }) [2, 3].each do |n| appraise "sinatra-#{n}" do diff --git a/appraisal/jruby-9.4.rb b/appraisal/jruby-9.4.rb index a15df6ac3ac..6fce8d81830 100644 --- a/appraisal/jruby-9.4.rb +++ b/appraisal/jruby-9.4.rb @@ -63,21 +63,12 @@ gem 'http', '~> 4' # TODO: Completely broken with this JRuby version, this has not be validate on CI gem 'httpclient' gem 'rest-client' - gem 'stripe' gem 'typhoeus' end -[2, 3].each do |n| - appraise "opensearch-#{n}" do - gem 'opensearch-ruby', "~> #{n}" - end -end - -[7, 8].each do |n| - appraise "elasticsearch-#{n}" do - gem 'elasticsearch', "~> #{n}" - end -end +build_coverage_matrix('stripe', 7..12, min: '5.15.0') +build_coverage_matrix('opensearch', 2..3, gem: 'opensearch-ruby') +build_coverage_matrix('elasticsearch', 7..8) appraise 'relational_db' do gem 'activerecord', '~> 6.1.0' @@ -86,7 +77,7 @@ gem 'makara', '>= 0.6.0.pre' # Ruby 3 requires >= 0.6.0, which is currently in pre-release: https://rubygems.org/gems/makara/versions gem 'activerecord-jdbcmysql-adapter', '~> 61.0', platform: :jruby gem 'activerecord-jdbcpostgresql-adapter', '~> 61.0', platform: :jruby - gem 'sequel', '~> 5.54.0' # TODO: Support sequel 5.62.0+ + gem 'sequel' gem 'jdbc-sqlite3', '>= 3.28', platform: :jruby end @@ -118,13 +109,17 @@ end [ + '2.3', '2.2', '2.1', '2.0', '1.13', ].each do |v| appraise "graphql-#{v}" do + gem 'rails', '~> 6.1.0' gem 'graphql', "~> #{v}.0" + gem 'sprockets', '< 4' + gem 'lograge', '~> 0.11' end end @@ -134,13 +129,7 @@ end end -[1, 2, 3].each do |n| - appraise "rack-#{n}" do - gem 'rack', "~> #{n}" - gem 'rack-contrib' - gem 'rack-test' # Dev dependencies for testing rack-based code - end -end +build_coverage_matrix('rack', 1..3, meta: { 'rack-contrib' => nil, 'rack-test' => nil }) [2, 3, 4].each do |n| appraise "sinatra-#{n}" do diff --git a/appraisal/ruby-2.5.rb b/appraisal/ruby-2.5.rb index 355e63560c8..1249ba7e9c6 100644 --- a/appraisal/ruby-2.5.rb +++ b/appraisal/ruby-2.5.rb @@ -206,21 +206,12 @@ gem 'http' gem 'httpclient' gem 'rest-client' - gem 'stripe', '~> 7.0' gem 'typhoeus' end -[2, 3].each do |n| - appraise "opensearch-#{n}" do - gem 'opensearch-ruby', "~> #{n}" - end -end - -[7, 8].each do |n| - appraise "elasticsearch-#{n}" do - gem 'elasticsearch', "~> #{n}" - end -end +build_coverage_matrix('stripe', 7..12, min: '5.15.0') +build_coverage_matrix('opensearch', 2..3, gem: 'opensearch-ruby') +build_coverage_matrix('elasticsearch', 7..8) appraise 'relational_db' do gem 'activerecord', '~> 5' @@ -229,7 +220,7 @@ gem 'makara' gem 'mysql2', '< 1', platform: :ruby gem 'pg', '>= 0.18.4', platform: :ruby - gem 'sequel', '~> 5.54.0' # TODO: Support sequel 5.62.0+ + gem 'sequel' gem 'sqlite3', '~> 1.4.1', platform: :ruby end @@ -266,17 +257,14 @@ '2.0', ].each do |v| appraise "graphql-#{v}" do + gem 'rails', '~> 6.1.0' gem 'graphql', "~> #{v}.0" + gem 'sprockets', '< 4' + gem 'lograge', '~> 0.11' end end -[1, 2, 3].each do |n| - appraise "rack-#{n}" do - gem 'rack', "~> #{n}" - gem 'rack-contrib' - gem 'rack-test' # Dev dependencies for testing rack-based code - end -end +build_coverage_matrix('rack', 1..3, meta: { 'rack-contrib' => nil, 'rack-test' => nil }) [2].each do |n| appraise "sinatra-#{n}" do diff --git a/appraisal/ruby-2.6.rb b/appraisal/ruby-2.6.rb index c833f3d8659..7de49f45740 100644 --- a/appraisal/ruby-2.6.rb +++ b/appraisal/ruby-2.6.rb @@ -159,21 +159,12 @@ gem 'http' gem 'httpclient' gem 'rest-client' - gem 'stripe', '~> 8.0' gem 'typhoeus' end -[2, 3].each do |n| - appraise "opensearch-#{n}" do - gem 'opensearch-ruby', "~> #{n}" - end -end - -[7, 8].each do |n| - appraise "elasticsearch-#{n}" do - gem 'elasticsearch', "~> #{n}" - end -end +build_coverage_matrix('stripe', 7..12, min: '5.15.0') +build_coverage_matrix('opensearch', 2..3, gem: 'opensearch-ruby') +build_coverage_matrix('elasticsearch', 7..8) appraise 'relational_db' do gem 'activerecord', '~> 6.0.0' @@ -182,7 +173,7 @@ gem 'makara' gem 'mysql2', '< 1', platform: :ruby gem 'pg', '>= 0.18.4', platform: :ruby - gem 'sequel', '~> 5.54.0' # TODO: Support sequel 5.62.0+ + gem 'sequel' gem 'sqlite3', '~> 1.4.1', platform: :ruby end @@ -220,17 +211,14 @@ '1.13', ].each do |v| appraise "graphql-#{v}" do + gem 'rails', '~> 6.1.0' gem 'graphql', "~> #{v}.0" + gem 'sprockets', '< 4' + gem 'lograge', '~> 0.11' end end -[1, 2, 3].each do |n| - appraise "rack-#{n}" do - gem 'rack', "~> #{n}" - gem 'rack-contrib' - gem 'rack-test' # Dev dependencies for testing rack-based code - end -end +build_coverage_matrix('rack', 1..3, meta: { 'rack-contrib' => nil, 'rack-test' => nil }) [2, 3].each do |n| appraise "sinatra-#{n}" do @@ -244,6 +232,11 @@ gem 'opentelemetry-sdk', '~> 1.1' end +appraise 'opentelemetry_otlp' do + gem 'opentelemetry-sdk', '~> 1.1' + gem 'opentelemetry-exporter-otlp' +end + [3, 4, 5].each do |n| appraise "redis-#{n}" do gem 'redis', "~> #{n}" diff --git a/appraisal/ruby-2.7.rb b/appraisal/ruby-2.7.rb index 84dfe71f3ac..60d2ec62d9d 100644 --- a/appraisal/ruby-2.7.rb +++ b/appraisal/ruby-2.7.rb @@ -159,21 +159,12 @@ gem 'http' gem 'httpclient' gem 'rest-client' - gem 'stripe' gem 'typhoeus' end -[2, 3].each do |n| - appraise "opensearch-#{n}" do - gem 'opensearch-ruby', "~> #{n}" - end -end - -[7, 8].each do |n| - appraise "elasticsearch-#{n}" do - gem 'elasticsearch', "~> #{n}" - end -end +build_coverage_matrix('stripe', 7..12, min: '5.15.0') +build_coverage_matrix('opensearch', 2..3, gem: 'opensearch-ruby') +build_coverage_matrix('elasticsearch', 7..8) appraise 'relational_db' do gem 'activerecord', '~> 6.1.0' @@ -182,7 +173,7 @@ gem 'makara' gem 'mysql2', '< 1', platform: :ruby gem 'pg', '>= 0.18.4', platform: :ruby - gem 'sequel', '~> 5.54.0' # TODO: Support sequel 5.62.0+ + gem 'sequel' gem 'sqlite3', '~> 1.4.1' end @@ -215,23 +206,21 @@ end [ + '2.3', '2.2', '2.1', '2.0', '1.13', ].each do |v| appraise "graphql-#{v}" do + gem 'rails', '~> 6.1.0' gem 'graphql', "~> #{v}.0" + gem 'sprockets', '< 4' + gem 'lograge', '~> 0.11' end end -[1, 2, 3].each do |n| - appraise "rack-#{n}" do - gem 'rack', "~> #{n}" - gem 'rack-contrib' - gem 'rack-test' # Dev dependencies for testing rack-based code - end -end +build_coverage_matrix('rack', 1..3, meta: { 'rack-contrib' => nil, 'rack-test' => nil }) # Sinatra 4 requires Ruby (>= 2.7.8), but current image with Ruby 2.7.6 [2, 3].each do |n| @@ -246,6 +235,11 @@ gem 'opentelemetry-sdk', '~> 1.1' end +appraise 'opentelemetry_otlp' do + gem 'opentelemetry-sdk', '~> 1.1' + gem 'opentelemetry-exporter-otlp' +end + [3, 4, 5].each do |n| appraise "redis-#{n}" do gem 'redis', "~> #{n}" diff --git a/appraisal/ruby-3.0.rb b/appraisal/ruby-3.0.rb index 6b223997641..f4b00ee4ec0 100644 --- a/appraisal/ruby-3.0.rb +++ b/appraisal/ruby-3.0.rb @@ -50,6 +50,14 @@ gem 'net-smtp' end +appraise 'rails7' do + gem 'rails', '~> 7.0.0' +end + +appraise 'rails71' do + gem 'rails', '~> 7.1.0' +end + appraise 'resque2-redis3' do gem 'redis', '< 4.0' gem 'resque', '>= 2.0' @@ -72,21 +80,12 @@ gem 'http' gem 'httpclient' gem 'rest-client' - gem 'stripe' gem 'typhoeus' end -[2, 3].each do |n| - appraise "opensearch-#{n}" do - gem 'opensearch-ruby', "~> #{n}" - end -end - -[7, 8].each do |n| - appraise "elasticsearch-#{n}" do - gem 'elasticsearch', "~> #{n}" - end -end +build_coverage_matrix('stripe', 7..12, min: '5.15.0') +build_coverage_matrix('opensearch', 2..3, gem: 'opensearch-ruby') +build_coverage_matrix('elasticsearch', 7..8) appraise 'relational_db' do gem 'activerecord', '~> 7' @@ -96,7 +95,7 @@ gem 'mysql2', '>= 0.5.3', platform: :ruby gem 'pg', platform: :ruby gem 'sqlite3', '>= 1.4.2', platform: :ruby - gem 'sequel', '~> 5.54.0' # TODO: Support sequel 5.62.0+ + gem 'sequel' gem 'trilogy' end @@ -129,13 +128,17 @@ end [ + '2.3', '2.2', '2.1', '2.0', '1.13', ].each do |v| appraise "graphql-#{v}" do + gem 'rails', '~> 6.1.0' gem 'graphql', "~> #{v}.0" + gem 'sprockets', '< 4' + gem 'lograge', '~> 0.11' end end @@ -145,13 +148,7 @@ end end -[1, 2, 3].each do |n| - appraise "rack-#{n}" do - gem 'rack', "~> #{n}" - gem 'rack-contrib' - gem 'rack-test' # Dev dependencies for testing rack-based code - end -end +build_coverage_matrix('rack', 1..3, meta: { 'rack-contrib' => nil, 'rack-test' => nil }) [2, 3, 4].each do |n| appraise "sinatra-#{n}" do @@ -165,6 +162,11 @@ gem 'opentelemetry-sdk', '~> 1.1' end +appraise 'opentelemetry_otlp' do + gem 'opentelemetry-sdk', '~> 1.1' + gem 'opentelemetry-exporter-otlp' +end + appraise 'contrib-old' do gem 'dalli', '< 3.0.0' gem 'presto-client', '>= 0.5.14' # Renamed to trino-client in >= 1.0 diff --git a/appraisal/ruby-3.1.rb b/appraisal/ruby-3.1.rb index 6b223997641..f4b00ee4ec0 100644 --- a/appraisal/ruby-3.1.rb +++ b/appraisal/ruby-3.1.rb @@ -50,6 +50,14 @@ gem 'net-smtp' end +appraise 'rails7' do + gem 'rails', '~> 7.0.0' +end + +appraise 'rails71' do + gem 'rails', '~> 7.1.0' +end + appraise 'resque2-redis3' do gem 'redis', '< 4.0' gem 'resque', '>= 2.0' @@ -72,21 +80,12 @@ gem 'http' gem 'httpclient' gem 'rest-client' - gem 'stripe' gem 'typhoeus' end -[2, 3].each do |n| - appraise "opensearch-#{n}" do - gem 'opensearch-ruby', "~> #{n}" - end -end - -[7, 8].each do |n| - appraise "elasticsearch-#{n}" do - gem 'elasticsearch', "~> #{n}" - end -end +build_coverage_matrix('stripe', 7..12, min: '5.15.0') +build_coverage_matrix('opensearch', 2..3, gem: 'opensearch-ruby') +build_coverage_matrix('elasticsearch', 7..8) appraise 'relational_db' do gem 'activerecord', '~> 7' @@ -96,7 +95,7 @@ gem 'mysql2', '>= 0.5.3', platform: :ruby gem 'pg', platform: :ruby gem 'sqlite3', '>= 1.4.2', platform: :ruby - gem 'sequel', '~> 5.54.0' # TODO: Support sequel 5.62.0+ + gem 'sequel' gem 'trilogy' end @@ -129,13 +128,17 @@ end [ + '2.3', '2.2', '2.1', '2.0', '1.13', ].each do |v| appraise "graphql-#{v}" do + gem 'rails', '~> 6.1.0' gem 'graphql', "~> #{v}.0" + gem 'sprockets', '< 4' + gem 'lograge', '~> 0.11' end end @@ -145,13 +148,7 @@ end end -[1, 2, 3].each do |n| - appraise "rack-#{n}" do - gem 'rack', "~> #{n}" - gem 'rack-contrib' - gem 'rack-test' # Dev dependencies for testing rack-based code - end -end +build_coverage_matrix('rack', 1..3, meta: { 'rack-contrib' => nil, 'rack-test' => nil }) [2, 3, 4].each do |n| appraise "sinatra-#{n}" do @@ -165,6 +162,11 @@ gem 'opentelemetry-sdk', '~> 1.1' end +appraise 'opentelemetry_otlp' do + gem 'opentelemetry-sdk', '~> 1.1' + gem 'opentelemetry-exporter-otlp' +end + appraise 'contrib-old' do gem 'dalli', '< 3.0.0' gem 'presto-client', '>= 0.5.14' # Renamed to trino-client in >= 1.0 diff --git a/appraisal/ruby-3.2.rb b/appraisal/ruby-3.2.rb index 6b223997641..f4b00ee4ec0 100644 --- a/appraisal/ruby-3.2.rb +++ b/appraisal/ruby-3.2.rb @@ -50,6 +50,14 @@ gem 'net-smtp' end +appraise 'rails7' do + gem 'rails', '~> 7.0.0' +end + +appraise 'rails71' do + gem 'rails', '~> 7.1.0' +end + appraise 'resque2-redis3' do gem 'redis', '< 4.0' gem 'resque', '>= 2.0' @@ -72,21 +80,12 @@ gem 'http' gem 'httpclient' gem 'rest-client' - gem 'stripe' gem 'typhoeus' end -[2, 3].each do |n| - appraise "opensearch-#{n}" do - gem 'opensearch-ruby', "~> #{n}" - end -end - -[7, 8].each do |n| - appraise "elasticsearch-#{n}" do - gem 'elasticsearch', "~> #{n}" - end -end +build_coverage_matrix('stripe', 7..12, min: '5.15.0') +build_coverage_matrix('opensearch', 2..3, gem: 'opensearch-ruby') +build_coverage_matrix('elasticsearch', 7..8) appraise 'relational_db' do gem 'activerecord', '~> 7' @@ -96,7 +95,7 @@ gem 'mysql2', '>= 0.5.3', platform: :ruby gem 'pg', platform: :ruby gem 'sqlite3', '>= 1.4.2', platform: :ruby - gem 'sequel', '~> 5.54.0' # TODO: Support sequel 5.62.0+ + gem 'sequel' gem 'trilogy' end @@ -129,13 +128,17 @@ end [ + '2.3', '2.2', '2.1', '2.0', '1.13', ].each do |v| appraise "graphql-#{v}" do + gem 'rails', '~> 6.1.0' gem 'graphql', "~> #{v}.0" + gem 'sprockets', '< 4' + gem 'lograge', '~> 0.11' end end @@ -145,13 +148,7 @@ end end -[1, 2, 3].each do |n| - appraise "rack-#{n}" do - gem 'rack', "~> #{n}" - gem 'rack-contrib' - gem 'rack-test' # Dev dependencies for testing rack-based code - end -end +build_coverage_matrix('rack', 1..3, meta: { 'rack-contrib' => nil, 'rack-test' => nil }) [2, 3, 4].each do |n| appraise "sinatra-#{n}" do @@ -165,6 +162,11 @@ gem 'opentelemetry-sdk', '~> 1.1' end +appraise 'opentelemetry_otlp' do + gem 'opentelemetry-sdk', '~> 1.1' + gem 'opentelemetry-exporter-otlp' +end + appraise 'contrib-old' do gem 'dalli', '< 3.0.0' gem 'presto-client', '>= 0.5.14' # Renamed to trino-client in >= 1.0 diff --git a/appraisal/ruby-3.3.rb b/appraisal/ruby-3.3.rb index c7321537153..77faa8ba5c7 100644 --- a/appraisal/ruby-3.3.rb +++ b/appraisal/ruby-3.3.rb @@ -50,6 +50,14 @@ gem 'net-smtp' end +appraise 'rails7' do + gem 'rails', '~> 7.0.0' +end + +appraise 'rails71' do + gem 'rails', '~> 7.1.0' +end + appraise 'resque2-redis3' do gem 'redis', '< 4.0' gem 'resque', '>= 2.0' @@ -72,21 +80,12 @@ gem 'http' gem 'httpclient' gem 'rest-client' - gem 'stripe' gem 'typhoeus' end -[2, 3].each do |n| - appraise "opensearch-#{n}" do - gem 'opensearch-ruby', "~> #{n}" - end -end - -[7, 8].each do |n| - appraise "elasticsearch-#{n}" do - gem 'elasticsearch', "~> #{n}" - end -end +build_coverage_matrix('stripe', 7..12, min: '5.15.0') +build_coverage_matrix('opensearch', 2..3, gem: 'opensearch-ruby') +build_coverage_matrix('elasticsearch', 7..8) appraise 'relational_db' do gem 'activerecord', '~> 7' @@ -96,7 +95,7 @@ gem 'mysql2', '>= 0.5.3', platform: :ruby gem 'pg', platform: :ruby gem 'sqlite3', '>= 1.4.2', platform: :ruby - gem 'sequel', '~> 5.54.0' # TODO: Support sequel 5.62.0+ + gem 'sequel' gem 'trilogy' end @@ -129,24 +128,17 @@ end [ + '2.3', '2.2', '2.1', '2.0', '1.13', ].each do |v| appraise "graphql-#{v}" do + gem 'rails', '~> 6.1.0' gem 'graphql', "~> #{v}.0" - end -end - -[ - '2.2', - '2.1', - '2.0', - '1.13', -].each do |v| - appraise "graphql-#{v}" do - gem 'graphql', "~> #{v}.0" + gem 'sprockets', '< 4' + gem 'lograge', '~> 0.11' end end @@ -156,13 +148,7 @@ end end -[2, 3].each do |n| - appraise "rack-#{n}" do - gem 'rack', "~> #{n}" - gem 'rack-contrib' - gem 'rack-test' # Dev dependencies for testing rack-based code - end -end +build_coverage_matrix('rack', 2..3, meta: { 'rack-contrib' => nil, 'rack-test' => nil }) [2, 3, 4].each do |n| appraise "sinatra-#{n}" do @@ -176,6 +162,11 @@ gem 'opentelemetry-sdk', '~> 1.1' end +appraise 'opentelemetry_otlp' do + gem 'opentelemetry-sdk', '~> 1.1' + gem 'opentelemetry-exporter-otlp' +end + appraise 'contrib-old' do gem 'dalli', '< 3.0.0' gem 'presto-client', '>= 0.5.14' # Renamed to trino-client in >= 1.0 diff --git a/appraisal/ruby-3.4.rb b/appraisal/ruby-3.4.rb index c7321537153..4c0cf60bd99 100644 --- a/appraisal/ruby-3.4.rb +++ b/appraisal/ruby-3.4.rb @@ -50,6 +50,14 @@ gem 'net-smtp' end +appraise 'rails7' do + gem 'rails', '~> 7.0.0' +end + +appraise 'rails71' do + gem 'rails', '~> 7.1.0' +end + appraise 'resque2-redis3' do gem 'redis', '< 4.0' gem 'resque', '>= 2.0' @@ -72,21 +80,12 @@ gem 'http' gem 'httpclient' gem 'rest-client' - gem 'stripe' gem 'typhoeus' end -[2, 3].each do |n| - appraise "opensearch-#{n}" do - gem 'opensearch-ruby', "~> #{n}" - end -end - -[7, 8].each do |n| - appraise "elasticsearch-#{n}" do - gem 'elasticsearch', "~> #{n}" - end -end +build_coverage_matrix('stripe', 7..12, min: '5.15.0') +build_coverage_matrix('opensearch', 2..3, gem: 'opensearch-ruby') +build_coverage_matrix('elasticsearch', 7..8) appraise 'relational_db' do gem 'activerecord', '~> 7' @@ -96,7 +95,7 @@ gem 'mysql2', '>= 0.5.3', platform: :ruby gem 'pg', platform: :ruby gem 'sqlite3', '>= 1.4.2', platform: :ruby - gem 'sequel', '~> 5.54.0' # TODO: Support sequel 5.62.0+ + gem 'sequel' gem 'trilogy' end @@ -129,24 +128,18 @@ end [ + '2.3', '2.2', '2.1', '2.0', '1.13', ].each do |v| appraise "graphql-#{v}" do + gem 'rails', '~> 6.1.0' gem 'graphql', "~> #{v}.0" - end -end - -[ - '2.2', - '2.1', - '2.0', - '1.13', -].each do |v| - appraise "graphql-#{v}" do - gem 'graphql', "~> #{v}.0" + gem 'sprockets', '< 4' + gem 'lograge', '~> 0.11' + gem 'mutex_m', '>= 0.1.0' end end @@ -156,13 +149,7 @@ end end -[2, 3].each do |n| - appraise "rack-#{n}" do - gem 'rack', "~> #{n}" - gem 'rack-contrib' - gem 'rack-test' # Dev dependencies for testing rack-based code - end -end +build_coverage_matrix('rack', 2..3, meta: { 'rack-contrib' => nil, 'rack-test' => nil }) [2, 3, 4].each do |n| appraise "sinatra-#{n}" do @@ -176,6 +163,11 @@ gem 'opentelemetry-sdk', '~> 1.1' end +appraise 'opentelemetry_otlp' do + gem 'opentelemetry-sdk', '~> 1.1' + gem 'opentelemetry-exporter-otlp' +end + appraise 'contrib-old' do gem 'dalli', '< 3.0.0' gem 'presto-client', '>= 0.5.14' # Renamed to trino-client in >= 1.0 diff --git a/benchmarks/README.md b/benchmarks/README.md new file mode 100644 index 00000000000..882d3b00e48 --- /dev/null +++ b/benchmarks/README.md @@ -0,0 +1,25 @@ +# `datadog` Benchmarks + +## Adding a New Benchmark File + +1. Use one of the following prefixes: + + - `library_` + - `profiling_` + - `tracing_` + +2. Add the new file to `run_all.sh` in this directory. + +3. Depending on the prefix, add the new file to the correct + `validate_benchmarks_spec.rb` as follows: + + - `library_` prefix: `spec/validate_benchmarks_spec.rb` + - `profiling_` prefix: `./spec/datadog/profiling/validate_benchmarks_spec.rb` + - `tracing_` prefix: `./spec/datadog/tracing/validate_benchmarks_spec.rb` + +## Adding Benchmarks For a New Product + +1. Create a `validate_benchmarks_spec.rb` test in the product subdirectory, + using the existing files as a template. + +2. Update this README to add the new product in the previous section. diff --git a/benchmarks/benchmarks_helper.rb b/benchmarks/benchmarks_helper.rb new file mode 100644 index 00000000000..5368594c6fb --- /dev/null +++ b/benchmarks/benchmarks_helper.rb @@ -0,0 +1,3 @@ +require 'datadog' +require 'pry' +require_relative 'benchmarks_ips_patch' diff --git a/benchmarks/benchmarks_ips_patch.rb b/benchmarks/benchmarks_ips_patch.rb new file mode 100644 index 00000000000..a7ec63af746 --- /dev/null +++ b/benchmarks/benchmarks_ips_patch.rb @@ -0,0 +1,26 @@ +require 'benchmark/ips' + +module JobReporter + def report(name, *args, **opts, &block) + caller_path = caller_locations.first.path + prefix = File.basename(caller_path).sub(/_.*\z/, '') + name = "#{prefix} - #{name}" + # Older Rubies (e.g. 2.5) do not permit passing *args and &block + # in the same invocation. + if args.any? && block_given? + raise ArgumentError, 'Unsupported usage' + elsif block_given? + if opts.any? + super(name, **opts, &block) + else + super(name, &block) + end + else + super(name, *args, **opts) + end + end +end + +class Benchmark::IPS::Job + prepend JobReporter +end diff --git a/benchmarks/dogstatsd_reporter.rb b/benchmarks/dogstatsd_reporter.rb deleted file mode 100644 index c059271bbe0..00000000000 --- a/benchmarks/dogstatsd_reporter.rb +++ /dev/null @@ -1,83 +0,0 @@ -require 'datadog' -require 'datadog/statsd' -require 'benchmark/ips' -require 'securerandom' - -# Implements a benchmark-ips "suite" that reports benchmark data via DogStatsD -# -# To use it, pass it in as the `suite:` setting when configuring benchmark-ips, e.g.: -# -# ```ruby -# Benchmark.ips do |x| -# x.config(suite: report_to_dogstatsd_if_enabled_via_environment_variable(...settings...)) -# ``` - -REPORTING_DISABLED_ONLY_ONCE = Datadog::Core::Utils::OnlyOnce.new - -def report_to_dogstatsd_if_enabled_via_environment_variable(**args) - if ENV['REPORT_TO_DOGSTATSD'] == 'true' - puts "DogStatsD reporting ✅ enabled" - DogstatsdReporter.new(**args) - else - REPORTING_DISABLED_ONLY_ONCE.run { puts "DogStatsD reporting ❌ disabled" } - nil - end -end - -class DogstatsdReporter - private - - attr_reader :benchmark_name - attr_reader :commit_id - attr_reader :statsd - attr_reader :run_id - - public - - def initialize( - benchmark_name:, - commit_id: commit_id_from_env, - statsd: Datadog::Statsd.new(ENV['DD_AGENT_HOST'] || 'localhost', 8125) - ) - @benchmark_name = benchmark_name - @commit_id = commit_id - @statsd = statsd - @run_id = SecureRandom.uuid - - at_exit { close } - end - - def add_report(report, *_) - puts "Reporting #{report}" - statsd.gauge( - 'perf.benchmark', - report.stats.central_tendency, - tags: to_tags( - 'perf.benchmark.name': benchmark_name, - 'perf.benchmark.report': report.label, - 'perf.benchmark.run_id': run_id, - 'tracer_version': commit_id, - ) - ) - end - - def close - statsd.close - puts "Finished sending data to DogStatsD" - end - - # Unused, but called by benchmark-ips - def warming(a, b); end - def warmup_stats(a, b); end - def running(a, b); end - - private - - def to_tags(hash) - hash.map { |tag, value| "#{tag}:#{value}" } - end - - def commit_id_from_env - ENV.fetch('LATEST_COMMIT_ID') { raise 'Please set the LATEST_COMMIT_ID environment variable when reporting to DogStatsD' } - end -end diff --git a/benchmarks/library_gem_loading.rb b/benchmarks/library_gem_loading.rb new file mode 100644 index 00000000000..b1f8b9695c0 --- /dev/null +++ b/benchmarks/library_gem_loading.rb @@ -0,0 +1,57 @@ +# Used to quickly run benchmark under RSpec as part of the usual test suite, to validate it didn't bitrot +VALIDATE_BENCHMARK_MODE = ENV['VALIDATE_BENCHMARK'] == 'true' + +return unless __FILE__ == $PROGRAM_NAME || VALIDATE_BENCHMARK_MODE + +require_relative 'benchmarks_helper' +require 'open3' + +class GemLoadingBenchmark + def benchmark_gem_loading + # This benchmark needs to be run in a clean environment where datadog is + # not loaded yet. + # + # Now that this benchmark is in its own file, it does not need + # to spawn a subprocess IF we would always execute this benchmark + # file by itself. + output, status = Open3.capture2e('bundle', 'exec', 'ruby', stdin_data: <<-RUBY) + raise "Datadog is already loaded" if defined?(::Datadog::Core) + + lib = File.expand_path('../lib', '#{__dir__}') + $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) + $LOAD_PATH.unshift('#{__dir__}') + + VALIDATE_BENCHMARK_MODE = #{VALIDATE_BENCHMARK_MODE} + require 'benchmark/ips' + + Benchmark.ips do |x| + # Gem loading is quite slower than the other microbenchmarks + benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.001, warmup: 0 } : { time: 60, warmup: 5 } + x.config(**benchmark_time) + + # Because this benchmark is run in a forked process that is passed + # the code via standard input, it cannot figure out the product + # prefix automatically. + x.report("library - Gem loading") do + pid = fork { require 'datadog' } + + _, status = Process.wait2(pid) + raise unless status.success? + end + + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE + x.compare! + end + RUBY + + print output + + raise "Benchmark failed with status #{status}: #{output}" unless status.success? + end +end + +puts "Current pid is #{Process.pid}" + +GemLoadingBenchmark.new.instance_exec do + benchmark_gem_loading +end diff --git a/benchmarks/profiler_allocation.rb b/benchmarks/profiler_allocation.rb new file mode 100644 index 00000000000..8ce9de54c7c --- /dev/null +++ b/benchmarks/profiler_allocation.rb @@ -0,0 +1,61 @@ +# Used to quickly run benchmark under RSpec as part of the usual test suite, to validate it didn't bitrot +VALIDATE_BENCHMARK_MODE = ENV['VALIDATE_BENCHMARK'] == 'true' + +return unless __FILE__ == $PROGRAM_NAME || VALIDATE_BENCHMARK_MODE + +require_relative 'benchmarks_helper' + +# This benchmark measures the performance of allocation profiling + +class ExportToFile + PPROF_PREFIX = ENV.fetch('DD_PROFILING_PPROF_PREFIX', 'profiler-allocation') + + def export(flush) + File.write("#{PPROF_PREFIX}#{flush.start.strftime('%Y%m%dT%H%M%SZ')}.pprof", flush.pprof_data) + true + end +end + +class ProfilerAllocationBenchmark + def run_benchmark + Benchmark.ips do |x| + benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 10, warmup: 2 } + x.config( + **benchmark_time, + ) + + x.report('Allocations (baseline)', 'BasicObject.new') + + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE + x.compare! + end + + Datadog.configure do |c| + c.profiling.enabled = true + c.profiling.allocation_enabled = true + c.profiling.advanced.gc_enabled = false + c.profiling.exporter.transport = ExportToFile.new unless VALIDATE_BENCHMARK_MODE + end + Datadog::Profiling.wait_until_running + + 3.times { GC.start } + + Benchmark.ips do |x| + benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 10, warmup: 2 } + x.config( + **benchmark_time, + ) + + x.report("Allocations (#{ENV['CONFIG']})", 'BasicObject.new') + + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE + x.compare! + end + end +end + +puts "Current pid is #{Process.pid}" + +ProfilerAllocationBenchmark.new.instance_exec do + run_benchmark +end diff --git a/benchmarks/profiler_gc.rb b/benchmarks/profiler_gc.rb index 9597be15d70..e96198cdfba 100644 --- a/benchmarks/profiler_gc.rb +++ b/benchmarks/profiler_gc.rb @@ -3,26 +3,14 @@ return unless __FILE__ == $PROGRAM_NAME || VALIDATE_BENCHMARK_MODE -require 'benchmark/ips' -require 'datadog' -require 'pry' -require_relative 'dogstatsd_reporter' +require_relative 'benchmarks_helper' # This benchmark measures the performance of GC profiling class ProfilerGcBenchmark def create_profiler - @recorder = Datadog::Profiling::StackRecorder.new( - cpu_time_enabled: true, - alloc_samples_enabled: false, - heap_samples_enabled: false, - heap_size_enabled: false, - heap_sample_every: 1, - timeline_enabled: true, - ) - @collector = Datadog::Profiling::Collectors::ThreadContext.new( - recorder: @recorder, max_frames: 400, tracer: nil, endpoint_collection_enabled: false, timeline_enabled: true - ) + @recorder = Datadog::Profiling::StackRecorder.for_testing(timeline_enabled: true) + @collector = Datadog::Profiling::Collectors::ThreadContext.for_testing(recorder: @recorder, timeline_enabled: true) # We take a dummy sample so that the context for the main thread is created, as otherwise the GC profiling methods do # not create it (because we don't want to do memory allocations in the middle of GC) @@ -34,7 +22,6 @@ def run_benchmark benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 10, warmup: 2 } x.config( **benchmark_time, - suite: report_to_dogstatsd_if_enabled_via_environment_variable(benchmark_name: 'profiler_gc') ) # The idea of this benchmark is to test the overall cost of the Ruby VM calling these methods on every GC. @@ -42,10 +29,10 @@ def run_benchmark x.report('profiler gc') do Datadog::Profiling::Collectors::ThreadContext::Testing._native_on_gc_start(@collector) Datadog::Profiling::Collectors::ThreadContext::Testing._native_on_gc_finish(@collector) - Datadog::Profiling::Collectors::ThreadContext::Testing._native_sample_after_gc(@collector) + Datadog::Profiling::Collectors::ThreadContext::Testing._native_sample_after_gc(@collector, false) end - x.save! 'profiler-gc-results.json' unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end @@ -53,7 +40,6 @@ def run_benchmark benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 10, warmup: 2 } x.config( **benchmark_time, - suite: report_to_dogstatsd_if_enabled_via_environment_variable(benchmark_name: 'profiler_gc_minute') ) # We cap the number of minor GC samples to not happen more often than TIME_BETWEEN_GC_EVENTS_NS (10) @@ -66,13 +52,13 @@ def run_benchmark estimated_gc_per_minute.times do Datadog::Profiling::Collectors::ThreadContext::Testing._native_on_gc_start(@collector) Datadog::Profiling::Collectors::ThreadContext::Testing._native_on_gc_finish(@collector) - Datadog::Profiling::Collectors::ThreadContext::Testing._native_sample_after_gc(@collector) + Datadog::Profiling::Collectors::ThreadContext::Testing._native_sample_after_gc(@collector, false) end @recorder.serialize end - x.save! 'profiler-gc-minute-results.json' unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end @@ -80,12 +66,11 @@ def run_benchmark benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 10, warmup: 2 } x.config( **benchmark_time, - suite: report_to_dogstatsd_if_enabled_via_environment_variable(benchmark_name: 'profiler_gc_integration') ) x.report('Major GC runs (profiling disabled)', 'GC.start') - x.save! 'profiler-gc-integration-results.json' unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end @@ -100,12 +85,11 @@ def run_benchmark benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 10, warmup: 2 } x.config( **benchmark_time, - suite: report_to_dogstatsd_if_enabled_via_environment_variable(benchmark_name: 'profiler_gc_integration') ) x.report('Major GC runs (profiling enabled)', 'GC.start') - x.save! 'profiler-gc-integration-results.json' unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end @@ -115,12 +99,11 @@ def run_benchmark benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 10, warmup: 2 } x.config( **benchmark_time, - suite: report_to_dogstatsd_if_enabled_via_environment_variable(benchmark_name: 'profiler_gc_integration_allocations') ) x.report('Allocations (profiling disabled)', 'Object.new') - x.save! 'profiler-gc-integration-allocations-results.json' unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end @@ -135,12 +118,11 @@ def run_benchmark benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 10, warmup: 2 } x.config( **benchmark_time, - suite: report_to_dogstatsd_if_enabled_via_environment_variable(benchmark_name: 'profiler_gc_integration_allocations') ) x.report('Allocations (profiling enabled)', 'Object.new') - x.save! 'profiler-gc-integration-allocations-results.json' unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end diff --git a/benchmarks/profiler_hold_resume_interruptions.rb b/benchmarks/profiler_hold_resume_interruptions.rb index 02f22dfca06..b47bf7feda5 100644 --- a/benchmarks/profiler_hold_resume_interruptions.rb +++ b/benchmarks/profiler_hold_resume_interruptions.rb @@ -3,10 +3,7 @@ return unless __FILE__ == $PROGRAM_NAME || VALIDATE_BENCHMARK_MODE -require 'benchmark/ips' -require 'datadog' -require 'pry' -require_relative 'dogstatsd_reporter' +require_relative 'benchmarks_helper' # This benchmark measures the performance of the hold/resume interruptions used by the DirMonkeyPatches class ProfilerHoldResumeInterruptions @@ -22,7 +19,6 @@ def run_benchmark benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 10, warmup: 2 } x.config( **benchmark_time, - suite: report_to_dogstatsd_if_enabled_via_environment_variable(benchmark_name: 'profiler_hold_resume_interruptions') ) x.report("hold / resume") do @@ -30,7 +26,7 @@ def run_benchmark Datadog::Profiling::Collectors::CpuAndWallTimeWorker._native_resume_signals end - x.save! 'profiler_hold_resume_interruptions-results.json' unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end end diff --git a/benchmarks/profiler_http_transport.rb b/benchmarks/profiler_http_transport.rb index 871ec568c5c..5591372efff 100644 --- a/benchmarks/profiler_http_transport.rb +++ b/benchmarks/profiler_http_transport.rb @@ -3,12 +3,9 @@ return unless __FILE__ == $PROGRAM_NAME || VALIDATE_BENCHMARK_MODE -require 'benchmark/ips' -require 'datadog' -require 'pry' +require_relative 'benchmarks_helper' require 'securerandom' require 'socket' -require_relative 'dogstatsd_reporter' # This benchmark measures the performance of the http_transport class used for reporting profiling data # @@ -81,25 +78,17 @@ def run_benchmark benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 70, warmup: 2 } x.config( **benchmark_time, - suite: report_to_dogstatsd_if_enabled_via_environment_variable(benchmark_name: 'profiler_http_transport') ) x.report("http_transport #{ENV['CONFIG']}") do run_once end - x.save! 'profiler-http-transport-results.json' unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end end - def run_forever - while true - 100.times { run_once } - print '.' - end - end - def run_once success = @transport.export(@flush) @@ -110,9 +99,5 @@ def run_once puts "Current pid is #{Process.pid}" ProfilerHttpTransportBenchmark.new.instance_exec do - if ARGV.include?('--forever') - run_forever - else - run_benchmark - end + run_benchmark end diff --git a/benchmarks/profiler_memory_sample_serialize.rb b/benchmarks/profiler_memory_sample_serialize.rb index 29191c4075d..e7725c2a77d 100644 --- a/benchmarks/profiler_memory_sample_serialize.rb +++ b/benchmarks/profiler_memory_sample_serialize.rb @@ -3,10 +3,7 @@ return unless __FILE__ == $PROGRAM_NAME || VALIDATE_BENCHMARK_MODE -require 'benchmark/ips' -require 'datadog' -require 'pry' -require_relative 'dogstatsd_reporter' +require_relative 'benchmarks_helper' require 'libdatadog' @@ -33,8 +30,6 @@ def sample_object(recorder, depth = 0) METRIC_VALUES, [], [], - 400, - false ) obj else @@ -50,7 +45,7 @@ def setup @retain_every = (ENV['RETAIN_EVERY'] || '10').to_i @skip_end_gc = ENV['SKIP_END_GC'] == 'true' @recorder_factory = proc { - Datadog::Profiling::StackRecorder.new( + Datadog::Profiling::StackRecorder.for_testing( cpu_time_enabled: false, alloc_samples_enabled: true, heap_samples_enabled: @heap_samples_enabled, @@ -66,7 +61,6 @@ def run_benchmark benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 30, warmup: 2 } x.config( **benchmark_time, - suite: report_to_dogstatsd_if_enabled_via_environment_variable(benchmark_name: 'profiler_memory_sample_serialize') ) x.report("sample+serialize #{ENV['CONFIG']} retain_every=#{@retain_every} heap_samples=#{@heap_samples_enabled} heap_size=#{@heap_size_enabled} heap_sample_every=#{@heap_sample_every} skip_end_gc=#{@skip_end_gc}") do @@ -85,30 +79,15 @@ def run_benchmark recorder.serialize end - x.save! 'profiler_memory_sample_serialize-results.json' unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end end - - def run_forever - loop do - recorder = @recorder_factory.call - 1000.times do |i| - sample_object(recorder, i % 400) - end - recorder.serialize - print '.' - end - end end puts "Current pid is #{Process.pid}" ProfilerMemorySampleSerializeBenchmark.new.instance_exec do setup - if ARGV.include?('--forever') - run_forever - else - run_benchmark - end + run_benchmark end diff --git a/benchmarks/profiler_sample_gvl.rb b/benchmarks/profiler_sample_gvl.rb new file mode 100644 index 00000000000..76e8528f417 --- /dev/null +++ b/benchmarks/profiler_sample_gvl.rb @@ -0,0 +1,79 @@ +# Used to quickly run benchmark under RSpec as part of the usual test suite, to validate it didn't bitrot +VALIDATE_BENCHMARK_MODE = ENV['VALIDATE_BENCHMARK'] == 'true' + +return unless __FILE__ == $PROGRAM_NAME || VALIDATE_BENCHMARK_MODE + +require_relative 'benchmarks_helper' + +if RUBY_VERSION < '3.2' + if VALIDATE_BENCHMARK_MODE + # To simplify things, we allow this benchmark to be run in VALIDATE_BENCHMARK_MODE even though it's a no-op + $stderr.puts "Skipping benchmark because it requires Ruby 3.2 or newer" + return + else + raise 'This benchmark requires Ruby 3.2 or newer' + end +end + +# This benchmark measures the performance of the main stack sampling loop of the profiler + +class ProfilerSampleGvlBenchmark + # This is needed because we're directly invoking the collector through a testing interface; in normal + # use a profiler thread is automatically used. + PROFILER_OVERHEAD_STACK_THREAD = Thread.new { sleep } + + def initialize + create_profiler + @target_thread = thread_with_very_deep_stack + + # Sample once to trigger thread context creation for all threads (including @target_thread) + Datadog::Profiling::Collectors::ThreadContext::Testing._native_sample(@collector, PROFILER_OVERHEAD_STACK_THREAD) + end + + def create_profiler + @recorder = Datadog::Profiling::StackRecorder.for_testing(timeline_enabled: true) + @collector = Datadog::Profiling::Collectors::ThreadContext.for_testing( + recorder: @recorder, + waiting_for_gvl_threshold_ns: 0, + timeline_enabled: true, + ) + end + + def thread_with_very_deep_stack(depth: 200) + deep_stack = proc do |n| + if n > 0 + deep_stack.call(n - 1) + else + sleep + end + end + + Thread.new { deep_stack.call(depth) }.tap { |t| t.name = "Deep stack #{depth}" } + end + + def run_benchmark + Benchmark.ips do |x| + benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 20, warmup: 2 } + x.config( + **benchmark_time, + ) + + x.report("gvl benchmark samples") do + Datadog::Profiling::Collectors::ThreadContext::Testing._native_on_gvl_waiting(@target_thread) + Datadog::Profiling::Collectors::ThreadContext::Testing._native_on_gvl_running(@target_thread) + Datadog::Profiling::Collectors::ThreadContext::Testing._native_sample_after_gvl_running(@collector, @target_thread) + end + + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE + x.compare! + end + + @recorder.serialize! + end +end + +puts "Current pid is #{Process.pid}" + +ProfilerSampleGvlBenchmark.new.instance_exec do + run_benchmark +end diff --git a/benchmarks/profiler_sample_loop_v2.rb b/benchmarks/profiler_sample_loop_v2.rb index a61120c964c..e007375cf6c 100644 --- a/benchmarks/profiler_sample_loop_v2.rb +++ b/benchmarks/profiler_sample_loop_v2.rb @@ -3,10 +3,7 @@ return unless __FILE__ == $PROGRAM_NAME || VALIDATE_BENCHMARK_MODE -require 'benchmark/ips' -require 'datadog' -require 'pry' -require_relative 'dogstatsd_reporter' +require_relative 'benchmarks_helper' # This benchmark measures the performance of the main stack sampling loop of the profiler @@ -16,17 +13,8 @@ class ProfilerSampleLoopBenchmark PROFILER_OVERHEAD_STACK_THREAD = Thread.new { sleep } def create_profiler - @recorder = Datadog::Profiling::StackRecorder.new( - cpu_time_enabled: true, - alloc_samples_enabled: false, - heap_samples_enabled: false, - heap_size_enabled: false, - heap_sample_every: 1, - timeline_enabled: false, - ) - @collector = Datadog::Profiling::Collectors::ThreadContext.new( - recorder: @recorder, max_frames: 400, tracer: nil, endpoint_collection_enabled: false, timeline_enabled: false - ) + @recorder = Datadog::Profiling::StackRecorder.for_testing + @collector = Datadog::Profiling::Collectors::ThreadContext.for_testing(recorder: @recorder) end def thread_with_very_deep_stack(depth: 500) @@ -46,29 +34,18 @@ def run_benchmark benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 10, warmup: 2 } x.config( **benchmark_time, - suite: report_to_dogstatsd_if_enabled_via_environment_variable(benchmark_name: 'profiler_sample_loop_v2') ) x.report("stack collector #{ENV['CONFIG']}") do Datadog::Profiling::Collectors::ThreadContext::Testing._native_sample(@collector, PROFILER_OVERHEAD_STACK_THREAD) end - x.save! 'profiler-sample-loop-v2-results.json' unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end @recorder.serialize end - - def run_forever - while true - 1000.times do - Datadog::Profiling::Collectors::ThreadContext::Testing._native_sample(@collector, PROFILER_OVERHEAD_STACK_THREAD) - end - @recorder.serialize - print '.' - end - end end puts "Current pid is #{Process.pid}" @@ -76,9 +53,5 @@ def run_forever ProfilerSampleLoopBenchmark.new.instance_exec do create_profiler 4.times { thread_with_very_deep_stack } - if ARGV.include?('--forever') - run_forever - else - run_benchmark - end + run_benchmark end diff --git a/benchmarks/profiler_sample_serialize.rb b/benchmarks/profiler_sample_serialize.rb index 341546f3d32..47ae1b6854a 100644 --- a/benchmarks/profiler_sample_serialize.rb +++ b/benchmarks/profiler_sample_serialize.rb @@ -3,10 +3,7 @@ return unless __FILE__ == $PROGRAM_NAME || VALIDATE_BENCHMARK_MODE -require 'benchmark/ips' -require 'datadog' -require 'pry' -require_relative 'dogstatsd_reporter' +require_relative 'benchmarks_helper' require 'libdatadog' @@ -22,25 +19,15 @@ class ProfilerSampleSerializeBenchmark def create_profiler timeline_enabled = ENV['TIMELINE'] == 'true' - @recorder = Datadog::Profiling::StackRecorder.new( - cpu_time_enabled: true, - alloc_samples_enabled: false, - heap_samples_enabled: false, - heap_size_enabled: false, - heap_sample_every: 1, - timeline_enabled: timeline_enabled, - ) - @collector = Datadog::Profiling::Collectors::ThreadContext.new( - recorder: @recorder, max_frames: 400, tracer: nil, endpoint_collection_enabled: false, timeline_enabled: timeline_enabled - ) + @recorder = Datadog::Profiling::StackRecorder.for_testing(timeline_enabled: timeline_enabled) + @collector = Datadog::Profiling::Collectors::ThreadContext.for_testing(recorder: @recorder, timeline_enabled: timeline_enabled) end def run_benchmark Benchmark.ips do |x| - benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 10, warmup: 2 } + benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.01, warmup: 0 } : { time: 60, warmup: 2 } x.config( **benchmark_time, - suite: report_to_dogstatsd_if_enabled_via_environment_variable(benchmark_name: 'profiler_sample_serialize') ) x.report("sample #{ENV['CONFIG']} timeline=#{ENV['TIMELINE'] == 'true'}") do @@ -55,22 +42,12 @@ def run_benchmark nil end - x.save! 'profiler_sample_serialize-results.json' unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end @recorder.serialize end - - def run_forever - while true - 1000.times do - Datadog::Profiling::Collectors::ThreadContext::Testing._native_sample(@collector, PROFILER_OVERHEAD_STACK_THREAD) - end - @recorder.serialize - print '.' - end - end end puts "Current pid is #{Process.pid}" @@ -78,9 +55,5 @@ def run_forever ProfilerSampleSerializeBenchmark.new.instance_exec do create_profiler 10.times { Thread.new { sleep } } - if ARGV.include?('--forever') - run_forever - else - run_benchmark - end + run_benchmark end diff --git a/benchmarks/run_all.sh b/benchmarks/run_all.sh new file mode 100755 index 00000000000..568e93fc6b8 --- /dev/null +++ b/benchmarks/run_all.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# This script is invoked by benchmarking-platform shell scripts +# to run all of the benchmarks defined in the tracer. + +set -ex + +for file in \ + `dirname "$0"`/library_gem_loading.rb \ + `dirname "$0"`/profiler_allocation.rb \ + `dirname "$0"`/profiler_gc.rb \ + `dirname "$0"`/profiler_hold_resume_interruptions.rb \ + `dirname "$0"`/profiler_http_transport.rb \ + `dirname "$0"`/profiler_memory_sample_serialize.rb \ + `dirname "$0"`/profiler_sample_loop_v2.rb \ + `dirname "$0"`/profiler_sample_serialize.rb \ + `dirname "$0"`/profiler_sample_gvl.rb \ + `dirname "$0"`/tracing_trace.rb; +do + bundle exec ruby "$file" +done diff --git a/benchmarks/tracing_trace.rb b/benchmarks/tracing_trace.rb index ec9420b4aa7..35d1ec8bfae 100644 --- a/benchmarks/tracing_trace.rb +++ b/benchmarks/tracing_trace.rb @@ -3,9 +3,7 @@ return unless __FILE__ == $PROGRAM_NAME || VALIDATE_BENCHMARK_MODE -require 'benchmark/ips' -require 'open3' -require 'datadog' +require_relative 'benchmarks_helper' class TracingTraceBenchmark module NoopWriter @@ -47,7 +45,7 @@ def trace(x, depth) trace(x, 10) trace(x, 100) - x.save! "#{__FILE__}-results.json" unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end end @@ -75,7 +73,7 @@ def trace(x, depth) trace(x, 10) trace(x, 100) - x.save! "#{__FILE__}-results.json" unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end end @@ -89,7 +87,7 @@ def benchmark_to_digest trace.to_digest end - x.save! "#{__FILE__}-results.json" unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end end @@ -104,7 +102,7 @@ def benchmark_log_correlation Datadog::Tracing.log_correlation end - x.save! "#{__FILE__}-results.json" unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end end @@ -120,7 +118,7 @@ def benchmark_to_digest_continue Datadog::Tracing.continue_trace!(digest) end - x.save! "#{__FILE__}-results.json" unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end end @@ -149,7 +147,7 @@ def benchmark_propagation_datadog raise unless extracted_trace_digest end - x.save! "#{__FILE__}-results.json" unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end end @@ -172,44 +170,11 @@ def benchmark_propagation_trace_context raise unless extracted_trace_digest end - x.save! "#{__FILE__}-results.json" unless VALIDATE_BENCHMARK_MODE + x.save! "#{File.basename(__FILE__)}-results.json" unless VALIDATE_BENCHMARK_MODE x.compare! end end end - - def benchmark_gem_loading - # This benchmark needs to be run in a clean environment where datadog is not loaded yet - output, status = Open3.capture2e('bundle', 'exec', 'ruby', stdin_data: <<-RUBY) - raise "Datadog is already loaded" if defined?(::Datadog::Core) - - lib = File.expand_path('../lib', '#{__dir__}') - $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) - - VALIDATE_BENCHMARK_MODE = #{VALIDATE_BENCHMARK_MODE} - require 'benchmark/ips' - - Benchmark.ips do |x| - # Gem loading is quite slower than the other microbenchmarks - benchmark_time = VALIDATE_BENCHMARK_MODE ? { time: 0.001, warmup: 0 } : { time: 60, warmup: 5 } - x.config(**benchmark_time) - - x.report("Gem loading") do - pid = fork { require 'datadog' } - - _, status = Process.wait2(pid) - raise unless status.success? - end - - x.save! "#{__FILE__}-results.json" unless VALIDATE_BENCHMARK_MODE - x.compare! - end - RUBY - - print output - - raise "Benchmark failed with status #{status}: #{output}" unless status.success? - end end puts "Current pid is #{Process.pid}" @@ -230,5 +195,4 @@ def run_benchmark(&block) run_benchmark { benchmark_to_digest_continue } run_benchmark { benchmark_propagation_datadog } run_benchmark { benchmark_propagation_trace_context } - run_benchmark { benchmark_gem_loading } end diff --git a/datadog.gemspec b/datadog.gemspec index ac7ac28c5b6..1379ca1506b 100644 --- a/datadog.gemspec +++ b/datadog.gemspec @@ -64,15 +64,18 @@ Gem::Specification.new do |spec| # Used by the profiler native extension to support Ruby < 2.6 and > 3.2 # # We decided to pin it at the latest available version and will manually bump the dependency as needed. - spec.add_dependency 'debase-ruby_core_source', '= 3.3.1' + spec.add_dependency 'datadog-ruby_core_source', '= 3.3.6' # Used by appsec spec.add_dependency 'libddwaf', '~> 1.14.0.0.0' - # Used by profiling (and possibly others in the future) - # When updating the version here, please also update the version in `native_extension_helpers.rb` + # When updating the version here, please also update the version in `libdatadog_extconf_helpers.rb` # (and yes we have a test for it) - spec.add_dependency 'libdatadog', '~> 10.0.0.1.0' + spec.add_dependency 'libdatadog', '~> 13.1.0.1.0' - spec.extensions = ['ext/datadog_profiling_native_extension/extconf.rb', 'ext/datadog_profiling_loader/extconf.rb'] + spec.extensions = [ + 'ext/datadog_profiling_native_extension/extconf.rb', + 'ext/datadog_profiling_loader/extconf.rb', + 'ext/libdatadog_api/extconf.rb' + ] end diff --git a/default.nix b/default.nix new file mode 100644 index 00000000000..fb3934b8045 --- /dev/null +++ b/default.nix @@ -0,0 +1,11 @@ +# flake-compat shim for usage without flakes +(import + ( + let lock = builtins.fromJSON (builtins.readFile ./flake.lock); in + fetchTarball { + url = lock.nodes.flake-compat.locked.url or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; + sha256 = lock.nodes.flake-compat.locked.narHash; + } + ) + { src = ./.; } +).defaultNix diff --git a/docker-compose.yml b/docker-compose.yml index 1bf7b6d89e6..d912ce7bc8d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,9 +1,8 @@ -version: '3.2' services: tracer-2.5: image: ghcr.io/datadog/dd-trace-rb/ruby:2.5.9-dd command: /bin/bash - depends_on: + depends_on: &common-depends-on - ddagent - elasticsearch - memcached @@ -28,7 +27,6 @@ services: TEST_OPENSEARCH_PORT: 9200 TEST_POSTGRES_HOST: postgres TEST_PRESTO_HOST: presto - TEST_PRESTO_PORT: 8080 TEST_REDIS_HOST: redis DATADOG_GEM_CI: 'true' stdin_open: true @@ -41,17 +39,7 @@ services: tracer-2.6: image: ghcr.io/datadog/dd-trace-rb/ruby:2.6.10-dd command: /bin/bash - depends_on: - - ddagent - - elasticsearch - - memcached - - mongodb - - mysql - - opensearch - - postgres - - presto - - redis - - testagent + depends_on: *common-depends-on env_file: ./.env environment: <<: *common-environment @@ -66,17 +54,7 @@ services: tracer-2.7: image: ghcr.io/datadog/dd-trace-rb/ruby:2.7.6-dd command: /bin/bash - depends_on: - - ddagent - - elasticsearch - - memcached - - mongodb - - mysql - - opensearch - - postgres - - presto - - redis - - testagent + depends_on: *common-depends-on env_file: ./.env environment: <<: *common-environment @@ -91,32 +69,11 @@ services: tracer-3.0: image: ghcr.io/datadog/dd-trace-rb/ruby:3.0.4-dd command: /bin/bash - depends_on: - - ddagent - - elasticsearch - - memcached - - mongodb - - mysql - - opensearch - - postgres - - presto - - redis - - testagent + depends_on: *common-depends-on env_file: ./.env - environment: &common-environment-3x + environment: + <<: *common-environment BUNDLE_GEMFILE: /app/Gemfile-3.0 - DD_AGENT_HOST: testagent - DD_TRACE_AGENT_PORT: 9126 - TEST_DATADOG_INTEGRATION: 1 - TEST_ELASTICSEARCH_HOST: elasticsearch - TEST_MEMCACHED_HOST: memcached - TEST_MONGODB_HOST: mongodb - TEST_MYSQL_HOST: mysql - TEST_OPENSEARCH_HOST: opensearch - TEST_OPENSEARCH_PORT: 9200 - TEST_POSTGRES_HOST: postgres - TEST_REDIS_HOST: redis - DATADOG_GEM_CI: 'true' stdin_open: true tty: true volumes: @@ -127,20 +84,10 @@ services: tracer-3.1: image: ghcr.io/datadog/dd-trace-rb/ruby:3.1.2-dd command: /bin/bash - depends_on: - - ddagent - - elasticsearch - - memcached - - mongodb - - mysql - - opensearch - - postgres - - presto - - redis - - testagent + depends_on: *common-depends-on env_file: ./.env environment: - <<: *common-environment-3x + <<: *common-environment BUNDLE_GEMFILE: /app/Gemfile-3.1 stdin_open: true tty: true @@ -152,20 +99,10 @@ services: tracer-3.2: image: ghcr.io/datadog/dd-trace-rb/ruby:3.2.0-dd command: /bin/bash - depends_on: - - ddagent - - elasticsearch - - memcached - - mongodb - - mysql - - opensearch - - postgres - - presto - - redis - - testagent + depends_on: *common-depends-on env_file: ./.env environment: - <<: *common-environment-3x + <<: *common-environment BUNDLE_GEMFILE: /app/Gemfile-3.2 stdin_open: true tty: true @@ -177,20 +114,10 @@ services: tracer-3.3: image: ghcr.io/datadog/dd-trace-rb/ruby:3.3.0-dd command: /bin/bash - depends_on: - - ddagent - - elasticsearch - - memcached - - mongodb - - mysql - - opensearch - - postgres - - presto - - redis - - testagent + depends_on: *common-depends-on env_file: ./.env environment: - <<: *common-environment-3x + <<: *common-environment BUNDLE_GEMFILE: /app/Gemfile-3.3 stdin_open: true tty: true @@ -202,20 +129,10 @@ services: tracer-3.4: image: ghcr.io/datadog/dd-trace-rb/ruby:3.4.0-dd command: /bin/bash - depends_on: - - ddagent - - elasticsearch - - memcached - - mongodb - - mysql - - opensearch - - postgres - - presto - - redis - - testagent + depends_on: *common-depends-on env_file: ./.env environment: - <<: *common-environment-3x + <<: *common-environment BUNDLE_GEMFILE: /app/Gemfile-3.4 stdin_open: true tty: true @@ -228,17 +145,7 @@ services: tracer-jruby-9.2: image: ghcr.io/datadog/dd-trace-rb/jruby:9.2.21.0-dd command: /bin/bash - depends_on: - - ddagent - - elasticsearch - - memcached - - mongodb - - mysql - - opensearch - - postgres - - presto - - redis - - testagent + depends_on: *common-depends-on env_file: ./.env environment: <<: *common-environment @@ -252,17 +159,7 @@ services: tracer-jruby-9.3: image: ghcr.io/datadog/dd-trace-rb/jruby:9.3.9.0-dd command: /bin/bash - depends_on: - - ddagent - - elasticsearch - - memcached - - mongodb - - mysql - - opensearch - - postgres - - presto - - redis - - testagent + depends_on: *common-depends-on env_file: ./.env environment: <<: *common-environment @@ -276,17 +173,7 @@ services: tracer-jruby-9.4: image: ghcr.io/datadog/dd-trace-rb/jruby:9.4.7.0-dd command: /bin/bash - depends_on: - - ddagent - - elasticsearch - - memcached - - mongodb - - mysql - - opensearch - - postgres - - presto - - redis - - testagent + depends_on: *common-depends-on env_file: ./.env environment: <<: *common-environment @@ -316,7 +203,7 @@ services: - ddagent_var_run:/var/run/datadog testagent: - image: ghcr.io/datadog/dd-apm-test-agent/ddapm-test-agent:v1.12.0 + image: ghcr.io/datadog/dd-apm-test-agent/ddapm-test-agent:v1.18.0 ports: - "127.0.0.1:${DD_TRACE_AGENT_PORT}:9126" depends_on: diff --git a/docs/DevelopmentGuide.md b/docs/DevelopmentGuide.md index 62dc9a82f7f..458f2883536 100644 --- a/docs/DevelopmentGuide.md +++ b/docs/DevelopmentGuide.md @@ -53,22 +53,22 @@ All tests should run in CI. When adding new `_spec.rb` files, you may need to ad ```ruby namespace :spec do RSpec::Core::RakeTask.new(:foo) do |t, args| - t.pattern = "spec/datadog/tracing/contrib/bar/**/*_spec.rb" + t.pattern = "spec/datadog/tracing/contrib/foo/**/*_spec.rb" t.rspec_opts = args.to_a.join(' ') end end ``` - - Ensure the Rake task is configured to run for the appropriate Ruby runtimes, by introducing it to our test matrix. You should find the task with `bundle exec rake -T test:`. + - Ensure the Rake task is configured to run for the appropriate Ruby runtimes, by adding it to our `Matrixfile`. You should find the task with `bundle exec rake -T test:foo` after adding it. ```ruby - TEST_METADATA = { + { 'foo' => { # Without any appraisal group dependencies '' => '✅ 2.1 / ✅ 2.2 / ✅ 2.3 / ✅ 2.4 / ✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ jruby', - # or with appraisal group definition `bar` - 'bar' => '✅ 2.1 / ✅ 2.2 / ✅ 2.3 / ✅ 2.4 / ✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ jruby' + # or with appraisal group definition `foo-on-rails`, that includes additional gems + 'foo-on-rails' => '✅ 2.1 / ✅ 2.2 / ✅ 2.3 / ✅ 2.4 / ✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ jruby' }, } ``` @@ -117,7 +117,7 @@ After introducing a new group definition or changing existing one, run `bundle e To install dependencies, run `bundle exec appraisal install`. -In addition, if you already know which appraisal group definition to work with, you can target a specific group operation with environment vairable `APPRAISAL_GROUP`, instead of all the groups from your environment. For example: +In addition, if you already know which appraisal group definition to work with, you can target a specific group operation with environment variable `APPRAISAL_GROUP`, instead of all the groups from your environment. For example: ``` # This would only install dependencies for `aws` group definition diff --git a/docs/GettingStarted.md b/docs/GettingStarted.md index 38eb64ab2ea..8a1196fa138 100644 --- a/docs/GettingStarted.md +++ b/docs/GettingStarted.md @@ -738,7 +738,7 @@ connection.get | `peer_service` | `DD_TRACE_EXCON_PEER_SERVICE` | `String` | Name of external service the application connects to | `nil` | | `distributed_tracing` | | `Bool` | Enables [distributed tracing](#distributed-tracing) | `true` | | `split_by_domain` | | `Bool` | Uses the request domain as the service name when set to `true`. | `false` | -| `on_error` | | `Proc` | Custom error handler invoked when a request raises an error. Provided `span` and `error` as arguments. Sets error on the span by deault. | `proc { \|span, error\| span.set_error(error) unless span.nil? }` | +| `on_error` | | `Proc` | Custom error handler invoked when a request raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. | `proc { \|span, error\| span.set_error(error) unless span.nil? }` | | `error_status_codes` | `DD_TRACE_EXCON_ERROR_STATUS_CODES` | `Array`\|`Range` | Defines HTTP status codes that are traced as errors. Value can be a range (`400...600`), or an array of ranges/integers `[403, 500...600]`. If configured with environment variable, use dash for range (`'400-599'`) and comma for adding element into an array (`'403,500-599'`) | `400...600` | **Configuring connections to use different settings** @@ -803,7 +803,7 @@ connection.get('/foo') | `peer_service` | `DD_TRACE_FARADAY_PEER_SERVICE` | `String` | Name of external service the application connects to | `nil` | | `distributed_tracing` | | `Bool` | Enables [distributed tracing](#distributed-tracing) | `true` | | `split_by_domain` | | `Bool` | Uses the request domain as the service name when set to `true`. | `false` | -| `on_error` | | `Proc` | Custom error handler invoked when a request raises an error. Provided `span` and `error` as arguments. Sets an error on the span by deault. | `proc { \|span, error\| span.set_error(error) unless span.nil? }` | +| `on_error` | | `Proc` | Custom error handler invoked when a request raises an error. Provided `span` and `error` as arguments. Sets an error on the span by default. | `proc { \|span, error\| span.set_error(error) unless span.nil? }` | | `error_status_codes` | `DD_TRACE_FARADAY_ERROR_STATUS_CODES` | `Array`\|`Range` | Defines HTTP status codes that are traced as errors. Value can be a range (`400...600`), or an array of ranges/integers `[403, 500...600]`. If configured with environment variable, use dash for range (`'400-599'`) and comma for adding element into an array (`'403,500-599'`) | `400...600` | ### Grape @@ -845,8 +845,14 @@ To activate your integration, use the `Datadog.configure` method: ```ruby # Inside Rails initializer or equivalent +# For graphql >= v2.2 Datadog.configure do |c| - c.tracing.instrument :graphql, schemas: [YourSchema], **options + c.tracing.instrument :graphql, with_unified_tracer: true, **options +end + +# For graphql < v2.2 +Datadog.configure do |c| + c.tracing.instrument :graphql, **options end # Then run a GraphQL query @@ -855,35 +861,42 @@ YourSchema.execute(query, variables: {}, context: {}, operation_name: nil) The `instrument :graphql` method accepts the following parameters. Additional options can be substituted in for `options`: -| Key | Env Var | Type | Description | Default | -| ------------------------ | - | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------- | -| `enabled` | `DD_TRACE_GRAPHQL_ENABLED` | `Bool` | Whether the integration should create spans. | `true` | -| `schemas` | | `Array` | Array of `GraphQL::Schema` objects (that support class-based schema only) to trace. If you do not provide any, then tracing will applied to all the schemas. | `[]` | -| `with_unified_tracer` | | `Bool` | Enable to instrument with `UnifiedTrace` tracer, enabling support for API Catalog. `with_deprecated_tracer` has priority over this. Default is `false`, using `GraphQL::Tracing::DataDogTrace` (Added in v2.2) | `false` | -| `with_deprecated_tracer` | | `Bool` | Enable to instrument with deprecated `GraphQL::Tracing::DataDogTracing`. Default is `false`, using `GraphQL::Tracing::DataDogTrace` | `false` | -| `service_name` | | `String` | Service name used for graphql instrumentation | `'ruby-graphql'` | +| Key | Env Var | Type | Description | Default | +| ------------------------ | -------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | +| `enabled` | `DD_TRACE_GRAPHQL_ENABLED` | `Bool` | Whether the integration should create spans. | `true` | +| `schemas` | | `Array` | Array of `GraphQL::Schema` objects (that support class-based schema only) to trace. If you do not provide any, then tracing will applied to all the schemas. | `[]` | +| `with_unified_tracer` | | `Bool` | (Recommended) Enable to instrument with `UnifiedTrace` tracer for `graphql` >= v2.2, **enabling support for API Catalog**. `with_deprecated_tracer` has priority over this. Default is `false`, using `GraphQL::Tracing::DataDogTrace` instead | `false` | +| `with_deprecated_tracer` | | `Bool` | Enable to instrument with deprecated `GraphQL::Tracing::DataDogTracing`. This has priority over `with_unified_tracer`. Default is `false`, using `GraphQL::Tracing::DataDogTrace` instead | `false` | +| `service_name` | | `String` | Service name used for graphql instrumentation | `'ruby-graphql'` | + +Once an instrumentation strategy is selected (`with_unified_tracer: true`, `with_deprecated_tracer: true`, or *no option set* which defaults to `GraphQL::Tracing::DataDogTrace`), it is not possible to change the instrumentation strategy in the same Ruby process. +This is especially important for [auto instrumented applications](#rails-or-hanami-applications) because an automatic initial instrumentation is always applied at startup, thus such applications will always instrument GraphQL with the default strategy (`GraphQL::Tracing::DataDogTrace`). **Manually configuring GraphQL schemas** -If you prefer to individually configure the tracer settings for a schema (e.g. you have multiple schemas), in the schema definition, you can add the following [using the GraphQL API](http://graphql-ruby.org/queries/tracing.html): +If you prefer, you can individually configure the tracer settings per schema (e.g. you have multiple schemas with distinct instrumentation options). + +Do _NOT_ `c.tracing.instrument :graphql` in `Datadog.configure` if you choose to configure schema settings manually, as to avoid double tracing. These two means of configuring GraphQL tracing are mutually exclusive. -With `GraphQL::Tracing::DataDogTrace` +To instrument each schema individually, you add the following [using the GraphQL API](http://graphql-ruby.org/queries/tracing.html): + +For `graphql` >= v2.2: ```ruby class YourSchema < GraphQL::Schema - trace_with GraphQL::Tracing::DataDogTrace + trace_with Datadog::Tracing::Contrib::GraphQL::UnifiedTrace end ``` -With `UnifiedTracer` (Added in v2.2) +For `graphql` < v2.2: ```ruby class YourSchema < GraphQL::Schema - trace_with Datadog::Tracing::Contrib::GraphQL::UnifiedTrace + trace_with GraphQL::Tracing::DataDogTrace end ``` -or with `GraphQL::Tracing::DataDogTracing` (deprecated) +Using the deprecated tracer GraphQL (`GraphQL::Tracing::DataDogTracing`): ```ruby class YourSchema < GraphQL::Schema @@ -893,8 +906,6 @@ end **Note**: This integration does not support define-style schemas. Only class-based schemas are supported. -Do _NOT_ `instrument :graphql` in `Datadog.configure` if you choose to configure manually, as to avoid double tracing. These two means of configuring GraphQL tracing are considered mutually exclusive. - **Adding custom tags to Datadog spans** You can add custom tags to Datadog spans by implementing the `prepare_span` method in a subclass, then manually configuring your schema. @@ -907,7 +918,7 @@ class YourSchema < GraphQL::Schema span.set_tag("custom:#{trace_key}", data.keys.sort.join(",")) end end - + trace_with CustomTracing end ``` @@ -1171,6 +1182,7 @@ client.query("SELECT * FROM users WHERE group='x'") | `service_name` | `DD_TRACE_MYSQL2_SERVICE_NAME` | `String` | Name of application running the `mysql2` instrumentation. May be overridden by `global_default_service_name`. [See _Additional Configuration_ for more details](#additional-configuration) | `mysql2` | | `peer_service` | `DD_TRACE_MYSQL2_PEER_SERVICE` | `String` | Name of external service the application connects to | `nil` | | `comment_propagation` | `DD_DBM_PROPAGATION_MODE` | `String` | SQL comment propagation mode for database monitoring.
(example: `disabled` \| `service`\| `full`).

**Important**: _Note that enabling SQL comment propagation results in potentially confidential data (service names) being stored in the databases which can then be accessed by other third parties that have been granted access to the database._ | `'disabled'` | +| `append_comment` | | `Bool` | Appends the SQL comment propagation to the query string. Prepends the comment if `false`. For long query strings, the appended propagation comment might be truncated, causing loss of correlation between the query and trace. | `false` | | `on_error` | | `Proc` | Custom error handler invoked when MySQL raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring errors that are handled at the application level. | `proc { \|span, error\| span.set_error(error) unless span.nil? }` | ### Net/HTTP @@ -1272,6 +1284,7 @@ end | `service_name` | `DD_TRACE_PG_SERVICE_NAME` | `String` | Name of application running the `pg` instrumentation. May be overridden by `global_default_service_name`. [See _Additional Configuration_ for more details](#additional-configuration) | `pg` | | `peer_service` | `DD_TRACE_PG_PEER_SERVICE` | `String` | Name of external service the application connects to | `nil` | | `comment_propagation` | `DD_DBM_PROPAGATION_MODE` | `String` | SQL comment propagation mode for database monitoring.
(example: `disabled` \| `service`\| `full`).

**Important**: _Note that enabling sql comment propagation results in potentially confidential data (service names) being stored in the databases which can then be accessed by other 3rd parties that have been granted access to the database._ | `'disabled'` | +| `append_comment` | | `Bool` | Appends the SQL comment propagation to the query string. Prepends the comment if `false`. For long query strings, the appended propagation comment might be truncated, causing loss of correlation between the query and trace. | `false` | | `on_error` | | `Proc` | Custom error handler invoked when PG raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring errors from Postgres that are handled at the application level. | `proc { \|span, error\| span.set_error(error) unless span.nil? }` | ### Presto @@ -1990,6 +2003,9 @@ client.query("SELECT * FROM users WHERE group='x'") | `enabled` | `DD_TRACE_TRILOGY_ENABLED` | `Bool` | Whether the integration should create spans. | `true` | | `service_name` | `DD_TRACE_TRILOGY_SERVICE_NAME` | `String` | Name of application running the `trilogy` instrumentation. May be overridden by `global_default_service_name`. [See _Additional Configuration_ for more details](#additional-configuration) | `trilogy` | | `peer_service` | `DD_TRACE_TRILOGY_PEER_SERVICE` | `String` | Name of external service the application connects to | `nil` | +| `comment_propagation` | `DD_DBM_PROPAGATION_MODE` | `String` | SQL comment propagation mode for database monitoring.
(example: `disabled` \| `service`\| `full`).

**Important**: _Note that enabling SQL comment propagation results in potentially confidential data (service names) being stored in the databases which can then be accessed by other third parties that have been granted access to the database._ | `'disabled'` | +| `append_comment` | | `Bool` | Appends the SQL comment propagation to the query string. Prepends the comment if `false`. For long query strings, the appended propagation comment might be truncated, causing loss of correlation between the query and trace. | `false` | +| `on_error` | | `Proc` | Custom error handler invoked when MySQL raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring errors that are handled at the application level. | `proc { \|span, error\| span.set_error(error) unless span.nil? }` | ## Additional configuration @@ -2033,7 +2049,7 @@ For example, if `tracing.sampling.default_rate` is configured by [Remote Configu | **Tracing** | | | | | | `tracing.contrib.peer_service_mapping` | `DD_TRACE_PEER_SERVICE_MAPPING` | `Hash` | `nil` | Defines remapping of `peer.service` tag across all instrumentation. Provide a list of `old_value1:new_value1, old_value2:new_value2, ...` | | `tracing.contrib.global_default_service_name.enabled` | `DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED` | `Bool` | `false` | Changes the default value for `service_name` to the application service name across all instrumentation | -| `tracing.propagation_extract_first` | `DD_TRACE_PROPAGATION_EXTRACT_FIRST` | `Bool` | `false` | Exit immediately on the first valid propagation format detected. See [Distributed Tracing](#distributed-tracing) for more details. | +| `tracing.propagation_extract_first` | `DD_TRACE_PROPAGATION_EXTRACT_FIRST` | `Bool` | `false` | Stop searching after detecting the first valid propagation format. See [Distributed Tracing](#distributed-tracing) for more details. | | `tracing.propagation_style_extract` | `DD_TRACE_PROPAGATION_STYLE_EXTRACT` | `Array` | `['Datadog','tracecontext']` | Distributed tracing propagation formats to extract. Overrides `DD_TRACE_PROPAGATION_STYLE`. See [Distributed Tracing](#distributed-tracing) for more details. | | `tracing.propagation_style_inject` | `DD_TRACE_PROPAGATION_STYLE_INJECT` | `Array` | `['Datadog','tracecontext']` | Distributed tracing propagation formats to inject. Overrides `DD_TRACE_PROPAGATION_STYLE`. See [Distributed Tracing](#distributed-tracing) for more details. | | `tracing.propagation_style` | `DD_TRACE_PROPAGATION_STYLE` | `Array` | `nil` | Distributed tracing propagation formats to extract and inject. See [Distributed Tracing](#distributed-tracing) for more details. | @@ -2046,7 +2062,7 @@ For example, if `tracing.sampling.default_rate` is configured by [Remote Configu | `tracing.sampler` | | `Datadog::Tracing::Sampling::Sampler` | `nil` | Advanced usage only. Sets a custom `Datadog::Tracing::Sampling::Sampler` instance. If provided, the tracer will use this sampler to determine sampling behavior. See [Custom sampling](#custom-sampling) for details. | | `tracing.sampling.default_rate` | `DD_TRACE_SAMPLE_RATE` | `Float` | `nil` | Sets the trace sampling rate between `0.0` (0%) and `1.0` (100%). | | `tracing.sampling.rate_limit` | `DD_TRACE_RATE_LIMIT` | `Integer` | `100` (per second) | Sets a maximum number of traces per second to sample. Set a rate limit to avoid the ingestion volume overages in the case of traffic spikes. | -| `tracing.sampling.rules` | `DD_TRACE_SAMPLING_RULES` | `String` | `nil` | Sets trace-level sampling rules, matching against the local root span. The format is a `String` with JSON, containing an Array of Objects. Each Object must have a float attribute `sample_rate` (between 0.0 and 1.0, inclusive), and optionally `name`, `service`, `resource`, and `tags` string attributes. `name`, `service`, `resource`, and `tags` control to which traces this sampling rule applies; if they are all absent, then this rule applies to all traces. Rules are evaluted in order of declartion in the array; only the first to match is applied. If none apply, then `tracing.sampling.default_rate` is applied. | +| `tracing.sampling.rules` | `DD_TRACE_SAMPLING_RULES` | `String` | `nil` | Sets trace-level sampling rules, matching against the local root span. The format is a `String` with JSON, containing an Array of Objects. Each Object must have a float attribute `sample_rate` (between 0.0 and 1.0, inclusive), and optionally `name`, `service`, `resource`, and `tags` string attributes. `name`, `service`, `resource`, and `tags` control to which traces this sampling rule applies; if they are all absent, then this rule applies to all traces. Rules are evaluated in order of declaration in the array; only the first to match is applied. If none apply, then `tracing.sampling.default_rate` is applied. | | `tracing.sampling.span_rules` | `DD_SPAN_SAMPLING_RULES`,`ENV_SPAN_SAMPLING_RULES_FILE` | `String` | `nil` | Sets [Single Span Sampling](#single-span-sampling) rules. These rules allow you to keep spans even when their respective traces are dropped. | | `tracing.trace_id_128_bit_generation_enabled` | `DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED` | `Bool` | `true` | `true` to generate 128 bits trace ID and `false` to generate 64 bits trace ID | | `tracing.report_hostname` | `DD_TRACE_REPORT_HOSTNAME` | `Bool` | `false` | Adds hostname tag to traces. | @@ -2505,10 +2521,23 @@ In many cases, such as logging, it may be useful to correlate trace IDs to other ##### Automatic -For Rails applications using the default logger (`ActiveSupport::TaggedLogging`), `lograge` or `semantic_logger`, trace correlation injection is enabled by default. +For Rails applications using the default logger (`ActiveSupport::TaggedLogging`), `lograge`, or `semantic_logger`, trace correlation injection is enabled by default. It can be disabled by setting the environment variable `DD_LOGS_INJECTION=false`. +
+If using lograge, disable ActiveSupport::TaggedLogging to prevent plain-text TaggedLogging tags from polluting the log lines. +
+ +To disable `ActiveSupport::TaggedLogging`, in your Rails configuration, set: + +```ruby +config.logger = ActiveSupport::Logger.new(STDOUT) +config.active_job.logger = ActiveSupport::Logger.new(STDOUT) +``` + +This is not necessary when using `semantic_logger`. + #### For logging in Ruby applications To add correlation IDs to your logger, add a log formatter which retrieves the correlation IDs with `Datadog::Tracing.correlation`, then add them to the message. diff --git a/docs/ProfilingDevelopment.md b/docs/ProfilingDevelopment.md index c12c8b80734..26fa6cd66c5 100644 --- a/docs/ProfilingDevelopment.md +++ b/docs/ProfilingDevelopment.md @@ -4,6 +4,8 @@ This file contains development notes specific to the continuous profiler. For a more practical view of getting started with development of `datadog`, see . +There's also a `NativeExtensionDesign.md` file in the `ext/datadog_profiling_native_extension` that contains further profiler implementation design notes. + ## Profiling components high-level view Some of the profiling components referenced below are implemented using C code. As much as possible, that C code is still @@ -18,8 +20,6 @@ recording a metric for them (such as elapsed cpu-time or wall-time, in a few cas with ongoing tracing information, if any. Relies on the `Collectors::Stack` for the actual stack sampling. * `Collectors::CpuAndWallTimeWorker`: Triggers the periodic execution of `Collectors::ThreadContext`. * `Collectors::Stack`: Used to gather a stack trace from a given Ruby thread. Stores its output on a `StackRecorder`. -* `Ext::Forking`: Monkey patches `Kernel#fork`, adding a `Kernel#at_fork` callback mechanism which is used to restore - profiling abilities after the VM forks (such as re-instrumenting the main thread, and restarting profiler threads). * `Tasks::Setup`: Takes care of loading and applying `Ext::Forking``. * `HttpTransport`: Implements transmission of profiling payloads to the Datadog agent or backend. * `Flush`: Entity class used to represent the payload to be reported for a given profile. @@ -142,3 +142,198 @@ available, from the tracer. Note that if a given trace executes too fast, it's possible that the profiler will not contain any samples for that specific trace. Nevertheless, the linking still works and is useful, as it allows users to explore what was going on their profile at that time, even if they can't filter down to the specific request. + +## Tracking of cpu-time and wall-time spent during garbage collection + +See comments at the top of `collectors_thread_context.c` for an explanation on how that feature is implemented. + +## How GVL profiling works + +Profiling the Ruby Global VM Lock (GVL) works by using the [GVL instrumentation API](https://github.com/ruby/ruby/pull/5500). + +This API currently only works on Ruby 3.2+. + +These blog posts are good starting points to understand this API: + +* https://ivoanjo.me/blog/2022/07/17/tracing-ruby-global-vm-lock/ +* https://ivoanjo.me/blog/2023/02/11/ruby-unexpected-io-vs-cpu-unfairness/ +* https://ivoanjo.me/blog/2023/07/23/understanding-the-ruby-global-vm-lock-by-observing-it/ + +Below follow some notes on how it works. Note that it's possible we'll forget to update this documentation as the code +changes, so take the below info as a starting point to understanding how the feature is integrated, rather than an exact spec. + +### Getting VM callbacks in `CpuAndWallTimeWorker` + +From our side, the magic starts in the `CpuAndWallTimeWorker` class. When GVL profiling is enabled, we ask the VM to tell +us about two kinds of thread events: + +```c + if (state->gvl_profiling_enabled) { + state->gvl_profiling_hook = rb_internal_thread_add_event_hook( + on_gvl_event, + ( + // For now we're only asking for these events, even though there's more + // (e.g. check docs or gvl-tracing gem) + RUBY_INTERNAL_THREAD_EVENT_READY /* waiting for gvl */ | + RUBY_INTERNAL_THREAD_EVENT_RESUMED /* running/runnable */ + ), + NULL + ); + } +``` + +As the comments hint at: +* `RUBY_INTERNAL_THREAD_EVENT_READY` is emitted by the VM when a thread is ready to start running again. E.g. it's now +waiting for its turn to acquire the GVL. We call this thread "Waiting for GVL" in the profiler code, as well as in the Datadog UX +* `RUBY_INTERNAL_THREAD_EVENT_RESUMED` is emitted by the VM immediately after a thread has acquired the GVL. It's so +immediately after that (looking at the VM code) it may not even have done all the cleanup needed after acquisition for the +thread to start running. + +Once one of those events happen, Ruby will tell us by calling our `on_gvl_event` function +(still in the `CpuAndWallTimeWorker`). + +Both events above are (as far as I know) emitted by the thread they are representing. But, we need to be very careful +about running code in `on_gvl_event` to handle these events: + +* `RUBY_INTERNAL_THREAD_EVENT_READY` is emitted while the thread is not holding the GVL, and thus it can be in parallel with +other things +* All events are emitted _for all Ractors_, and each Ractor has their own GVL (yes yes, naming, see +[the talk linked into](https://ivoanjo.me/blog/2023/07/23/understanding-the-ruby-global-vm-lock-by-observing-it/) for a discussion on this) +* With the Ruby M:N threading, a native thread may play host to multiple Ruby threads so let's not assume too much + +All of the above taken together mean that we need to be very careful with what state we mutate or access from `on_gvl_event`, as they +can be concurrent with other operations in the profiler (including sampling). + +(The current implementation is similar to GC profiling, which shares similar constraints and limitations in not being able to sample +from the VM callbacks and also messing with cpu/wall-time accounting for threads that are GCing.) + +The `ThreadContext` collector exposes three APIs for GVL profiling: + +* `thread_context_collector_on_gvl_waiting` +* `thread_context_collector_on_gvl_running` +* `thread_context_collector_sample_after_gvl_running` + +The intuition here is that: + +* `on_gvl_waiting` tracks when a thread began Waiting for GVL. It should be called when a thread +reports `RUBY_INTERNAL_THREAD_EVENT_READY` +* `on_gvl_running` tracks when a thread acquired the GVL. It should be called when a thread reports +`RUBY_INTERNAL_THREAD_EVENT_RESUMED` +* `sample_after_gvl_running` is the one that actually triggers the creation of a sample to represent +the waiting period. It should be called via the VM postponed job API when `on_gvl_running` returns `true`; e.g. when the +`ThreadContext` collector reports a sample should be taken. + +As far as the `CpuAndWallTimeWorker` cares, the above is all it needs to call in response to VM events. You'll notice +that `on_gvl_waiting` and `on_gvl_running` don't need or use any of the `CpuAndWallTimeWorker` or `ThreadContext` +instance state. + +The `sample_after_gvl_running` actually does, and that's why it's supposed to be used from a postponed job, which +ensures there's no concurrency (in our setup it only gets called with the GVL + on the main ractor) and thus we're safe to +access and mutate state inside it. + +### Tracking thread state and sampling in `ThreadContext` + +The weirdest piece of this puzzle is done in the `ThreadContext` collector. Because, as mentioned above, +`on_gvl_waiting` and `on_gvl_running` can get called outside the GVL/in other Ractors, we avoid touching the current +`ThreadContext` instance state in these methods. + +Instead, we ask Ruby to hold the data we need for us using the `rb_internal_thread_specific` API. This API provides +an extremely low-level and limited thread-local storage mechanism, but one that's thread-safe and thus a good match +for our needs. (This API is only available on Ruby 3.3+; to support Ruby 3.2 we use an alternative implementation.) + +So, here's how this works: the first time the `ThreadContext` collector sees a thread (e.g. when it creates a context +for it), it uses this API to tag this thread as a thread we want to know about: + +```c +rb_internal_thread_specific_set(thread, per_thread_gvl_waiting_timestamp_key, (void *) GVL_WAITING_ENABLED_EMPTY); +``` + +From here on out, `on_gvl_waiting` and `on_gvl_running` know that if a thread has the `per_thread_gvl_waiting_timestamp` +variable set (to any other value than the default of `NULL`/0), it means this thread is known by the `ThreadContext` +collector and thus we should record data about it. +(And threads not in the main Ractor don't get this marker so this is one way we filter them out.) + +Could we have stored a pointer to the thread context directly on the thread? Potentially, yes, but we'd need to be +extremely careful when accessing thread contexts and when cleaning them up. (Maybe we'll evolve in this direction in +the future?) + +With the storage problem solved, here's what happens: the first part is that `on_gvl_waiting` records a timestamp for +when waiting started in the thread in `per_thread_gvl_waiting_timestamp`. + +Then, `on_gvl_running` checks the duration of the waiting (e.g. time between waiting started and current time). This +is a mechanism for reducing overhead: we'll produce at least two samples for every "Waiting for GVL" event that +we choose to sample, so we need to be careful not to allow situations with a lot of threads waiting for very brief +periods to induce too much overhead on the application. + +If we decide to sample (duration >= some minimal threshold duration for sampling), we can't sample yet! +As documented above, `on_gvl_running` is called in response to VM `RUBY_INTERNAL_THREAD_EVENT_RESUMED` events that +happen right after the thread acquired the GVL but there's still some book-keeping to do. Thus, we don't sample +from this method, but use the `bool` return to signal the caller when a sample should be taken. + +Then, a sample is taken once the caller (`CpuAndWallTimeWorker`) calls into `sample_after_gvl_running`. +This design is similar to GC profiling, where we also can't sample during GC, and thus we trigger a sample to happen immediately after. + +### Representing the Waiting for GVL in `ThreadContext` + +As far as sampling goes, we represent a Waiting for GVL as a thread state, similar to other thread states we emit. +This state is special, as it "overrides" other states, e.g. if a thread was sleeping, but wants to wake up, even +though the thread is still inside `sleep`, it will have the "Waiting for GVL" state. + +Waiting for GVL does not affect the regular flamegraph, only the timeline visualization, as it's a thread state, and +currently we do not represent thread states in any way on the regular flamegraph. + +The timestamp of the beginning of waiting for GVL gets used to create a sample that represents the "Waiting for GVL" +period. Because there's some unaccounted for cpu and wall-time between the previous sample and the start of a waiting +period, we also create a sample to account for this. + +There's some (lovely?) ASCII art in `handle_gvl_waiting` to explain how we create these two samples. + +Once a thread is in the "Waiting for GVL" state, then all regular cpu/wall-time samples triggered by the `CpuAndWallTimeWorker` +will continue to mark the thread as being in this state, until `on_gvl_running` + `sample_after_gvl_running` happen and +clear the `per_thread_gvl_waiting_timestamp`, which will make samples revert back to the regular behavior. + +### Supporting Ruby 3.2 + +Supporting GVL profiling on Ruby 3.2 needs special additional work. That's because while in Ruby 3.2 we have the GVL +instrumentation API giving us the events we need to profile the GVL, we're missing: + +1. Getting the Ruby thread `VALUE` as an argument in GVL instrumentation API events +2. The `rb_internal_thread_specific` API that allows us to attach in a thread-safe way data to Ruby thread objects + +Both 1 and 2 were only introduced in Ruby 3.3, and our implementation of GVL profiling relies on them. + +We bridge this gap with alternative implementations for Ruby 3.2: + +To solve 1, we're using native level thread-locals (GCC's `__thread`) to keep a pointer to the underlying Ruby `rb_thread_t` structure. + +This is more complex than than "just keep it on a thread-local" because: + +a) Ruby reuses native threads. When a Ruby thread dies, Ruby keeps the underlying native thread around for a bit, +and if another Ruby thread is born very quickly after the previous one, Ruby will reuse the native thread and attach it +to the new Ruby thread. + + To avoid incorrectly reusing the thread-locals, we install an event hook on Ruby thread start, and make sure to + clean any native thread-locals when a new thread stats. + +b) Some of the GVL instrumentation API events are emitted while the thread does not have the GVL and so we need to be +careful when we can and cannot read VM information. + + Thus, we only initialize the thread-local during the `RUBY_INTERNAL_THREAD_EVENT_RESUMED` which is emitted while the + thread owns the GVL. + +c) Since we don't get the current thread in events, we need to get a bit... creative. Thus, what we do is in +`RUBY_INTERNAL_THREAD_EVENT_RESUMED`, because we know the current thread MUST own the GVL, we read from the internal +Ruby VM state which thread is the GVL owner to find the info we need. + +With a + b + c together we are able to keep a pointer to the underlying `rb_thread_t` up-to-date in a native thread +local, thus replacing the need to get a `VALUE thread` as an argument. + +To solve 2, we rely on an important observation: there's a `VALUE stat_insn_usage` field inside `rb_thread_t` that's +unused and seems to have effectively been forgotten about. + +There's nowhere in the VM code that's writing or reading it (other than marking it for GC), and not even git history +reveals a time where this field was used. I could not find any other references to this field anywhere else. Thus, we +make use of this field to store the information we need, as a replacement for `rb_internal_thread_specific`. + +Since presumably Ruby 3.2 will never see this field either removed or used during its remaining maintenance release +period this should work fine, and we have a nice clean solution for 3.3+. diff --git a/docs/UpgradeGuide.md b/docs/UpgradeGuide.md index 9237ec0c10f..68bd757b0ec 100644 --- a/docs/UpgradeGuide.md +++ b/docs/UpgradeGuide.md @@ -391,7 +391,7 @@ The public API provides new functions to access active trace data: ```ruby ### Old 0.x ### -# Retuns the active context (contains trace state) +# Returns the active context (contains trace state) Datadog.tracer.call_context # Returns the active Span Datadog.tracer.active_span @@ -400,7 +400,7 @@ Datadog.tracer.active_correlation ### New 1.0 ### -# Retuns the active TraceOperation for the current thread (contains trace state) +# Returns the active TraceOperation for the current thread (contains trace state) Datadog::Tracing.active_trace # Returns the active SpanOperation for the current thread (contains span state) Datadog::Tracing.active_span diff --git a/docs/UpgradeGuide2.md b/docs/UpgradeGuide2.md index b3c42b71ade..02d5e87f241 100644 --- a/docs/UpgradeGuide2.md +++ b/docs/UpgradeGuide2.md @@ -265,10 +265,10 @@ Remove constants at `Datadog::Tracing::Distributed::Headers::Ext`. see table bel | `Datadog::Tracing::Distributed::Headers::Ext::HTTP_HEADER_SAMPLING_PRIORITY` | `Datadog::Tracing::Distributed::Datadog::SAMPLING_PRIORITY_KEY` | | `Datadog::Tracing::Distributed::Headers::Ext::HTTP_HEADER_ORIGIN` | `Datadog::Tracing::Distributed::Datadog::ORIGIN_KEY` | | `Datadog::Tracing::Distributed::Headers::Ext::HTTP_HEADER_TAGS` | `Datadog::Tracing::Distributed::Datadog::TAGS_KEY` | -| `Datadog::Tracing::Distributed::Headers::Ext::B3_HEADER_TRACE_ID` | `Datadog::Tracing::Distirbuted::B3Multi::B3_TRACE_ID_KEY` | -| `Datadog::Tracing::Distributed::Headers::Ext::B3_HEADER_SPAN_ID` | `Datadog::Tracing::Distirbuted::B3Multi::B3_SPAN_ID_KEY` | -| `Datadog::Tracing::Distributed::Headers::Ext::B3_HEADER_SAMPLED` | `Datadog::Tracing::Distirbuted::B3Multi::B3_SAMPLED_KEY` | -| `Datadog::Tracing::Distributed::Headers::Ext::B3_HEADER_SINGLE` | `Datadog::Tracing::Distirbuted::B3Single::B3_SINGLE_HEADER_KEY` | +| `Datadog::Tracing::Distributed::Headers::Ext::B3_HEADER_TRACE_ID` | `Datadog::Tracing::Distributed::B3Multi::B3_TRACE_ID_KEY` | +| `Datadog::Tracing::Distributed::Headers::Ext::B3_HEADER_SPAN_ID` | `Datadog::Tracing::Distributed::B3Multi::B3_SPAN_ID_KEY` | +| `Datadog::Tracing::Distributed::Headers::Ext::B3_HEADER_SAMPLED` | `Datadog::Tracing::Distributed::B3Multi::B3_SAMPLED_KEY` | +| `Datadog::Tracing::Distributed::Headers::Ext::B3_HEADER_SINGLE` | `Datadog::Tracing::Distributed::B3Single::B3_SINGLE_HEADER_KEY` | | `Datadog::Tracing::Distributed::Headers::Ext::GRPC_METADATA_TRACE_ID` | `Datadog::Tracing::Distributed::Datadog::TRACE_ID_KEY` | | `Datadog::Tracing::Distributed::Headers::Ext::GRPC_METADATA_PARENT_ID` | `Datadog::Tracing::Distributed::Datadog::PARENT_ID_KEY` | | `Datadog::Tracing::Distributed::Headers::Ext::GRPC_METADATA_SAMPLING_PRIORITY` | `Datadog::Tracing::Distributed::Datadog::SAMPLING_PRIORITY_KEY` | diff --git a/docs/legacy/GettingStarted-v1.md b/docs/legacy/GettingStarted-v1.md index e39135f1cd9..b6fba2ed257 100644 --- a/docs/legacy/GettingStarted-v1.md +++ b/docs/legacy/GettingStarted-v1.md @@ -2117,7 +2117,7 @@ For example, if `tracing.sampling.default_rate` is configured by [Remote Configu | **Tracing** | | | | | `tracing.contrib.peer_service_mapping` | `DD_TRACE_PEER_SERVICE_MAPPING` | `nil` | Defines remapping of `peer.service` tag across all instrumentation. Provide a list of `old_value1:new_value1, old_value2:new_value2, ...` | | `tracing.contrib.global_default_service_name.enabled` | `DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED` | `false` | Changes the default value for `service_name` to the application service name across all instrumentation. Used with [Inferred Services Beta](https://docs.datadoghq.com/tracing/guide/inferred-service-opt-in) | -| `tracing.distributed_tracing.propagation_extract_first` | `DD_TRACE_PROPAGATION_EXTRACT_FIRST` | `false` | Exit immediately on the first valid propagation format detected. See [Distributed Tracing](#distributed-tracing) for more details. | +| `tracing.distributed_tracing.propagation_extract_first` | `DD_TRACE_PROPAGATION_EXTRACT_FIRST` | `false` | Stop searching after detecting the first valid propagation format. See [Distributed Tracing](#distributed-tracing) for more details. | | `tracing.distributed_tracing.propagation_extract_style` | `DD_TRACE_PROPAGATION_STYLE_EXTRACT` | `['Datadog','tracecontext']` | Distributed tracing propagation formats to extract. Overrides `DD_TRACE_PROPAGATION_STYLE`. See [Distributed Tracing](#distributed-tracing) for more details. | | `tracing.distributed_tracing.propagation_inject_style` | `DD_TRACE_PROPAGATION_STYLE_INJECT` | `['Datadog','tracecontext']` | Distributed tracing propagation formats to inject. Overrides `DD_TRACE_PROPAGATION_STYLE`. See [Distributed Tracing](#distributed-tracing) for more details. | | `tracing.distributed_tracing.propagation_style` | `DD_TRACE_PROPAGATION_STYLE` | `nil` | Distributed tracing propagation formats to extract and inject. See [Distributed Tracing](#distributed-tracing) for more details. | @@ -2130,7 +2130,7 @@ For example, if `tracing.sampling.default_rate` is configured by [Remote Configu | `tracing.sampler` | | `nil` | Advanced usage only. Sets a custom `Datadog::Tracing::Sampling::Sampler` instance. If provided, the tracer will use this sampler to determine sampling behavior. See [Application-side sampling](#application-side-sampling) for details. | | `tracing.sampling.default_rate` | `DD_TRACE_SAMPLE_RATE` | `nil` | Sets the trace sampling rate between `0.0` (0%) and `1.0` (100%). See [Application-side sampling](#application-side-sampling) for details. | | `tracing.sampling.rate_limit` | `DD_TRACE_RATE_LIMIT` | `100` (per second) | Sets a maximum number of traces per second to sample. Set a rate limit to avoid the ingestion volume overages in the case of traffic spikes. | -| `tracing.sampling.rules` | `DD_TRACE_SAMPLING_RULES` | `nil` | Sets trace-level sampling rules, matching against the local root span. The format is a `String` with JSON, containing an Array of Objects. Each Object must have a float attribute `sample_rate` (between 0.0 and 1.0, inclusive), and optionally `name`, `service`, `resource`, and `tags` string attributes. `name`, `service`, `resource`, and `tags` control to which traces this sampling rule applies; if they are all absent, then this rule applies to all traces. Rules are evaluted in order of declartion in the array; only the first to match is applied. If none apply, then `tracing.sampling.default_rate` is applied. | +| `tracing.sampling.rules` | `DD_TRACE_SAMPLING_RULES` | `nil` | Sets trace-level sampling rules, matching against the local root span. The format is a `String` with JSON, containing an Array of Objects. Each Object must have a float attribute `sample_rate` (between 0.0 and 1.0, inclusive), and optionally `name`, `service`, `resource`, and `tags` string attributes. `name`, `service`, `resource`, and `tags` control to which traces this sampling rule applies; if they are all absent, then this rule applies to all traces. Rules are evaluated in order of declaration in the array; only the first to match is applied. If none apply, then `tracing.sampling.default_rate` is applied. | | `tracing.sampling.span_rules` | `DD_SPAN_SAMPLING_RULES`,`ENV_SPAN_SAMPLING_RULES_FILE` | `nil` | Sets [Single Span Sampling](#single-span-sampling) rules. These rules allow you to keep spans even when their respective traces are dropped. | | `tracing.trace_id_128_bit_generation_enabled` | `DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED` | `true` | `true` to generate 128 bits trace ID and `false` to generate 64 bits trace ID | | `tracing.report_hostname` | `DD_TRACE_REPORT_HOSTNAME` | `false` | Adds hostname tag to traces. | diff --git a/ext/datadog_profiling_loader/datadog_profiling_loader.c b/ext/datadog_profiling_loader/datadog_profiling_loader.c index f187e440d44..2791f6dad0c 100644 --- a/ext/datadog_profiling_loader/datadog_profiling_loader.c +++ b/ext/datadog_profiling_loader/datadog_profiling_loader.c @@ -65,7 +65,15 @@ static VALUE _native_load(DDTRACE_UNUSED VALUE self, VALUE ruby_path, VALUE ruby char *path = StringValueCStr(ruby_path); char *init_name = StringValueCStr(ruby_init_name); - void *handle = dlopen(path, RTLD_LAZY | RTLD_LOCAL | RTLD_DEEPBIND); + int dlopen_flags = RTLD_LAZY | RTLD_LOCAL | RTLD_DEEPBIND; + + #if defined(__has_feature) + #if __has_feature(address_sanitizer) + dlopen_flags &= ~RTLD_DEEPBIND; // Not supported by ASAN + #endif + #endif + + void *handle = dlopen(path, dlopen_flags); VALUE failure_details = Qnil; diff --git a/ext/datadog_profiling_loader/extconf.rb b/ext/datadog_profiling_loader/extconf.rb index 49cf06fdb54..f8e62e4c948 100644 --- a/ext/datadog_profiling_loader/extconf.rb +++ b/ext/datadog_profiling_loader/extconf.rb @@ -1,49 +1,38 @@ # rubocop:disable Style/StderrPuts -# rubocop:disable Style/GlobalVars -if RUBY_ENGINE != 'ruby' || Gem.win_platform? +if RUBY_ENGINE != "ruby" || Gem.win_platform? $stderr.puts( - 'WARN: Skipping build of Datadog profiling loader. See Datadog profiling native extension note for details.' + "WARN: Skipping build of Datadog profiling loader. See Datadog profiling native extension note for details." ) - File.write('Makefile', 'all install clean: # dummy makefile that does nothing') + File.write("Makefile", "all install clean: # dummy makefile that does nothing") exit end -require 'mkmf' - -# mkmf on modern Rubies actually has an append_cflags that does something similar -# (see https://github.com/ruby/ruby/pull/5760), but as usual we need a bit more boilerplate to deal with legacy Rubies -def add_compiler_flag(flag) - if try_cflags(flag) - $CFLAGS << ' ' << flag - else - $stderr.puts("WARNING: '#{flag}' not accepted by compiler, skipping it") - end -end +require "mkmf" # Because we can't control what compiler versions our customers use, shipping with -Werror by default is a no-go. # But we can enable it in CI, so that we quickly spot any new warnings that just got introduced. -add_compiler_flag '-Werror' if ENV['DATADOG_GEM_CI'] == 'true' +append_cflags "-Werror" if ENV["DATADOG_GEM_CI"] == "true" # Older gcc releases may not default to C99 and we need to ask for this. This is also used: # * by upstream Ruby -- search for gnu99 in the codebase # * by msgpack, another datadog gem dependency # (https://github.com/msgpack/msgpack-ruby/blob/18ce08f6d612fe973843c366ac9a0b74c4e50599/ext/msgpack/extconf.rb#L8) -add_compiler_flag '-std=gnu99' +append_cflags "-std=gnu99" # Gets really noisy when we include the MJIT header, let's omit it (TODO: Use #pragma GCC diagnostic instead?) -add_compiler_flag '-Wno-unused-function' +append_cflags "-Wno-unused-function" # Allow defining variables at any point in a function -add_compiler_flag '-Wno-declaration-after-statement' +append_cflags "-Wno-declaration-after-statement" # If we forget to include a Ruby header, the function call may still appear to work, but then # cause a segfault later. Let's ensure that never happens. -add_compiler_flag '-Werror-implicit-function-declaration' +append_cflags "-Werror-implicit-function-declaration" # Warn on unused parameters to functions. Use `DDTRACE_UNUSED` to mark things as known-to-not-be-used. -add_compiler_flag '-Wunused-parameter' +append_cflags "-Wunused-parameter" # The native extension is not intended to expose any symbols/functions for other native libraries to use; # the sole exception being `Init_datadog_profiling_loader` which needs to be visible for Ruby to call it when @@ -51,14 +40,14 @@ def add_compiler_flag(flag) # # By setting this compiler flag, we tell it to assume that everything is private unless explicitly stated. # For more details see https://gcc.gnu.org/wiki/Visibility -add_compiler_flag '-fvisibility=hidden' +append_cflags "-fvisibility=hidden" # Avoid legacy C definitions -add_compiler_flag '-Wold-style-definition' +append_cflags "-Wold-style-definition" # Enable all other compiler warnings -add_compiler_flag '-Wall' -add_compiler_flag '-Wextra' +append_cflags "-Wall" +append_cflags "-Wextra" # Tag the native extension library with the Ruby version and Ruby platform. # This makes it easier for development (avoids "oops I forgot to rebuild when I switched my Ruby") and ensures that @@ -68,5 +57,4 @@ def add_compiler_flag(flag) create_makefile(EXTENSION_NAME) -# rubocop:enable Style/GlobalVars # rubocop:enable Style/StderrPuts diff --git a/ext/datadog_profiling_native_extension/NativeExtensionDesign.md b/ext/datadog_profiling_native_extension/NativeExtensionDesign.md index 1a3ccda5d8e..c748d3a3c16 100644 --- a/ext/datadog_profiling_native_extension/NativeExtensionDesign.md +++ b/ext/datadog_profiling_native_extension/NativeExtensionDesign.md @@ -68,7 +68,7 @@ internal types, structures and functions). Because these private header files are not included in regular Ruby installations, we have two different workarounds: 1. for Ruby versions 2.6 to 3.2 we make use use the Ruby private MJIT header -2. for Ruby versions < 2.6 and > 3.2 we make use of the `debase-ruby_core_source` gem +2. for Ruby versions < 2.6 and > 3.2 we make use of the `datadog-ruby_core_source` gem Functions which make use of these headers are defined in the file. @@ -91,9 +91,9 @@ version. e.g. `rb_mjit_min_header-2.7.4.h`. This header was removed in Ruby 3.3. -### Approach 2: Using the `debase-ruby_core_source` gem +### Approach 2: Using the `datadog-ruby_core_source` gem -The [`debase-ruby_core_source`](https://github.com/ruby-debug/debase-ruby_core_source) contains almost no code; +The [`datadog-ruby_core_source`](https://github.com/DataDog/datadog-ruby_core_source) contains almost no code; instead, it just contains per-Ruby-version folders with the private VM headers (`.h`) files for that version. Thus, even though a regular Ruby installation does not include these files, we can access the copy inside this gem. diff --git a/ext/datadog_profiling_native_extension/clock_id.h b/ext/datadog_profiling_native_extension/clock_id.h index 43aa3dab712..b302380eab7 100644 --- a/ext/datadog_profiling_native_extension/clock_id.h +++ b/ext/datadog_profiling_native_extension/clock_id.h @@ -2,6 +2,7 @@ #include #include +#include // Contains the operating-system specific identifier needed to fetch CPU-time, and a flag to indicate if we failed to fetch it typedef struct thread_cpu_time_id { diff --git a/ext/datadog_profiling_native_extension/clock_id_from_pthread.c b/ext/datadog_profiling_native_extension/clock_id_from_pthread.c index 2cff358ad69..be033110f73 100644 --- a/ext/datadog_profiling_native_extension/clock_id_from_pthread.c +++ b/ext/datadog_profiling_native_extension/clock_id_from_pthread.c @@ -7,11 +7,10 @@ #include #include #include -#include +#include "clock_id.h" #include "helpers.h" #include "private_vm_api_access.h" -#include "clock_id.h" #include "time_helpers.h" // Validate that our home-cooked pthread_id_for() matches pthread_self() for the current thread diff --git a/ext/datadog_profiling_native_extension/clock_id_noop.c b/ext/datadog_profiling_native_extension/clock_id_noop.c index 100a7d70b46..082224d91b4 100644 --- a/ext/datadog_profiling_native_extension/clock_id_noop.c +++ b/ext/datadog_profiling_native_extension/clock_id_noop.c @@ -4,10 +4,9 @@ // is not available. #ifndef HAVE_PTHREAD_GETCPUCLOCKID -#include - #include "clock_id.h" #include "helpers.h" +#include "datadog_ruby_common.h" void self_test_clock_id(void) { } // Nothing to check diff --git a/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c b/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c index bde8fc7281c..e4e9b69473e 100644 --- a/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +++ b/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c @@ -17,11 +17,6 @@ #include "setup_signal_handler.h" #include "time_helpers.h" -#define ERR_CLOCK_FAIL "failed to get clock time" - -// Maximum allowed value for an allocation weight. Attempts to use higher values will result in clamping. -unsigned int MAX_ALLOC_WEIGHT = 65535; - // Used to trigger the execution of Collectors::ThreadState, which implements all of the sampling logic // itself; this class only implements the "when to do it" part. // @@ -81,11 +76,19 @@ unsigned int MAX_ALLOC_WEIGHT = 65535; // // --- +#define ERR_CLOCK_FAIL "failed to get clock time" + +// Maximum allowed value for an allocation weight. Attempts to use higher values will result in clamping. +// See https://docs.google.com/document/d/1lWLB714wlLBBq6T4xZyAc4a5wtWhSmr4-hgiPKeErlA/edit#heading=h.ugp0zxcj5iqh +// (Datadog-only link) for research backing the choice of this value. +unsigned int MAX_ALLOC_WEIGHT = 10000; + #ifndef NO_POSTPONED_TRIGGER // Used to call the rb_postponed_job_trigger from Ruby 3.3+. These get initialized in // `collectors_cpu_and_wall_time_worker_init` below and always get reused after that. static rb_postponed_job_handle_t sample_from_postponed_job_handle; static rb_postponed_job_handle_t after_gc_from_postponed_job_handle; + static rb_postponed_job_handle_t after_gvl_running_from_postponed_job_handle; #endif // Contains state for a single CpuAndWallTimeWorker instance @@ -96,6 +99,8 @@ struct cpu_and_wall_time_worker_state { bool no_signals_workaround_enabled; bool dynamic_sampling_rate_enabled; bool allocation_profiling_enabled; + bool allocation_counting_enabled; + bool gvl_profiling_enabled; bool skip_idle_samples_for_testing; VALUE self_instance; VALUE thread_context_collector_instance; @@ -104,7 +109,6 @@ struct cpu_and_wall_time_worker_state { dynamic_sampling_rate_state cpu_dynamic_sampling_rate; discrete_dynamic_sampler allocation_sampler; VALUE gc_tracepoint; // Used to get gc start/finish information - VALUE object_allocation_tracepoint; // Used to get allocation counts and allocation profiling // These are mutable and used to signal things between the worker thread and other threads @@ -117,10 +121,15 @@ struct cpu_and_wall_time_worker_state { // Others - // Used to detect/avoid nested sampling, e.g. when the object_allocation_tracepoint gets triggered by a memory allocation + // Used to detect/avoid nested sampling, e.g. when on_newobj_event gets triggered by a memory allocation // that happens during another sample. bool during_sample; + #ifndef NO_GVL_INSTRUMENTATION + // Only set when sampling is active (gets created at start and cleaned on stop) + rb_internal_thread_event_hook_t *gvl_profiling_hook; + #endif + struct stats { // # Generic stats // How many times we tried to trigger a sample @@ -167,22 +176,21 @@ struct cpu_and_wall_time_worker_state { uint64_t allocation_sampling_time_ns_total; // How many times we saw allocations being done inside a sample unsigned int allocations_during_sample; + + // # GVL profiling stats + // How many times we triggered the after_gvl_running sampling + unsigned int after_gvl_running; + // How many times we skipped the after_gvl_running sampling + unsigned int gvl_dont_sample; + // Min/max/total wall-time spent on gvl sampling + uint64_t gvl_sampling_time_ns_min; + uint64_t gvl_sampling_time_ns_max; + uint64_t gvl_sampling_time_ns_total; } stats; }; static VALUE _native_new(VALUE klass); -static VALUE _native_initialize( - DDTRACE_UNUSED VALUE _self, - VALUE self_instance, - VALUE thread_context_collector_instance, - VALUE gc_profiling_enabled, - VALUE idle_sampling_helper_instance, - VALUE no_signals_workaround_enabled, - VALUE dynamic_sampling_rate_enabled, - VALUE dynamic_sampling_rate_overhead_target_percentage, - VALUE allocation_profiling_enabled, - VALUE skip_idle_samples_for_testing -); +static VALUE _native_initialize(int argc, VALUE *argv, DDTRACE_UNUSED VALUE _self); static void cpu_and_wall_time_worker_typed_data_mark(void *state_ptr); static VALUE _native_sampling_loop(VALUE self, VALUE instance); static VALUE _native_stop(DDTRACE_UNUSED VALUE _self, VALUE self_instance, VALUE worker_thread); @@ -216,7 +224,7 @@ static void grab_gvl_and_sample(void); static void reset_stats_not_thread_safe(struct cpu_and_wall_time_worker_state *state); static void sleep_for(uint64_t time_ns); static VALUE _native_allocation_count(DDTRACE_UNUSED VALUE self); -static void on_newobj_event(VALUE tracepoint_data, DDTRACE_UNUSED void *unused); +static void on_newobj_event(DDTRACE_UNUSED VALUE unused1, DDTRACE_UNUSED void *unused2); static void disable_tracepoints(struct cpu_and_wall_time_worker_state *state); static VALUE _native_with_blocked_sigprof(DDTRACE_UNUSED VALUE self); static VALUE rescued_sample_allocation(VALUE tracepoint_data); @@ -224,6 +232,26 @@ static void delayed_error(struct cpu_and_wall_time_worker_state *state, const ch static VALUE _native_delayed_error(DDTRACE_UNUSED VALUE self, VALUE instance, VALUE error_msg); static VALUE _native_hold_signals(DDTRACE_UNUSED VALUE self); static VALUE _native_resume_signals(DDTRACE_UNUSED VALUE self); +#ifndef NO_GVL_INSTRUMENTATION +static void on_gvl_event(rb_event_flag_t event_id, const rb_internal_thread_event_data_t *event_data, DDTRACE_UNUSED void *_unused); +static void after_gvl_running_from_postponed_job(DDTRACE_UNUSED void *_unused); +#endif +static VALUE rescued_after_gvl_running_from_postponed_job(VALUE self_instance); +static VALUE _native_gvl_profiling_hook_active(DDTRACE_UNUSED VALUE self, VALUE instance); + +// We're using `on_newobj_event` function with `rb_add_event_hook2`, which requires in its public signature a function +// with signature `rb_event_hook_func_t` which doesn't match `on_newobj_event`. +// +// But in practice, because we pass the `RUBY_EVENT_HOOK_FLAG_RAW_ARG` flag to `rb_add_event_hook2`, it casts the +// expected signature into a `rb_event_hook_raw_arg_func_t`: +// > typedef void (*rb_event_hook_raw_arg_func_t)(VALUE data, const rb_trace_arg_t *arg); (from vm_trace.c) +// which does match `on_newobj_event`. +// +// So TL;DR we're just doing this here to avoid the warning and explain why the apparent mismatch in function signatures. +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-function-type" + static const rb_event_hook_func_t on_newobj_event_as_hook = (rb_event_hook_func_t) on_newobj_event; +#pragma GCC diagnostic pop // Note on sampler global state safety: // @@ -255,8 +283,13 @@ void collectors_cpu_and_wall_time_worker_init(VALUE profiling_module) { int unused_flags = 0; sample_from_postponed_job_handle = rb_postponed_job_preregister(unused_flags, sample_from_postponed_job, NULL); after_gc_from_postponed_job_handle = rb_postponed_job_preregister(unused_flags, after_gc_from_postponed_job, NULL); + after_gvl_running_from_postponed_job_handle = rb_postponed_job_preregister(unused_flags, after_gvl_running_from_postponed_job, NULL); - if (sample_from_postponed_job_handle == POSTPONED_JOB_HANDLE_INVALID || after_gc_from_postponed_job_handle == POSTPONED_JOB_HANDLE_INVALID) { + if ( + sample_from_postponed_job_handle == POSTPONED_JOB_HANDLE_INVALID || + after_gc_from_postponed_job_handle == POSTPONED_JOB_HANDLE_INVALID || + after_gvl_running_from_postponed_job_handle == POSTPONED_JOB_HANDLE_INVALID + ) { rb_raise(rb_eRuntimeError, "Failed to register profiler postponed jobs (got POSTPONED_JOB_HANDLE_INVALID)"); } #else @@ -278,7 +311,7 @@ void collectors_cpu_and_wall_time_worker_init(VALUE profiling_module) { // https://bugs.ruby-lang.org/issues/18007 for a discussion around this. rb_define_alloc_func(collectors_cpu_and_wall_time_worker_class, _native_new); - rb_define_singleton_method(collectors_cpu_and_wall_time_worker_class, "_native_initialize", _native_initialize, 9); + rb_define_singleton_method(collectors_cpu_and_wall_time_worker_class, "_native_initialize", _native_initialize, -1); rb_define_singleton_method(collectors_cpu_and_wall_time_worker_class, "_native_sampling_loop", _native_sampling_loop, 1); rb_define_singleton_method(collectors_cpu_and_wall_time_worker_class, "_native_stop", _native_stop, 2); rb_define_singleton_method(collectors_cpu_and_wall_time_worker_class, "_native_reset_after_fork", _native_reset_after_fork, 1); @@ -289,8 +322,6 @@ void collectors_cpu_and_wall_time_worker_init(VALUE profiling_module) { rb_define_singleton_method(testing_module, "_native_current_sigprof_signal_handler", _native_current_sigprof_signal_handler, 0); rb_define_singleton_method(collectors_cpu_and_wall_time_worker_class, "_native_hold_signals", _native_hold_signals, 0); rb_define_singleton_method(collectors_cpu_and_wall_time_worker_class, "_native_resume_signals", _native_resume_signals, 0); - // TODO: Remove `_native_is_running` from `testing_module` (should be in class) once `prof-correctness` has been updated to not need it - rb_define_singleton_method(testing_module, "_native_is_running?", _native_is_running, 1); rb_define_singleton_method(testing_module, "_native_install_testing_signal_handler", _native_install_testing_signal_handler, 0); rb_define_singleton_method(testing_module, "_native_remove_testing_signal_handler", _native_remove_testing_signal_handler, 0); rb_define_singleton_method(testing_module, "_native_trigger_sample", _native_trigger_sample, 0); @@ -300,6 +331,7 @@ void collectors_cpu_and_wall_time_worker_init(VALUE profiling_module) { rb_define_singleton_method(testing_module, "_native_is_sigprof_blocked_in_current_thread", _native_is_sigprof_blocked_in_current_thread, 0); rb_define_singleton_method(testing_module, "_native_with_blocked_sigprof", _native_with_blocked_sigprof, 0); rb_define_singleton_method(testing_module, "_native_delayed_error", _native_delayed_error, 2); + rb_define_singleton_method(testing_module, "_native_gvl_profiling_hook_active", _native_gvl_profiling_hook_active, 1); } // This structure is used to define a Ruby object that stores a pointer to a struct cpu_and_wall_time_worker_state @@ -316,6 +348,8 @@ static const rb_data_type_t cpu_and_wall_time_worker_typed_data = { }; static VALUE _native_new(VALUE klass) { + long now = monotonic_wall_time_now_ns(RAISE_ON_FAILURE); + struct cpu_and_wall_time_worker_state *state = ruby_xcalloc(1, sizeof(struct cpu_and_wall_time_worker_state)); // Note: Any exceptions raised from this note until the TypedData_Wrap_Struct call will lead to the state memory @@ -325,13 +359,14 @@ static VALUE _native_new(VALUE klass) { state->no_signals_workaround_enabled = false; state->dynamic_sampling_rate_enabled = true; state->allocation_profiling_enabled = false; + state->allocation_counting_enabled = false; + state->gvl_profiling_enabled = false; state->skip_idle_samples_for_testing = false; state->thread_context_collector_instance = Qnil; state->idle_sampling_helper_instance = Qnil; state->owner_thread = Qnil; dynamic_sampling_rate_init(&state->cpu_dynamic_sampling_rate); state->gc_tracepoint = Qnil; - state->object_allocation_tracepoint = Qnil; atomic_init(&state->should_run, false); state->failure_exception = Qnil; @@ -339,14 +374,11 @@ static VALUE _native_new(VALUE klass) { state->during_sample = false; - reset_stats_not_thread_safe(state); - - long now = monotonic_wall_time_now_ns(DO_NOT_RAISE_ON_FAILURE); - if (now == 0) { - ruby_xfree(state); - rb_raise(rb_eRuntimeError, ERR_CLOCK_FAIL); - } + #ifndef NO_GVL_INSTRUMENTATION + state->gvl_profiling_hook = NULL; + #endif + reset_stats_not_thread_safe(state); discrete_dynamic_sampler_init(&state->allocation_sampler, "allocation", now); // Note: As of this writing, no new Ruby objects get created and stored in the state. If that ever changes, remember @@ -356,23 +388,30 @@ static VALUE _native_new(VALUE klass) { return state->self_instance = TypedData_Wrap_Struct(klass, &cpu_and_wall_time_worker_typed_data, state); } -static VALUE _native_initialize( - DDTRACE_UNUSED VALUE _self, - VALUE self_instance, - VALUE thread_context_collector_instance, - VALUE gc_profiling_enabled, - VALUE idle_sampling_helper_instance, - VALUE no_signals_workaround_enabled, - VALUE dynamic_sampling_rate_enabled, - VALUE dynamic_sampling_rate_overhead_target_percentage, - VALUE allocation_profiling_enabled, - VALUE skip_idle_samples_for_testing -) { +static VALUE _native_initialize(int argc, VALUE *argv, DDTRACE_UNUSED VALUE _self) { + VALUE options; + rb_scan_args(argc, argv, "0:", &options); + if (options == Qnil) options = rb_hash_new(); + + VALUE self_instance = rb_hash_fetch(options, ID2SYM(rb_intern("self_instance"))); + VALUE thread_context_collector_instance = rb_hash_fetch(options, ID2SYM(rb_intern("thread_context_collector"))); + VALUE gc_profiling_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("gc_profiling_enabled"))); + VALUE idle_sampling_helper_instance = rb_hash_fetch(options, ID2SYM(rb_intern("idle_sampling_helper"))); + VALUE no_signals_workaround_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("no_signals_workaround_enabled"))); + VALUE dynamic_sampling_rate_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("dynamic_sampling_rate_enabled"))); + VALUE dynamic_sampling_rate_overhead_target_percentage = rb_hash_fetch(options, ID2SYM(rb_intern("dynamic_sampling_rate_overhead_target_percentage"))); + VALUE allocation_profiling_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("allocation_profiling_enabled"))); + VALUE allocation_counting_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("allocation_counting_enabled"))); + VALUE gvl_profiling_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("gvl_profiling_enabled"))); + VALUE skip_idle_samples_for_testing = rb_hash_fetch(options, ID2SYM(rb_intern("skip_idle_samples_for_testing"))); + ENFORCE_BOOLEAN(gc_profiling_enabled); ENFORCE_BOOLEAN(no_signals_workaround_enabled); ENFORCE_BOOLEAN(dynamic_sampling_rate_enabled); ENFORCE_TYPE(dynamic_sampling_rate_overhead_target_percentage, T_FLOAT); ENFORCE_BOOLEAN(allocation_profiling_enabled); + ENFORCE_BOOLEAN(allocation_counting_enabled); + ENFORCE_BOOLEAN(gvl_profiling_enabled); ENFORCE_BOOLEAN(skip_idle_samples_for_testing) struct cpu_and_wall_time_worker_state *state; @@ -382,6 +421,8 @@ static VALUE _native_initialize( state->no_signals_workaround_enabled = (no_signals_workaround_enabled == Qtrue); state->dynamic_sampling_rate_enabled = (dynamic_sampling_rate_enabled == Qtrue); state->allocation_profiling_enabled = (allocation_profiling_enabled == Qtrue); + state->allocation_counting_enabled = (allocation_counting_enabled == Qtrue); + state->gvl_profiling_enabled = (gvl_profiling_enabled == Qtrue); state->skip_idle_samples_for_testing = (skip_idle_samples_for_testing == Qtrue); double total_overhead_target_percentage = NUM2DBL(dynamic_sampling_rate_overhead_target_percentage); @@ -398,7 +439,6 @@ static VALUE _native_initialize( state->thread_context_collector_instance = enforce_thread_context_collector_instance(thread_context_collector_instance); state->idle_sampling_helper_instance = idle_sampling_helper_instance; state->gc_tracepoint = rb_tracepoint_new(Qnil, RUBY_INTERNAL_EVENT_GC_ENTER | RUBY_INTERNAL_EVENT_GC_EXIT, on_gc_event, NULL /* unused */); - state->object_allocation_tracepoint = rb_tracepoint_new(Qnil, RUBY_INTERNAL_EVENT_NEWOBJ, on_newobj_event, NULL /* unused */); return Qtrue; } @@ -413,7 +453,6 @@ static void cpu_and_wall_time_worker_typed_data_mark(void *state_ptr) { rb_gc_mark(state->failure_exception); rb_gc_mark(state->stop_thread); rb_gc_mark(state->gc_tracepoint); - rb_gc_mark(state->object_allocation_tracepoint); } // Called in a background thread created in CpuAndWallTimeWorker#start @@ -759,7 +798,35 @@ static VALUE release_gvl_and_run_sampling_trigger_loop(VALUE instance) { // because they may raise exceptions. install_sigprof_signal_handler(handle_sampling_signal, "handle_sampling_signal"); if (state->gc_profiling_enabled) rb_tracepoint_enable(state->gc_tracepoint); - if (state->allocation_profiling_enabled) rb_tracepoint_enable(state->object_allocation_tracepoint); + if (state->allocation_profiling_enabled) { + rb_add_event_hook2( + on_newobj_event_as_hook, + RUBY_INTERNAL_EVENT_NEWOBJ, + state->self_instance, + RUBY_EVENT_HOOK_FLAG_SAFE | RUBY_EVENT_HOOK_FLAG_RAW_ARG) + ; + } + + if (state->gvl_profiling_enabled) { + #ifndef NO_GVL_INSTRUMENTATION + #ifdef USE_GVL_PROFILING_3_2_WORKAROUNDS + gvl_profiling_state_thread_tracking_workaround(); + #endif + + state->gvl_profiling_hook = rb_internal_thread_add_event_hook( + on_gvl_event, + ( + // For now we're only asking for these events, even though there's more + // (e.g. check docs or gvl-tracing gem) + RUBY_INTERNAL_THREAD_EVENT_READY /* waiting for gvl */ | + RUBY_INTERNAL_THREAD_EVENT_RESUMED /* running/runnable */ + ), + NULL + ); + #else + rb_raise(rb_eArgError, "GVL profiling is not supported in this Ruby version"); + #endif + } // Flag the profiler as running before we release the GVL, in case anyone's waiting to know about it rb_funcall(instance, rb_intern("signal_running"), 0); @@ -872,7 +939,6 @@ static void after_gc_from_postponed_job(DDTRACE_UNUSED void *_unused) { state->during_sample = true; - // Trigger sampling using the Collectors::ThreadState; rescue against any exceptions that happen during sampling safely_call(thread_context_collector_sample_after_gc, state->thread_context_collector_instance, state->self_instance); state->during_sample = false; @@ -979,6 +1045,14 @@ static VALUE _native_stats(DDTRACE_UNUSED VALUE self, VALUE instance) { ID2SYM(rb_intern("allocation_sampling_time_ns_avg")), /* => */ RUBY_AVG_OR_NIL(state->stats.allocation_sampling_time_ns_total, state->stats.allocation_sampled), ID2SYM(rb_intern("allocation_sampler_snapshot")), /* => */ allocation_sampler_snapshot, ID2SYM(rb_intern("allocations_during_sample")), /* => */ state->allocation_profiling_enabled ? UINT2NUM(state->stats.allocations_during_sample) : Qnil, + + // GVL profiling stats + ID2SYM(rb_intern("after_gvl_running")), /* => */ UINT2NUM(state->stats.after_gvl_running), + ID2SYM(rb_intern("gvl_dont_sample")), /* => */ UINT2NUM(state->stats.gvl_dont_sample), + ID2SYM(rb_intern("gvl_sampling_time_ns_min")), /* => */ RUBY_NUM_OR_NIL(state->stats.gvl_sampling_time_ns_min, != UINT64_MAX, ULL2NUM), + ID2SYM(rb_intern("gvl_sampling_time_ns_max")), /* => */ RUBY_NUM_OR_NIL(state->stats.gvl_sampling_time_ns_max, > 0, ULL2NUM), + ID2SYM(rb_intern("gvl_sampling_time_ns_total")), /* => */ RUBY_NUM_OR_NIL(state->stats.gvl_sampling_time_ns_total, > 0, ULL2NUM), + ID2SYM(rb_intern("gvl_sampling_time_ns_avg")), /* => */ RUBY_AVG_OR_NIL(state->stats.gvl_sampling_time_ns_total, state->stats.after_gvl_running), }; for (long unsigned int i = 0; i < VALUE_COUNT(arguments); i += 2) rb_hash_aset(stats_as_hash, arguments[i], arguments[i+1]); return stats_as_hash; @@ -1016,8 +1090,10 @@ static void reset_stats_not_thread_safe(struct cpu_and_wall_time_worker_state *s // Given the expected infrequency of resetting (~once per 60s profile) and the auxiliary/non-critical nature of these stats // this momentary loss of accuracy is deemed acceptable to keep overhead to a minimum. state->stats = (struct stats) { - .cpu_sampling_time_ns_min = UINT64_MAX, // Since we always take the min between existing and latest sample - .allocation_sampling_time_ns_min = UINT64_MAX, // Since we always take the min between existing and latest sample + // All these values are initialized to their highest value possible since we always take the min between existing and latest sample + .cpu_sampling_time_ns_min = UINT64_MAX, + .allocation_sampling_time_ns_min = UINT64_MAX, + .gvl_sampling_time_ns_min = UINT64_MAX, }; } @@ -1040,46 +1116,87 @@ static void sleep_for(uint64_t time_ns) { } static VALUE _native_allocation_count(DDTRACE_UNUSED VALUE self) { - bool are_allocations_being_tracked = active_sampler_instance_state != NULL && active_sampler_instance_state->allocation_profiling_enabled; + struct cpu_and_wall_time_worker_state *state = active_sampler_instance_state; + + bool are_allocations_being_tracked = state != NULL && state->allocation_profiling_enabled && state->allocation_counting_enabled; return are_allocations_being_tracked ? ULL2NUM(allocation_count) : Qnil; } -// Implements memory-related profiling events. This function is called by Ruby via the `object_allocation_tracepoint` -// when the RUBY_INTERNAL_EVENT_NEWOBJ event is triggered. -static void on_newobj_event(VALUE tracepoint_data, DDTRACE_UNUSED void *unused) { - // Update thread-local allocation count - if (RB_UNLIKELY(allocation_count == UINT64_MAX)) { - allocation_count = 0; - } else { - allocation_count++; - } +#define HANDLE_CLOCK_FAILURE(call) ({ \ + long _result = (call); \ + if (_result == 0) { \ + delayed_error(state, ERR_CLOCK_FAIL); \ + return; \ + } \ + _result; \ +}) +// Implements memory-related profiling events. This function is called by Ruby via the `rb_add_event_hook2` +// when the RUBY_INTERNAL_EVENT_NEWOBJ event is triggered. +// +// When allocation sampling is enabled, this function gets called for almost all* objects allocated by the Ruby VM. +// (*In some weird cases the VM may skip this tracepoint.) +// +// At a high level, there's two paths through this function: +// 1. should_sample == false -> return +// 2. should_sample == true -> sample +// +// On big applications, path 1. is the hottest, since we don't sample every object. So it's quite important for it to +// be as fast as possible. +// +// NOTE: You may be wondering why we don't use any of the arguments to this function. It turns out it's possible to just +// call `rb_tracearg_from_tracepoint(anything)` anywhere during this function or its callees to get the data, so that's +// why it's not being passed as an argument. +static void on_newobj_event(DDTRACE_UNUSED VALUE unused1, DDTRACE_UNUSED void *unused2) { struct cpu_and_wall_time_worker_state *state = active_sampler_instance_state; // Read from global variable, see "sampler global state safety" note above // This should not happen in a normal situation because the tracepoint is always enabled after the instance is set // and disabled before it is cleared, but just in case... if (state == NULL) return; - // In a few cases, we may actually be allocating an object as part of profiler sampling. We don't want to recursively + if (RB_UNLIKELY(state->allocation_counting_enabled)) { + // Update thread-local allocation count + if (RB_UNLIKELY(allocation_count == UINT64_MAX)) { + allocation_count = 0; + } else { + allocation_count++; + } + } + + // In rare cases, we may actually be allocating an object as part of profiler sampling. We don't want to recursively // sample, so we just return early if (state->during_sample) { state->stats.allocations_during_sample++; return; } - if (state->dynamic_sampling_rate_enabled) { - long now = monotonic_wall_time_now_ns(DO_NOT_RAISE_ON_FAILURE); - if (now == 0) { - delayed_error(state, ERR_CLOCK_FAIL); - return; - } - if (!discrete_dynamic_sampler_should_sample(&state->allocation_sampler, now)) { - state->stats.allocation_skipped++; - return; + // Hot path: Dynamic sampling rate is usually enabled and the sampling decision is usually false + if (RB_LIKELY(state->dynamic_sampling_rate_enabled && !discrete_dynamic_sampler_should_sample(&state->allocation_sampler))) { + state->stats.allocation_skipped++; + + coarse_instant now = monotonic_coarse_wall_time_now_ns(); + HANDLE_CLOCK_FAILURE(now.timestamp_ns); + + bool needs_readjust = discrete_dynamic_sampler_skipped_sample(&state->allocation_sampler, now); + if (RB_UNLIKELY(needs_readjust)) { + // We rarely readjust, so this is a cold path + // Also, while above we used the cheaper monotonic_coarse, for this call we want the regular monotonic call, + // which is why we end up getting time "again". + discrete_dynamic_sampler_readjust( + &state->allocation_sampler, HANDLE_CLOCK_FAILURE(monotonic_wall_time_now_ns(DO_NOT_RAISE_ON_FAILURE)) + ); } + + return; } + // From here on, we've decided to go ahead with the sample, which is way less common than skipping it + + discrete_dynamic_sampler_before_sample( + &state->allocation_sampler, HANDLE_CLOCK_FAILURE(monotonic_wall_time_now_ns(DO_NOT_RAISE_ON_FAILURE)) + ); + // @ivoanjo: Strictly speaking, this is not needed because Ruby should not call the same tracepoint while a previous // invocation is still pending, (e.g. it wouldn't call `on_newobj_event` while it's already running), but I decided // to keep this here for consistency -- every call to the thread context (other than the special gc calls which are @@ -1087,7 +1204,7 @@ static void on_newobj_event(VALUE tracepoint_data, DDTRACE_UNUSED void *unused) state->during_sample = true; // Rescue against any exceptions that happen during sampling - safely_call(rescued_sample_allocation, tracepoint_data, state->self_instance); + safely_call(rescued_sample_allocation, Qnil, state->self_instance); if (state->dynamic_sampling_rate_enabled) { long now = monotonic_wall_time_now_ns(DO_NOT_RAISE_ON_FAILURE); @@ -1112,9 +1229,15 @@ static void disable_tracepoints(struct cpu_and_wall_time_worker_state *state) { if (state->gc_tracepoint != Qnil) { rb_tracepoint_disable(state->gc_tracepoint); } - if (state->object_allocation_tracepoint != Qnil) { - rb_tracepoint_disable(state->object_allocation_tracepoint); - } + + rb_remove_event_hook_with_data(on_newobj_event_as_hook, state->self_instance); + + #ifndef NO_GVL_INSTRUMENTATION + if (state->gvl_profiling_hook) { + rb_internal_thread_remove_event_hook(state->gvl_profiling_hook); + state->gvl_profiling_hook = NULL; + } + #endif } static VALUE _native_with_blocked_sigprof(DDTRACE_UNUSED VALUE self) { @@ -1130,13 +1253,14 @@ static VALUE _native_with_blocked_sigprof(DDTRACE_UNUSED VALUE self) { } } -static VALUE rescued_sample_allocation(VALUE tracepoint_data) { +static VALUE rescued_sample_allocation(DDTRACE_UNUSED VALUE unused) { struct cpu_and_wall_time_worker_state *state = active_sampler_instance_state; // Read from global variable, see "sampler global state safety" note above // This should not happen in a normal situation because on_newobj_event already checked for this, but just in case... if (state == NULL) return Qnil; - rb_trace_arg_t *data = rb_tracearg_from_tracepoint(tracepoint_data); + // If we're getting called from inside a tracepoint/event hook, Ruby exposes the data using this function. + rb_trace_arg_t *data = rb_tracearg_from_tracepoint(Qnil); VALUE new_object = rb_tracearg_object(data); unsigned long allocations_since_last_sample = state->dynamic_sampling_rate_enabled ? @@ -1144,9 +1268,16 @@ static VALUE rescued_sample_allocation(VALUE tracepoint_data) { discrete_dynamic_sampler_events_since_last_sample(&state->allocation_sampler) : // if we aren't, then we're sampling every event 1; - // TODO: Signal in the profile that clamping happened? + + // To control bias from sampling, we clamp the maximum weight attributed to a single allocation sample. This avoids + // assigning a very large number to a sample, if for instance the dynamic sampling mechanism chose a really big interval. unsigned int weight = allocations_since_last_sample > MAX_ALLOC_WEIGHT ? MAX_ALLOC_WEIGHT : (unsigned int) allocations_since_last_sample; thread_context_collector_sample_allocation(state->thread_context_collector_instance, weight, new_object); + // ...but we still represent the skipped samples in the profile, thus the data will account for all allocations. + if (weight < allocations_since_last_sample) { + uint32_t skipped_samples = (uint32_t) uint64_min_of(allocations_since_last_sample - weight, UINT32_MAX); + thread_context_collector_sample_skipped_allocation_samples(state->thread_context_collector_instance, skipped_samples); + } // Return a dummy VALUE because we're called from rb_rescue2 which requires it return Qnil; @@ -1181,3 +1312,95 @@ static VALUE _native_resume_signals(DDTRACE_UNUSED VALUE self) { unblock_sigprof_signal_handler_from_running_in_current_thread(); return Qtrue; } + +#ifndef NO_GVL_INSTRUMENTATION + static void on_gvl_event(rb_event_flag_t event_id, const rb_internal_thread_event_data_t *event_data, DDTRACE_UNUSED void *_unused) { + // Be very careful about touching the `state` here or doing anything at all: + // This function gets called without the GVL, and potentially from background Ractors! + // + // In fact, the `target_thread` that this event is about may not even be the current thread. (So be careful with thread locals that + // are not directly tied to the `target_thread` object and the like) + gvl_profiling_thread target_thread = thread_from_event(event_data); + + if (event_id == RUBY_INTERNAL_THREAD_EVENT_READY) { /* waiting for gvl */ + thread_context_collector_on_gvl_waiting(target_thread); + } else if (event_id == RUBY_INTERNAL_THREAD_EVENT_RESUMED) { /* running/runnable */ + // Interesting note: A RUBY_INTERNAL_THREAD_EVENT_RESUMED is guaranteed to be called with the GVL being acquired. + // (And... I think target_thread will be == rb_thread_current()?) + // + // But we're not sure if we're on the main Ractor yet. The thread context collector actually can actually help here: + // it tags threads it's tracking, so if a thread is tagged then by definition we know that thread belongs to the main + // Ractor. Thus, if we get a ON_GVL_RUNNING_UNKNOWN result we shouldn't touch any state, but otherwise we're good to go. + + #ifdef USE_GVL_PROFILING_3_2_WORKAROUNDS + target_thread = gvl_profiling_state_maybe_initialize(); + #endif + + on_gvl_running_result result = thread_context_collector_on_gvl_running(target_thread); + + if (result == ON_GVL_RUNNING_SAMPLE) { + #ifndef NO_POSTPONED_TRIGGER + rb_postponed_job_trigger(after_gvl_running_from_postponed_job_handle); + #else + rb_postponed_job_register_one(0, after_gvl_running_from_postponed_job, NULL); + #endif + } else if (result == ON_GVL_RUNNING_DONT_SAMPLE) { + struct cpu_and_wall_time_worker_state *state = active_sampler_instance_state; // Read from global variable, see "sampler global state safety" note above + + if (state == NULL) return; // This should not happen, but just in case... + + state->stats.gvl_dont_sample++; + } + } else { + // This is a very delicate time and it's hard for us to raise an exception so let's at least complain to stderr + fprintf(stderr, "[ddtrace] Unexpected value in on_gvl_event (%d)\n", event_id); + } + } + + static void after_gvl_running_from_postponed_job(DDTRACE_UNUSED void *_unused) { + struct cpu_and_wall_time_worker_state *state = active_sampler_instance_state; // Read from global variable, see "sampler global state safety" note above + + // This can potentially happen if the CpuAndWallTimeWorker was stopped while the postponed job was waiting to be executed; nothing to do + if (state == NULL) return; + + state->during_sample = true; + + // Rescue against any exceptions that happen during sampling + safely_call(rescued_after_gvl_running_from_postponed_job, state->self_instance, state->self_instance); + + state->during_sample = false; + } + + static VALUE rescued_after_gvl_running_from_postponed_job(VALUE self_instance) { + struct cpu_and_wall_time_worker_state *state; + TypedData_Get_Struct(self_instance, struct cpu_and_wall_time_worker_state, &cpu_and_wall_time_worker_typed_data, state); + + long wall_time_ns_before_sample = monotonic_wall_time_now_ns(RAISE_ON_FAILURE); + thread_context_collector_sample_after_gvl_running(state->thread_context_collector_instance, rb_thread_current(), wall_time_ns_before_sample); + long wall_time_ns_after_sample = monotonic_wall_time_now_ns(RAISE_ON_FAILURE); + + long delta_ns = wall_time_ns_after_sample - wall_time_ns_before_sample; + + // Guard against wall-time going backwards, see https://github.com/DataDog/dd-trace-rb/pull/2336 for discussion. + uint64_t sampling_time_ns = delta_ns < 0 ? 0 : delta_ns; + + state->stats.gvl_sampling_time_ns_min = uint64_min_of(sampling_time_ns, state->stats.gvl_sampling_time_ns_min); + state->stats.gvl_sampling_time_ns_max = uint64_max_of(sampling_time_ns, state->stats.gvl_sampling_time_ns_max); + state->stats.gvl_sampling_time_ns_total += sampling_time_ns; + + state->stats.after_gvl_running++; + + return Qnil; + } + + static VALUE _native_gvl_profiling_hook_active(DDTRACE_UNUSED VALUE self, VALUE instance) { + struct cpu_and_wall_time_worker_state *state; + TypedData_Get_Struct(instance, struct cpu_and_wall_time_worker_state, &cpu_and_wall_time_worker_typed_data, state); + + return state->gvl_profiling_hook != NULL ? Qtrue : Qfalse; + } +#else + static VALUE _native_gvl_profiling_hook_active(DDTRACE_UNUSED VALUE self, DDTRACE_UNUSED VALUE instance) { + return Qfalse; + } +#endif diff --git a/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c b/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c index 6e188b8e83a..25fcb0b3dbe 100644 --- a/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +++ b/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c @@ -20,6 +20,9 @@ #define EMA_SMOOTHING_FACTOR 0.6 +static void maybe_readjust(discrete_dynamic_sampler *sampler, long now_ns); +static inline bool should_readjust(discrete_dynamic_sampler *sampler, coarse_instant now); + void discrete_dynamic_sampler_init(discrete_dynamic_sampler *sampler, const char *debug_name, long now_ns) { sampler->debug_name = debug_name; discrete_dynamic_sampler_set_overhead_target_percentage(sampler, BASE_OVERHEAD_PCT, now_ns); @@ -54,27 +57,25 @@ void discrete_dynamic_sampler_set_overhead_target_percentage(discrete_dynamic_sa return discrete_dynamic_sampler_reset(sampler, now_ns); } -static void maybe_readjust(discrete_dynamic_sampler *sampler, long now); - -bool discrete_dynamic_sampler_should_sample(discrete_dynamic_sampler *sampler, long now_ns) { +// NOTE: See header for an explanation of when this should get used +__attribute__((warn_unused_result)) +bool discrete_dynamic_sampler_should_sample(discrete_dynamic_sampler *sampler) { // For efficiency reasons we don't do true random sampling but rather systematic // sampling following a sample interval/skip. This can be biased and hide patterns - // but the dynamic interval and rather indeterministic pattern of allocations in + // but the dynamic interval and rather nondeterministic pattern of allocations in // most real applications should help reduce the bias impact. sampler->events_since_last_sample++; sampler->events_since_last_readjustment++; - bool should_sample = sampler->sampling_interval > 0 && sampler->events_since_last_sample >= sampler->sampling_interval; - if (should_sample) { - sampler->sample_start_time_ns = now_ns; - } else { - // check if we should readjust our sampler after this event, even if we didn't sample it - maybe_readjust(sampler, now_ns); - } + return sampler->sampling_interval > 0 && sampler->events_since_last_sample >= sampler->sampling_interval; +} - return should_sample; +// NOTE: See header for an explanation of when this should get used +void discrete_dynamic_sampler_before_sample(discrete_dynamic_sampler *sampler, long now_ns) { + sampler->sample_start_time_ns = now_ns; } +// NOTE: See header for an explanation of when this should get used long discrete_dynamic_sampler_after_sample(discrete_dynamic_sampler *sampler, long now_ns) { long last_sampling_time_ns = sampler->sample_start_time_ns == 0 ? 0 : long_max_of(0, now_ns - sampler->sample_start_time_ns); sampler->samples_since_last_readjustment++; @@ -91,10 +92,15 @@ double discrete_dynamic_sampler_probability(discrete_dynamic_sampler *sampler) { return sampler->sampling_probability * 100.; } -size_t discrete_dynamic_sampler_events_since_last_sample(discrete_dynamic_sampler *sampler) { +unsigned long discrete_dynamic_sampler_events_since_last_sample(discrete_dynamic_sampler *sampler) { return sampler->events_since_last_sample; } +// NOTE: See header for an explanation of when this should get used +bool discrete_dynamic_sampler_skipped_sample(discrete_dynamic_sampler *sampler, coarse_instant now) { + return should_readjust(sampler, now); +} + static double ewma_adj_window(double latest_value, double avg, long current_window_time_ns, bool is_first) { if (is_first) { return latest_value; @@ -109,19 +115,27 @@ static double ewma_adj_window(double latest_value, double avg, long current_wind return (1-alpha) * avg + alpha * latest_value; } -static void maybe_readjust(discrete_dynamic_sampler *sampler, long now) { - long this_window_time_ns = sampler->last_readjust_time_ns == 0 ? ADJUSTMENT_WINDOW_NS : now - sampler->last_readjust_time_ns; +static void maybe_readjust(discrete_dynamic_sampler *sampler, long now_ns) { + if (should_readjust(sampler, to_coarse_instant(now_ns))) discrete_dynamic_sampler_readjust(sampler, now_ns); +} + +static inline bool should_readjust(discrete_dynamic_sampler *sampler, coarse_instant now) { + long this_window_time_ns = + sampler->last_readjust_time_ns == 0 ? ADJUSTMENT_WINDOW_NS : now.timestamp_ns - sampler->last_readjust_time_ns; bool should_readjust_based_on_time = this_window_time_ns >= ADJUSTMENT_WINDOW_NS; bool should_readjust_based_on_samples = sampler->samples_since_last_readjustment >= ADJUSTMENT_WINDOW_SAMPLES; - if (!should_readjust_based_on_time && !should_readjust_based_on_samples) { - // not enough time or samples have passed to perform a readjustment - return; - } + return should_readjust_based_on_time || should_readjust_based_on_samples; +} - if (this_window_time_ns == 0) { - // should not be possible given previous condition but lets protect against div by 0 below. +// NOTE: This method ASSUMES should_readjust == true +// NOTE: See header for an explanation of when this should get used +void discrete_dynamic_sampler_readjust(discrete_dynamic_sampler *sampler, long now_ns) { + long this_window_time_ns = sampler->last_readjust_time_ns == 0 ? ADJUSTMENT_WINDOW_NS : now_ns - sampler->last_readjust_time_ns; + + if (this_window_time_ns <= 0) { + // should not be possible given should_readjust but lets protect against div by 0 below. return; } @@ -143,7 +157,7 @@ static void maybe_readjust(discrete_dynamic_sampler *sampler, long now) { // Lets update our average sampling time per event long avg_sampling_time_in_window_ns = sampler->samples_since_last_readjustment == 0 ? 0 : sampler->sampling_time_since_last_readjustment_ns / sampler->samples_since_last_readjustment; if (avg_sampling_time_in_window_ns > sampler->max_sampling_time_ns) { - // If the average sampling time in the previous window was deemed unnacceptable, clamp it to the + // If the average sampling time in the previous window was deemed unacceptable, clamp it to the // maximum acceptable value and register this operation in our counter. // NOTE: This is important so that events like suspensions or system overloads do not lead us to // learn arbitrarily big sampling times which may then result in us not sampling anything @@ -245,7 +259,9 @@ static void maybe_readjust(discrete_dynamic_sampler *sampler, long now) { // are so big they don't fit into the sampling_interval. In both cases lets just disable sampling until next readjustment // by setting interval to 0. double sampling_interval = sampler->sampling_probability == 0 ? 0 : ceil(1.0 / sampler->sampling_probability); - sampler->sampling_interval = sampling_interval > ULONG_MAX ? 0 : sampling_interval; + // NOTE: We use UINT32_MAX instead of ULONG_MAX here to avoid clang warnings; in practice, we shouldn't ever hit + // such high sampling intervals. + sampler->sampling_interval = sampling_interval > UINT32_MAX ? 0 : sampling_interval; #ifdef DD_DEBUG double allocs_in_60s = sampler->events_per_ns * 1e9 * 60; @@ -255,9 +271,7 @@ static void maybe_readjust(discrete_dynamic_sampler *sampler, long now) { double num_this_windows_in_60s = 60 * 1e9 / this_window_time_ns; double real_total_sampling_time_in_60s = sampler->sampling_time_since_last_readjustment_ns * num_this_windows_in_60s / 1e9; - const char* readjustment_reason = should_readjust_based_on_time ? "time" : "samples"; - - fprintf(stderr, "[dds.%s] readjusting due to %s...\n", sampler->debug_name, readjustment_reason); + fprintf(stderr, "[dds.%s] readjusting...\n", sampler->debug_name); fprintf(stderr, "events_since_last_readjustment=%ld\n", sampler->events_since_last_readjustment); fprintf(stderr, "samples_since_last_readjustment=%ld\n", sampler->samples_since_last_readjustment); fprintf(stderr, "this_window_time=%ld\n", this_window_time_ns); @@ -286,7 +300,7 @@ static void maybe_readjust(discrete_dynamic_sampler *sampler, long now) { sampler->events_since_last_readjustment = 0; sampler->samples_since_last_readjustment = 0; sampler->sampling_time_since_last_readjustment_ns = 0; - sampler->last_readjust_time_ns = now; + sampler->last_readjust_time_ns = now_ns; sampler->has_completed_full_adjustment_window = true; } @@ -406,7 +420,14 @@ VALUE _native_should_sample(VALUE self, VALUE now_ns) { sampler_state *state; TypedData_Get_Struct(self, sampler_state, &sampler_typed_data, state); - return discrete_dynamic_sampler_should_sample(&state->sampler, NUM2LONG(now_ns)) ? Qtrue : Qfalse; + if (discrete_dynamic_sampler_should_sample(&state->sampler)) { + discrete_dynamic_sampler_before_sample(&state->sampler, NUM2LONG(now_ns)); + return Qtrue; + } else { + bool needs_readjust = discrete_dynamic_sampler_skipped_sample(&state->sampler, to_coarse_instant(NUM2LONG(now_ns))); + if (needs_readjust) discrete_dynamic_sampler_readjust(&state->sampler, NUM2LONG(now_ns)); + return Qfalse; + } } VALUE _native_after_sample(VALUE self, VALUE now_ns) { diff --git a/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.h b/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.h index 374dc453b6d..7e1edfb5c42 100644 --- a/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.h +++ b/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.h @@ -5,6 +5,8 @@ #include +#include "time_helpers.h" + // A sampler that will sample discrete events based on the overhead of their // sampling. // @@ -62,7 +64,6 @@ typedef struct discrete_dynamic_sampler { unsigned long sampling_time_clamps; } discrete_dynamic_sampler; - // Init a new sampler with sane defaults. void discrete_dynamic_sampler_init(discrete_dynamic_sampler *sampler, const char *debug_name, long now_ns); @@ -80,9 +81,38 @@ void discrete_dynamic_sampler_set_overhead_target_percentage(discrete_dynamic_sa // @return True if the event associated with this decision should be sampled, false // otherwise. // -// NOTE: If true is returned we implicitly assume the start of a sampling operation -// and it is expected that a follow-up after_sample call is issued. -bool discrete_dynamic_sampler_should_sample(discrete_dynamic_sampler *sampler, long now_ns); +// IMPORTANT: A call to this method MUST be followed by a call to either +// `discrete_dynamic_sampler_before_sample` if return is `true` or +// `discrete_dynamic_sampler_skipped_sample` if return is `false`. +// +// In the past, this method took care of before_sample/skipped_sample/readjust as well. +// We've had to split it up because we wanted to both use coarse time and regular monotonic time depending on the +// situation, but also wanted time to come as an argument from the outside. +// +// TL;DR here's how they should be used as Ruby code: +// if discrete_dynamic_sampler_should_sample +// discrete_dynamic_sampler_before_sample(monotonic_wall_time_now_ns()) +// else +// needs_readjust = discrete_dynamic_sampler_skipped_sample(monotonic_coarse_wall_time_now_ns()) +// discrete_dynamic_sampler_readjust(monotonic_wall_time_now_ns()) if needs_readjust +// end +__attribute__((warn_unused_result)) +bool discrete_dynamic_sampler_should_sample(discrete_dynamic_sampler *sampler); + +// Signal the start of a sampling operation. +// MUST be called after `discrete_dynamic_sampler_should_sample` returns `true`. +void discrete_dynamic_sampler_before_sample(discrete_dynamic_sampler *sampler, long now_ns); + +// Signals that sampling did not happen +// MUST be called after `discrete_dynamic_sampler_skipped_sample` returns `false`. +// +// @return True if the sampler needs to be readjusted. +// +// IMPORTANT: A call to this method MUST be followed by a call to `discrete_dynamic_sampler_readjust` if return is `true`. +__attribute__((warn_unused_result)) +bool discrete_dynamic_sampler_skipped_sample(discrete_dynamic_sampler *sampler, coarse_instant now); + +void discrete_dynamic_sampler_readjust(discrete_dynamic_sampler *sampler, long now_ns); // Signal the end of a sampling operation. // diff --git a/ext/datadog_profiling_native_extension/collectors_stack.c b/ext/datadog_profiling_native_extension/collectors_stack.c index 733aeba4104..c7445dfc9ca 100644 --- a/ext/datadog_profiling_native_extension/collectors_stack.c +++ b/ext/datadog_profiling_native_extension/collectors_stack.c @@ -15,56 +15,72 @@ static VALUE missing_string = Qnil; // Used as scratch space during sampling struct sampling_buffer { - unsigned int max_frames; - VALUE *stack_buffer; - int *lines_buffer; - bool *is_ruby_frame; + uint16_t max_frames; ddog_prof_Location *locations; + frame_info *stack_buffer; }; // Note: typedef'd in the header to sampling_buffer -static VALUE _native_sample( - VALUE self, - VALUE thread, - VALUE recorder_instance, - VALUE metric_values_hash, - VALUE labels_array, - VALUE numeric_labels_array, - VALUE max_frames, - VALUE in_gc -); +static VALUE _native_sample(int argc, VALUE *argv, DDTRACE_UNUSED VALUE _self); +static VALUE native_sample_do(VALUE args); +static VALUE native_sample_ensure(VALUE args); static void maybe_add_placeholder_frames_omitted(VALUE thread, sampling_buffer* buffer, char *frames_omitted_message, int frames_omitted_message_size); -static void record_placeholder_stack_in_native_code(sampling_buffer* buffer, VALUE recorder_instance, sample_values values, sample_labels labels); +static void record_placeholder_stack_in_native_code(VALUE recorder_instance, sample_values values, sample_labels labels); static void maybe_trim_template_random_ids(ddog_CharSlice *name_slice, ddog_CharSlice *filename_slice); +// These two functions are exposed as symbols by the VM but are not in any header. +// Their signatures actually take a `const rb_iseq_t *iseq` but it gets casted back and forth between VALUE. +extern VALUE rb_iseq_path(const VALUE); +extern VALUE rb_iseq_base_label(const VALUE); + void collectors_stack_init(VALUE profiling_module) { VALUE collectors_module = rb_define_module_under(profiling_module, "Collectors"); VALUE collectors_stack_class = rb_define_class_under(collectors_module, "Stack", rb_cObject); // Hosts methods used for testing the native code using RSpec VALUE testing_module = rb_define_module_under(collectors_stack_class, "Testing"); - rb_define_singleton_method(testing_module, "_native_sample", _native_sample, 7); + rb_define_singleton_method(testing_module, "_native_sample", _native_sample, -1); missing_string = rb_str_new2(""); rb_global_variable(&missing_string); } +struct native_sample_args { + VALUE in_gc; + VALUE recorder_instance; + sample_values values; + sample_labels labels; + VALUE thread; + ddog_prof_Location *locations; + sampling_buffer *buffer; +}; + // This method exists only to enable testing Datadog::Profiling::Collectors::Stack behavior using RSpec. // It SHOULD NOT be used for other purposes. -static VALUE _native_sample( - DDTRACE_UNUSED VALUE _self, - VALUE thread, - VALUE recorder_instance, - VALUE metric_values_hash, - VALUE labels_array, - VALUE numeric_labels_array, - VALUE max_frames, - VALUE in_gc -) { +static VALUE _native_sample(int argc, VALUE *argv, DDTRACE_UNUSED VALUE _self) { + // Positional args + VALUE thread; + VALUE recorder_instance; + VALUE metric_values_hash; + VALUE labels_array; + VALUE numeric_labels_array; + VALUE options; + + rb_scan_args(argc, argv, "5:", &thread, &recorder_instance, &metric_values_hash, &labels_array, &numeric_labels_array, &options); + + if (options == Qnil) options = rb_hash_new(); + + // Optional keyword args + VALUE max_frames = rb_hash_lookup2(options, ID2SYM(rb_intern("max_frames")), INT2NUM(400)); + VALUE in_gc = rb_hash_lookup2(options, ID2SYM(rb_intern("in_gc")), Qfalse); + VALUE is_gvl_waiting_state = rb_hash_lookup2(options, ID2SYM(rb_intern("is_gvl_waiting_state")), Qfalse); + ENFORCE_TYPE(metric_values_hash, T_HASH); ENFORCE_TYPE(labels_array, T_ARRAY); ENFORCE_TYPE(numeric_labels_array, T_ARRAY); VALUE zero = INT2NUM(0); + VALUE heap_sample = rb_hash_lookup2(metric_values_hash, rb_str_new_cstr("heap_sample"), Qfalse); + ENFORCE_BOOLEAN(heap_sample); sample_values values = { .cpu_time_ns = NUM2UINT(rb_hash_lookup2(metric_values_hash, rb_str_new_cstr("cpu-time"), zero)), .cpu_or_wall_samples = NUM2UINT(rb_hash_lookup2(metric_values_hash, rb_str_new_cstr("cpu-samples"), zero)), @@ -72,6 +88,7 @@ static VALUE _native_sample( .alloc_samples = NUM2UINT(rb_hash_lookup2(metric_values_hash, rb_str_new_cstr("alloc-samples"), zero)), .alloc_samples_unscaled = NUM2UINT(rb_hash_lookup2(metric_values_hash, rb_str_new_cstr("alloc-samples-unscaled"), zero)), .timeline_wall_time_ns = NUM2UINT(rb_hash_lookup2(metric_values_hash, rb_str_new_cstr("timeline"), zero)), + .heap_sample = heap_sample == Qtrue, }; long labels_count = RARRAY_LEN(labels_array) + RARRAY_LEN(numeric_labels_array); @@ -99,32 +116,54 @@ static VALUE _native_sample( }; } - int max_frames_requested = NUM2INT(max_frames); - if (max_frames_requested < 0) rb_raise(rb_eArgError, "Invalid max_frames: value must not be negative"); + int max_frames_requested = sampling_buffer_check_max_frames(NUM2INT(max_frames)); - sampling_buffer *buffer = sampling_buffer_new(max_frames_requested); + ddog_prof_Location *locations = ruby_xcalloc(max_frames_requested, sizeof(ddog_prof_Location)); + sampling_buffer *buffer = sampling_buffer_new(max_frames_requested, locations); ddog_prof_Slice_Label slice_labels = {.ptr = labels, .len = labels_count}; - if (in_gc == Qtrue) { + struct native_sample_args args_struct = { + .in_gc = in_gc, + .recorder_instance = recorder_instance, + .values = values, + .labels = (sample_labels) {.labels = slice_labels, .state_label = state_label, .is_gvl_waiting_state = is_gvl_waiting_state == Qtrue}, + .thread = thread, + .locations = locations, + .buffer = buffer, + }; + + return rb_ensure(native_sample_do, (VALUE) &args_struct, native_sample_ensure, (VALUE) &args_struct); +} + +static VALUE native_sample_do(VALUE args) { + struct native_sample_args *args_struct = (struct native_sample_args *) args; + + if (args_struct->in_gc == Qtrue) { record_placeholder_stack( - buffer, - recorder_instance, - values, - (sample_labels) {.labels = slice_labels, .state_label = state_label}, + args_struct->recorder_instance, + args_struct->values, + args_struct->labels, DDOG_CHARSLICE_C("Garbage Collection") ); } else { sample_thread( - thread, - buffer, - recorder_instance, - values, - (sample_labels) {.labels = slice_labels, .state_label = state_label} + args_struct->thread, + args_struct->buffer, + args_struct->recorder_instance, + args_struct->values, + args_struct->labels ); } - sampling_buffer_free(buffer); + return Qtrue; +} + +static VALUE native_sample_ensure(VALUE args) { + struct native_sample_args *args_struct = (struct native_sample_args *) args; + + ruby_xfree(args_struct->locations); + sampling_buffer_free(args_struct->buffer); return Qtrue; } @@ -151,47 +190,59 @@ void sample_thread( thread, 0 /* stack starting depth */, buffer->max_frames, - buffer->stack_buffer, - buffer->lines_buffer, - buffer->is_ruby_frame + buffer->stack_buffer ); if (captured_frames == PLACEHOLDER_STACK_IN_NATIVE_CODE) { - record_placeholder_stack_in_native_code(buffer, recorder_instance, values, labels); + record_placeholder_stack_in_native_code(recorder_instance, values, labels); return; } + // if (captured_frames > 0) { + // int cache_hits = 0; + // for (int i = 0; i < captured_frames; i++) { + // if (buffer->stack_buffer[i].same_frame) cache_hits++; + // } + // fprintf(stderr, "Sampling cache hits: %f\n", ((double) cache_hits / captured_frames) * 100); + // } + // Ruby does not give us path and line number for methods implemented using native code. // The convention in Kernel#caller_locations is to instead use the path and line number of the first Ruby frame // on the stack that is below (e.g. directly or indirectly has called) the native method. // Thus, we keep that frame here to able to replicate that behavior. - // (This is why we also iterate the sampling buffers backwards below -- so that it's easier to keep the last_ruby_frame) - VALUE last_ruby_frame = Qnil; + // (This is why we also iterate the sampling buffers backwards below -- so that it's easier to keep the last_ruby_frame_filename) + VALUE last_ruby_frame_filename = Qnil; int last_ruby_line = 0; ddog_prof_Label *state_label = labels.state_label; bool cpu_or_wall_sample = values.cpu_or_wall_samples > 0; bool has_cpu_time = cpu_or_wall_sample && values.cpu_time_ns > 0; - bool only_wall_time = cpu_or_wall_sample && values.cpu_time_ns == 0 && values.wall_time_ns > 0; + // Note: In theory, a cpu_or_wall_sample should always have some wall-time. In practice, the first sample for a thread + // will be zero, as well as if the system clock does something weird. Thus, at some point we had values.wall_time_ns > 0 + // here, but >= 0 makes this easier to understand/debug. + bool only_wall_time = cpu_or_wall_sample && values.cpu_time_ns == 0 && values.wall_time_ns >= 0; if (cpu_or_wall_sample && state_label == NULL) rb_raise(rb_eRuntimeError, "BUG: Unexpected missing state_label"); - if (has_cpu_time) state_label->str = DDOG_CHARSLICE_C("had cpu"); + if (has_cpu_time) { + state_label->str = DDOG_CHARSLICE_C("had cpu"); + if (labels.is_gvl_waiting_state) rb_raise(rb_eRuntimeError, "BUG: Unexpected combination of cpu-time with is_gvl_waiting"); + } for (int i = captured_frames - 1; i >= 0; i--) { VALUE name, filename; int line; - if (buffer->is_ruby_frame[i]) { - last_ruby_frame = buffer->stack_buffer[i]; - last_ruby_line = buffer->lines_buffer[i]; + if (buffer->stack_buffer[i].is_ruby_frame) { + name = rb_iseq_base_label(buffer->stack_buffer[i].as.ruby_frame.iseq); + filename = rb_iseq_path(buffer->stack_buffer[i].as.ruby_frame.iseq); + line = buffer->stack_buffer[i].as.ruby_frame.line; - name = rb_profile_frame_base_label(buffer->stack_buffer[i]); - filename = rb_profile_frame_path(buffer->stack_buffer[i]); - line = buffer->lines_buffer[i]; + last_ruby_frame_filename = filename; + last_ruby_line = line; } else { - name = ddtrace_rb_profile_frame_method_name(buffer->stack_buffer[i]); - filename = NIL_P(last_ruby_frame) ? Qnil : rb_profile_frame_path(last_ruby_frame); + name = rb_id2str(buffer->stack_buffer[i].as.native_frame.method_id); + filename = last_ruby_frame_filename; line = last_ruby_line; } @@ -206,12 +257,15 @@ void sample_thread( bool top_of_the_stack = i == 0; // When there's only wall-time in a sample, this means that the thread was not active in the sampled period. - // - // We try to categorize what it was doing based on what we observe at the top of the stack. This is a very rough - // approximation, and in the future we hope to replace this with a more accurate approach (such as using the - // GVL instrumentation API.) if (top_of_the_stack && only_wall_time) { - if (!buffer->is_ruby_frame[i]) { + // Did the caller already provide the state? + if (labels.is_gvl_waiting_state) { + state_label->str = DDOG_CHARSLICE_C("waiting for gvl"); + + // Otherwise, we try to categorize what the thread was doing based on what we observe at the top of the stack. This is a very rough + // approximation, and in the future we hope to replace this with a more accurate approach (such as using the + // GVL instrumentation API.) + } else if (!buffer->stack_buffer[i].is_ruby_frame) { // We know that known versions of Ruby implement these using native code; thus if we find a method with the // same name that is not native code, we ignore it, as it's probably a user method that coincidentally // has the same name. Thus, even though "matching just by method name" is kinda weak, @@ -246,10 +300,8 @@ void sample_thread( } buffer->locations[i] = (ddog_prof_Location) { - .function = (ddog_prof_Function) { - .name = name_slice, - .filename = filename_slice, - }, + .mapping = {.filename = DDOG_CHARSLICE_C(""), .build_id = DDOG_CHARSLICE_C("")}, + .function = (ddog_prof_Function) {.name = name_slice, .filename = filename_slice}, .line = line, }; } @@ -287,7 +339,9 @@ static void maybe_trim_template_random_ids(ddog_CharSlice *name_slice, ddog_Char // Check filename doesn't end with ".rb"; templates are usually along the lines of .html.erb/.html.haml/... if (filename_slice->len < 3 || memcmp(filename_slice->ptr + filename_slice->len - 3, ".rb", 3) == 0) return; - int pos = name_slice->len - 1; + if (name_slice->len > 1024) return; + + int pos = ((int) name_slice->len) - 1; // Let's match on something__number_number: // Find start of id suffix from the end... @@ -325,6 +379,7 @@ static void maybe_add_placeholder_frames_omitted(VALUE thread, sampling_buffer* ddog_CharSlice function_name = DDOG_CHARSLICE_C(""); ddog_CharSlice function_filename = {.ptr = frames_omitted_message, .len = strlen(frames_omitted_message)}; buffer->locations[buffer->max_frames - 1] = (ddog_prof_Location) { + .mapping = {.filename = DDOG_CHARSLICE_C(""), .build_id = DDOG_CHARSLICE_C("")}, .function = (ddog_prof_Function) {.name = function_name, .filename = function_filename}, .line = 0, }; @@ -352,13 +407,11 @@ static void maybe_add_placeholder_frames_omitted(VALUE thread, sampling_buffer* // with one containing a placeholder frame, so that these threads are properly represented in the UX. static void record_placeholder_stack_in_native_code( - sampling_buffer* buffer, VALUE recorder_instance, sample_values values, sample_labels labels ) { record_placeholder_stack( - buffer, recorder_instance, values, labels, @@ -367,36 +420,40 @@ static void record_placeholder_stack_in_native_code( } void record_placeholder_stack( - sampling_buffer* buffer, VALUE recorder_instance, sample_values values, sample_labels labels, ddog_CharSlice placeholder_stack ) { - ddog_prof_Function placeholder = {.name = DDOG_CHARSLICE_C(""), .filename = placeholder_stack}; - buffer->locations[0] = (ddog_prof_Location) {.function = placeholder, .line = 0}; + ddog_prof_Location placeholder_location = { + .mapping = {.filename = DDOG_CHARSLICE_C(""), .build_id = DDOG_CHARSLICE_C("")}, + .function = {.name = DDOG_CHARSLICE_C(""), .filename = placeholder_stack}, + .line = 0, + }; record_sample( recorder_instance, - (ddog_prof_Slice_Location) {.ptr = buffer->locations, .len = 1}, + (ddog_prof_Slice_Location) {.ptr = &placeholder_location, .len = 1}, values, labels ); } -sampling_buffer *sampling_buffer_new(unsigned int max_frames) { +uint16_t sampling_buffer_check_max_frames(int max_frames) { if (max_frames < 5) rb_raise(rb_eArgError, "Invalid max_frames: value must be >= 5"); if (max_frames > MAX_FRAMES_LIMIT) rb_raise(rb_eArgError, "Invalid max_frames: value must be <= " MAX_FRAMES_LIMIT_AS_STRING); + return max_frames; +} + +sampling_buffer *sampling_buffer_new(uint16_t max_frames, ddog_prof_Location *locations) { + sampling_buffer_check_max_frames(max_frames); // Note: never returns NULL; if out of memory, it calls the Ruby out-of-memory handlers sampling_buffer* buffer = ruby_xcalloc(1, sizeof(sampling_buffer)); buffer->max_frames = max_frames; - - buffer->stack_buffer = ruby_xcalloc(max_frames, sizeof(VALUE)); - buffer->lines_buffer = ruby_xcalloc(max_frames, sizeof(int)); - buffer->is_ruby_frame = ruby_xcalloc(max_frames, sizeof(bool)); - buffer->locations = ruby_xcalloc(max_frames, sizeof(ddog_prof_Location)); + buffer->locations = locations; + buffer->stack_buffer = ruby_xcalloc(max_frames, sizeof(frame_info)); return buffer; } @@ -404,10 +461,8 @@ sampling_buffer *sampling_buffer_new(unsigned int max_frames) { void sampling_buffer_free(sampling_buffer *buffer) { if (buffer == NULL) rb_raise(rb_eArgError, "sampling_buffer_free called with NULL buffer"); + // buffer->locations are owned by whoever called sampling_buffer_new, not us ruby_xfree(buffer->stack_buffer); - ruby_xfree(buffer->lines_buffer); - ruby_xfree(buffer->is_ruby_frame); - ruby_xfree(buffer->locations); ruby_xfree(buffer); } diff --git a/ext/datadog_profiling_native_extension/collectors_stack.h b/ext/datadog_profiling_native_extension/collectors_stack.h index 816407ff8cc..96d8b10355c 100644 --- a/ext/datadog_profiling_native_extension/collectors_stack.h +++ b/ext/datadog_profiling_native_extension/collectors_stack.h @@ -17,11 +17,11 @@ void sample_thread( sample_labels labels ); void record_placeholder_stack( - sampling_buffer* buffer, VALUE recorder_instance, sample_values values, sample_labels labels, ddog_CharSlice placeholder_stack ); -sampling_buffer *sampling_buffer_new(unsigned int max_frames); +uint16_t sampling_buffer_check_max_frames(int max_frames); +sampling_buffer *sampling_buffer_new(uint16_t max_frames, ddog_prof_Location *locations); void sampling_buffer_free(sampling_buffer *buffer); diff --git a/ext/datadog_profiling_native_extension/collectors_thread_context.c b/ext/datadog_profiling_native_extension/collectors_thread_context.c index eacb5057ad5..5ce6f53a334 100644 --- a/ext/datadog_profiling_native_extension/collectors_thread_context.c +++ b/ext/datadog_profiling_native_extension/collectors_thread_context.c @@ -76,6 +76,11 @@ #define MISSING_TRACER_CONTEXT_KEY 0 #define TIME_BETWEEN_GC_EVENTS_NS MILLIS_AS_NS(10) +// This is used as a placeholder to mark threads that are allowed to be profiled (enabled) +// (e.g. to avoid trying to gvl profile threads that are not from the main Ractor) +// and for which there's no data yet +#define GVL_WAITING_ENABLED_EMPTY RUBY_FIXNUM_MAX + static ID at_active_span_id; // id of :@active_span in Ruby static ID at_active_trace_id; // id of :@active_trace in Ruby static ID at_id_id; // id of :@id in Ruby @@ -86,13 +91,34 @@ static ID at_otel_values_id; // id of :@otel_values in Ruby static ID at_parent_span_id_id; // id of :@parent_span_id in Ruby static ID at_datadog_trace_id; // id of :@datadog_trace in Ruby +// Used to support reading trace identifiers from the opentelemetry Ruby library when the ddtrace gem tracing +// integration is NOT in use. +static ID at_span_id_id; // id of :@span_id in Ruby +static ID at_trace_id_id; // id of :@trace_id in Ruby +static ID at_entries_id; // id of :@entries in Ruby +static ID at_context_id; // id of :@context in Ruby +static ID at_kind_id; // id of :@kind in Ruby +static ID at_name_id; // id of :@name in Ruby +static ID server_id; // id of :server in Ruby +static ID otel_context_storage_id; // id of :__opentelemetry_context_storage__ in Ruby + +// This is used by `thread_context_collector_on_gvl_running`. Because when that method gets called we're not sure if +// it's safe to access the state of the thread context collector, we store this setting as a global value. This does +// mean this setting is shared among all thread context collectors, and thus it's "last writer wins". +// In production this should not be a problem: there should only be one profiler, which is the last one created, +// and that'll be the one that last wrote this setting. +static uint32_t global_waiting_for_gvl_threshold_ns = MILLIS_AS_NS(10); + +typedef enum { OTEL_CONTEXT_ENABLED_FALSE, OTEL_CONTEXT_ENABLED_ONLY, OTEL_CONTEXT_ENABLED_BOTH } otel_context_enabled; + // Contains state for a single ThreadContext instance struct thread_context_collector_state { // Note: Places in this file that usually need to be changed when this struct is changed are tagged with // "Update this when modifying state struct" // Required by Datadog::Profiling::Collectors::Stack as a scratch buffer during sampling - sampling_buffer *sampling_buffer; + ddog_prof_Location *locations; + uint16_t max_frames; // Hashmap st_table *hash_map_per_thread_context; // Datadog::Profiling::StackRecorder instance @@ -111,13 +137,15 @@ struct thread_context_collector_state { bool endpoint_collection_enabled; // Used to omit timestamps / timeline events from collected data bool timeline_enabled; - // Used to omit class information from collected allocation data - bool allocation_type_enabled; + // Used to control context collection + otel_context_enabled otel_context_enabled; // Used when calling monotonic_to_system_epoch_ns monotonic_to_system_epoch_state time_converter_state; // Used to identify the main thread, to give it a fallback name VALUE main_thread; // Used when extracting trace identifiers from otel spans. Lazily initialized. + // Qtrue serves as a marker we've not yet extracted it; when we try to extract it, we set it to an object if + // successful and Qnil if not. VALUE otel_current_span_key; struct stats { @@ -138,6 +166,7 @@ struct thread_context_collector_state { // Tracks per-thread state struct per_thread_context { + sampling_buffer *sampling_buffer; char thread_id[THREAD_ID_LIMIT_CHARS]; ddog_CharSlice thread_id_char_slice; char thread_invoke_location[THREAD_INVOKE_LOCATION_LIMIT_CHARS]; @@ -162,30 +191,28 @@ struct trace_identifiers { VALUE trace_endpoint; }; +struct otel_span { + VALUE span; + VALUE span_id; + VALUE trace_id; +}; + static void thread_context_collector_typed_data_mark(void *state_ptr); static void thread_context_collector_typed_data_free(void *state_ptr); static int hash_map_per_thread_context_mark(st_data_t key_thread, st_data_t _value, st_data_t _argument); static int hash_map_per_thread_context_free_values(st_data_t _thread, st_data_t value_per_thread_context, st_data_t _argument); static VALUE _native_new(VALUE klass); -static VALUE _native_initialize( - VALUE self, - VALUE collector_instance, - VALUE recorder_instance, - VALUE max_frames, - VALUE tracer_context_key, - VALUE endpoint_collection_enabled, - VALUE timeline_enabled, - VALUE allocation_type_enabled -); +static VALUE _native_initialize(int argc, VALUE *argv, DDTRACE_UNUSED VALUE _self); static VALUE _native_sample(VALUE self, VALUE collector_instance, VALUE profiler_overhead_stack_thread); static VALUE _native_on_gc_start(VALUE self, VALUE collector_instance); static VALUE _native_on_gc_finish(VALUE self, VALUE collector_instance); -static VALUE _native_sample_after_gc(DDTRACE_UNUSED VALUE self, VALUE collector_instance); -void update_metrics_and_sample( +static VALUE _native_sample_after_gc(DDTRACE_UNUSED VALUE self, VALUE collector_instance, VALUE reset_monotonic_to_system_state); +static void update_metrics_and_sample( struct thread_context_collector_state *state, VALUE thread_being_sampled, - VALUE profiler_overhead_stack_thread, + VALUE stack_from_thread, struct per_thread_context *thread_context, + sampling_buffer* sampling_buffer, long current_cpu_time_ns, long current_monotonic_wall_time_ns ); @@ -194,15 +221,18 @@ static void trigger_sample_for_thread( VALUE thread, VALUE stack_from_thread, struct per_thread_context *thread_context, + sampling_buffer* sampling_buffer, sample_values values, long current_monotonic_wall_time_ns, ddog_CharSlice *ruby_vm_type, - ddog_CharSlice *class_name + ddog_CharSlice *class_name, + bool is_gvl_waiting_state ); static VALUE _native_thread_list(VALUE self); static struct per_thread_context *get_or_create_context_for(VALUE thread, struct thread_context_collector_state *state); static struct per_thread_context *get_context_for(VALUE thread, struct thread_context_collector_state *state); static void initialize_context(VALUE thread, struct per_thread_context *thread_context, struct thread_context_collector_state *state); +static void free_context(struct per_thread_context* thread_context); static VALUE _native_inspect(VALUE self, VALUE collector_instance); static VALUE per_thread_context_st_table_as_ruby_hash(struct thread_context_collector_state *state); static int per_thread_context_as_ruby_hash(st_data_t key_thread, st_data_t value_context, st_data_t result_hash); @@ -231,6 +261,27 @@ static void ddtrace_otel_trace_identifiers_for( VALUE active_span, VALUE otel_values ); +static VALUE _native_sample_skipped_allocation_samples(DDTRACE_UNUSED VALUE self, VALUE collector_instance, VALUE skipped_samples); +static bool handle_gvl_waiting( + struct thread_context_collector_state *state, + VALUE thread_being_sampled, + VALUE stack_from_thread, + struct per_thread_context *thread_context, + sampling_buffer* sampling_buffer, + long current_cpu_time_ns +); +static VALUE _native_on_gvl_waiting(DDTRACE_UNUSED VALUE self, VALUE thread); +static VALUE _native_gvl_waiting_at_for(DDTRACE_UNUSED VALUE self, VALUE thread); +static VALUE _native_on_gvl_running(DDTRACE_UNUSED VALUE self, VALUE thread); +static VALUE _native_sample_after_gvl_running(DDTRACE_UNUSED VALUE self, VALUE collector_instance, VALUE thread); +static VALUE _native_apply_delta_to_cpu_time_at_previous_sample_ns(DDTRACE_UNUSED VALUE self, VALUE collector_instance, VALUE thread, VALUE delta_ns); +static void otel_without_ddtrace_trace_identifiers_for( + struct thread_context_collector_state *state, + VALUE thread, + struct trace_identifiers *trace_identifiers_result +); +static struct otel_span otel_span_from(VALUE otel_context, VALUE otel_current_span_key); +static uint64_t otel_span_id_to_uint(VALUE otel_span_id); void collectors_thread_context_init(VALUE profiling_module) { VALUE collectors_module = rb_define_module_under(profiling_module, "Collectors"); @@ -248,19 +299,27 @@ void collectors_thread_context_init(VALUE profiling_module) { // https://bugs.ruby-lang.org/issues/18007 for a discussion around this. rb_define_alloc_func(collectors_thread_context_class, _native_new); - rb_define_singleton_method(collectors_thread_context_class, "_native_initialize", _native_initialize, 7); + rb_define_singleton_method(collectors_thread_context_class, "_native_initialize", _native_initialize, -1); rb_define_singleton_method(collectors_thread_context_class, "_native_inspect", _native_inspect, 1); rb_define_singleton_method(collectors_thread_context_class, "_native_reset_after_fork", _native_reset_after_fork, 1); rb_define_singleton_method(testing_module, "_native_sample", _native_sample, 2); rb_define_singleton_method(testing_module, "_native_sample_allocation", _native_sample_allocation, 3); rb_define_singleton_method(testing_module, "_native_on_gc_start", _native_on_gc_start, 1); rb_define_singleton_method(testing_module, "_native_on_gc_finish", _native_on_gc_finish, 1); - rb_define_singleton_method(testing_module, "_native_sample_after_gc", _native_sample_after_gc, 1); + rb_define_singleton_method(testing_module, "_native_sample_after_gc", _native_sample_after_gc, 2); rb_define_singleton_method(testing_module, "_native_thread_list", _native_thread_list, 0); rb_define_singleton_method(testing_module, "_native_per_thread_context", _native_per_thread_context, 1); rb_define_singleton_method(testing_module, "_native_stats", _native_stats, 1); rb_define_singleton_method(testing_module, "_native_gc_tracking", _native_gc_tracking, 1); rb_define_singleton_method(testing_module, "_native_new_empty_thread", _native_new_empty_thread, 0); + rb_define_singleton_method(testing_module, "_native_sample_skipped_allocation_samples", _native_sample_skipped_allocation_samples, 2); + #ifndef NO_GVL_INSTRUMENTATION + rb_define_singleton_method(testing_module, "_native_on_gvl_waiting", _native_on_gvl_waiting, 1); + rb_define_singleton_method(testing_module, "_native_gvl_waiting_at_for", _native_gvl_waiting_at_for, 1); + rb_define_singleton_method(testing_module, "_native_on_gvl_running", _native_on_gvl_running, 1); + rb_define_singleton_method(testing_module, "_native_sample_after_gvl_running", _native_sample_after_gvl_running, 2); + rb_define_singleton_method(testing_module, "_native_apply_delta_to_cpu_time_at_previous_sample_ns", _native_apply_delta_to_cpu_time_at_previous_sample_ns, 3); + #endif at_active_span_id = rb_intern_const("@active_span"); at_active_trace_id = rb_intern_const("@active_trace"); @@ -271,6 +330,19 @@ void collectors_thread_context_init(VALUE profiling_module) { at_otel_values_id = rb_intern_const("@otel_values"); at_parent_span_id_id = rb_intern_const("@parent_span_id"); at_datadog_trace_id = rb_intern_const("@datadog_trace"); + at_span_id_id = rb_intern_const("@span_id"); + at_trace_id_id = rb_intern_const("@trace_id"); + at_entries_id = rb_intern_const("@entries"); + at_context_id = rb_intern_const("@context"); + at_kind_id = rb_intern_const("@kind"); + at_name_id = rb_intern_const("@name"); + server_id = rb_intern_const("server"); + otel_context_storage_id = rb_intern_const("__opentelemetry_context_storage__"); + + #ifndef NO_GVL_INSTRUMENTATION + // This will raise if Ruby already ran out of thread-local keys + gvl_profiling_init(); + #endif gc_profiling_init(); } @@ -308,7 +380,7 @@ static void thread_context_collector_typed_data_free(void *state_ptr) { // Important: Remember that we're only guaranteed to see here what's been set in _native_new, aka // pointers that have been set NULL there may still be NULL here. - if (state->sampling_buffer != NULL) sampling_buffer_free(state->sampling_buffer); + if (state->locations != NULL) ruby_xfree(state->locations); // Free each entry in the map st_foreach(state->hash_map_per_thread_context, hash_map_per_thread_context_free_values, 0 /* unused */); @@ -327,8 +399,8 @@ static int hash_map_per_thread_context_mark(st_data_t key_thread, DDTRACE_UNUSED // Used to clear each of the per_thread_contexts inside the hash_map_per_thread_context static int hash_map_per_thread_context_free_values(DDTRACE_UNUSED st_data_t _thread, st_data_t value_per_thread_context, DDTRACE_UNUSED st_data_t _argument) { - struct per_thread_context *per_thread_context = (struct per_thread_context*) value_per_thread_context; - ruby_xfree(per_thread_context); + struct per_thread_context *thread_context = (struct per_thread_context*) value_per_thread_context; + free_context(thread_context); return ST_CONTINUE; } @@ -339,7 +411,8 @@ static VALUE _native_new(VALUE klass) { // being leaked. // Update this when modifying state struct - state->sampling_buffer = NULL; + state->locations = NULL; + state->max_frames = 0; state->hash_map_per_thread_context = // "numtable" is an awful name, but TL;DR it's what should be used when keys are `VALUE`s. st_init_numtable(); @@ -349,11 +422,11 @@ static VALUE _native_new(VALUE klass) { state->thread_list_buffer = thread_list_buffer; state->endpoint_collection_enabled = true; state->timeline_enabled = true; - state->allocation_type_enabled = true; + state->otel_context_enabled = OTEL_CONTEXT_ENABLED_FALSE; state->time_converter_state = (monotonic_to_system_epoch_state) MONOTONIC_TO_SYSTEM_EPOCH_INITIALIZER; VALUE main_thread = rb_thread_main(); state->main_thread = main_thread; - state->otel_current_span_key = Qnil; + state->otel_current_span_key = Qtrue; state->gc_tracking.wall_time_at_previous_gc_ns = INVALID_TIME; state->gc_tracking.wall_time_at_last_flushed_gc_event_ns = 0; @@ -369,33 +442,46 @@ static VALUE _native_new(VALUE klass) { return instance; } -static VALUE _native_initialize( - DDTRACE_UNUSED VALUE _self, - VALUE collector_instance, - VALUE recorder_instance, - VALUE max_frames, - VALUE tracer_context_key, - VALUE endpoint_collection_enabled, - VALUE timeline_enabled, - VALUE allocation_type_enabled -) { +static VALUE _native_initialize(int argc, VALUE *argv, DDTRACE_UNUSED VALUE _self) { + VALUE options; + rb_scan_args(argc, argv, "0:", &options); + if (options == Qnil) options = rb_hash_new(); + + VALUE self_instance = rb_hash_fetch(options, ID2SYM(rb_intern("self_instance"))); + VALUE recorder_instance = rb_hash_fetch(options, ID2SYM(rb_intern("recorder"))); + VALUE max_frames = rb_hash_fetch(options, ID2SYM(rb_intern("max_frames"))); + VALUE tracer_context_key = rb_hash_fetch(options, ID2SYM(rb_intern("tracer_context_key"))); + VALUE endpoint_collection_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("endpoint_collection_enabled"))); + VALUE timeline_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("timeline_enabled"))); + VALUE waiting_for_gvl_threshold_ns = rb_hash_fetch(options, ID2SYM(rb_intern("waiting_for_gvl_threshold_ns"))); + VALUE otel_context_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("otel_context_enabled"))); + + ENFORCE_TYPE(max_frames, T_FIXNUM); ENFORCE_BOOLEAN(endpoint_collection_enabled); ENFORCE_BOOLEAN(timeline_enabled); - ENFORCE_BOOLEAN(allocation_type_enabled); + ENFORCE_TYPE(waiting_for_gvl_threshold_ns, T_FIXNUM); struct thread_context_collector_state *state; - TypedData_Get_Struct(collector_instance, struct thread_context_collector_state, &thread_context_collector_typed_data, state); - - int max_frames_requested = NUM2INT(max_frames); - if (max_frames_requested < 0) rb_raise(rb_eArgError, "Invalid max_frames: value must not be negative"); + TypedData_Get_Struct(self_instance, struct thread_context_collector_state, &thread_context_collector_typed_data, state); // Update this when modifying state struct - state->sampling_buffer = sampling_buffer_new(max_frames_requested); + state->max_frames = sampling_buffer_check_max_frames(NUM2INT(max_frames)); + state->locations = ruby_xcalloc(state->max_frames, sizeof(ddog_prof_Location)); // hash_map_per_thread_context is already initialized, nothing to do here state->recorder_instance = enforce_recorder_instance(recorder_instance); state->endpoint_collection_enabled = (endpoint_collection_enabled == Qtrue); state->timeline_enabled = (timeline_enabled == Qtrue); - state->allocation_type_enabled = (allocation_type_enabled == Qtrue); + if (otel_context_enabled == Qfalse || otel_context_enabled == Qnil) { + state->otel_context_enabled = OTEL_CONTEXT_ENABLED_FALSE; + } else if (otel_context_enabled == ID2SYM(rb_intern("only"))) { + state->otel_context_enabled = OTEL_CONTEXT_ENABLED_ONLY; + } else if (otel_context_enabled == ID2SYM(rb_intern("both"))) { + state->otel_context_enabled = OTEL_CONTEXT_ENABLED_BOTH; + } else { + rb_raise(rb_eArgError, "Unexpected value for otel_context_enabled: %+" PRIsVALUE, otel_context_enabled); + } + + global_waiting_for_gvl_threshold_ns = NUM2UINT(waiting_for_gvl_threshold_ns); if (RTEST(tracer_context_key)) { ENFORCE_TYPE(tracer_context_key, T_SYMBOL); @@ -427,13 +513,22 @@ static VALUE _native_on_gc_start(DDTRACE_UNUSED VALUE self, VALUE collector_inst // This method exists only to enable testing Datadog::Profiling::Collectors::ThreadContext behavior using RSpec. // It SHOULD NOT be used for other purposes. static VALUE _native_on_gc_finish(DDTRACE_UNUSED VALUE self, VALUE collector_instance) { - thread_context_collector_on_gc_finish(collector_instance); + (void) !thread_context_collector_on_gc_finish(collector_instance); return Qtrue; } // This method exists only to enable testing Datadog::Profiling::Collectors::ThreadContext behavior using RSpec. // It SHOULD NOT be used for other purposes. -static VALUE _native_sample_after_gc(DDTRACE_UNUSED VALUE self, VALUE collector_instance) { +static VALUE _native_sample_after_gc(DDTRACE_UNUSED VALUE self, VALUE collector_instance, VALUE reset_monotonic_to_system_state) { + ENFORCE_BOOLEAN(reset_monotonic_to_system_state); + + struct thread_context_collector_state *state; + TypedData_Get_Struct(collector_instance, struct thread_context_collector_state, &thread_context_collector_typed_data, state); + + if (reset_monotonic_to_system_state == Qtrue) { + state->time_converter_state = (monotonic_to_system_epoch_state) MONOTONIC_TO_SYSTEM_EPOCH_INITIALIZER; + } + thread_context_collector_sample_after_gc(collector_instance); return Qtrue; } @@ -472,6 +567,7 @@ void thread_context_collector_sample(VALUE self_instance, long current_monotonic /* thread_being_sampled: */ thread, /* stack_from_thread: */ thread, thread_context, + thread_context->sampling_buffer, current_cpu_time_ns, current_monotonic_wall_time_ns ); @@ -488,25 +584,33 @@ void thread_context_collector_sample(VALUE self_instance, long current_monotonic /* thread_being_sampled: */ current_thread, /* stack_from_thread: */ profiler_overhead_stack_thread, current_thread_context, + // Here we use the overhead thread's sampling buffer so as to not invalidate the cache in the buffer of the thread being sampled + get_or_create_context_for(profiler_overhead_stack_thread, state)->sampling_buffer, cpu_time_now_ns(current_thread_context), monotonic_wall_time_now_ns(RAISE_ON_FAILURE) ); } -void update_metrics_and_sample( +static void update_metrics_and_sample( struct thread_context_collector_state *state, VALUE thread_being_sampled, VALUE stack_from_thread, // This can be different when attributing profiler overhead using a different stack struct per_thread_context *thread_context, + sampling_buffer* sampling_buffer, long current_cpu_time_ns, long current_monotonic_wall_time_ns ) { - long cpu_time_elapsed_ns = update_time_since_previous_sample( + bool is_gvl_waiting_state = + handle_gvl_waiting(state, thread_being_sampled, stack_from_thread, thread_context, sampling_buffer, current_cpu_time_ns); + + // Don't assign/update cpu during "Waiting for GVL" + long cpu_time_elapsed_ns = is_gvl_waiting_state ? 0 : update_time_since_previous_sample( &thread_context->cpu_time_at_previous_sample_ns, current_cpu_time_ns, thread_context->gc_tracking.cpu_time_at_start_ns, IS_NOT_WALL_TIME ); + long wall_time_elapsed_ns = update_time_since_previous_sample( &thread_context->wall_time_at_previous_sample_ns, current_monotonic_wall_time_ns, @@ -518,15 +622,32 @@ void update_metrics_and_sample( IS_WALL_TIME ); + // A thread enters "Waiting for GVL", well, as the name implies, without the GVL. + // + // As a consequence, it's possible that a thread enters "Waiting for GVL" in parallel with the current thread working + // on sampling, and thus for the `current_monotonic_wall_time_ns` (which is recorded at the start of sampling) + // to be < the time at which we started Waiting for GVL. + // + // All together, this means that when `handle_gvl_waiting` creates an extra sample (see comments on that function for + // what the extra sample is), it's possible that there's no more wall-time to be assigned. + // Thus, in this case, we don't want to produce a sample representing Waiting for GVL with a wall-time of 0, and + // thus we skip creating such a sample. + if (is_gvl_waiting_state && wall_time_elapsed_ns == 0) return; + // ...you may also wonder: is there any other situation where it makes sense to produce a sample with + // wall_time_elapsed_ns == 0? I believe that yes, because the sample still includes a timestamp and a stack, but we + // may revisit/change our minds on this in the future. + trigger_sample_for_thread( state, thread_being_sampled, stack_from_thread, thread_context, + sampling_buffer, (sample_values) {.cpu_time_ns = cpu_time_elapsed_ns, .cpu_or_wall_samples = 1, .wall_time_ns = wall_time_elapsed_ns}, current_monotonic_wall_time_ns, NULL, - NULL + NULL, + is_gvl_waiting_state ); } @@ -572,6 +693,7 @@ void thread_context_collector_on_gc_start(VALUE self_instance) { // // Assumption 1: This function is called in a thread that is holding the Global VM Lock. Caller is responsible for enforcing this. // Assumption 2: This function is called from the main Ractor (if Ruby has support for Ractors). +__attribute__((warn_unused_result)) bool thread_context_collector_on_gc_finish(VALUE self_instance) { struct thread_context_collector_state *state; if (!rb_typeddata_is_kind_of(self_instance, &thread_context_collector_typed_data)) return false; @@ -672,7 +794,6 @@ VALUE thread_context_collector_sample_after_gc(VALUE self_instance) { } record_placeholder_stack( - state->sampling_buffer, state->recorder_instance, (sample_values) { // This event gets both a regular cpu/wall-time duration, as a normal cpu/wall-time sample would, as well as a @@ -694,6 +815,9 @@ VALUE thread_context_collector_sample_after_gc(VALUE self_instance) { state->stats.gc_samples++; + // Let recorder do any cleanup/updates it requires after a GC step. + recorder_after_gc_step(state->recorder_instance); + // Return a VALUE to make it easier to call this function from Ruby APIs that expect a return value (such as rb_rescue2) return Qnil; } @@ -703,11 +827,13 @@ static void trigger_sample_for_thread( VALUE thread, VALUE stack_from_thread, // This can be different when attributing profiler overhead using a different stack struct per_thread_context *thread_context, + sampling_buffer* sampling_buffer, sample_values values, long current_monotonic_wall_time_ns, // These two labels are only used for allocation profiling; @ivoanjo: may want to refactor this at some point? ddog_CharSlice *ruby_vm_type, - ddog_CharSlice *class_name + ddog_CharSlice *class_name, + bool is_gvl_waiting_state ) { int max_label_count = 1 + // thread id @@ -748,6 +874,11 @@ static void trigger_sample_for_thread( struct trace_identifiers trace_identifiers_result = {.valid = false, .trace_endpoint = Qnil}; trace_identifiers_for(state, thread, &trace_identifiers_result); + if (!trace_identifiers_result.valid && state->otel_context_enabled != OTEL_CONTEXT_ENABLED_FALSE) { + // If we couldn't get something with ddtrace, let's see if we can get some trace identifiers from opentelemetry directly + otel_without_ddtrace_trace_identifiers_for(state, thread, &trace_identifiers_result); + } + if (trace_identifiers_result.valid) { labels[label_pos++] = (ddog_prof_Label) {.key = DDOG_CHARSLICE_C("local root span id"), .num = trace_identifiers_result.local_root_span_id}; labels[label_pos++] = (ddog_prof_Label) {.key = DDOG_CHARSLICE_C("span id"), .num = trace_identifiers_result.span_id}; @@ -823,10 +954,15 @@ static void trigger_sample_for_thread( sample_thread( stack_from_thread, - state->sampling_buffer, + sampling_buffer, state->recorder_instance, values, - (sample_labels) {.labels = slice_labels, .state_label = state_label, .end_timestamp_ns = end_timestamp_ns} + (sample_labels) { + .labels = slice_labels, + .state_label = state_label, + .end_timestamp_ns = end_timestamp_ns, + .is_gvl_waiting_state = is_gvl_waiting_state, + } ); } @@ -876,9 +1012,9 @@ static struct per_thread_context *get_context_for(VALUE thread, struct thread_co // to either run Ruby code during sampling (not great), or otherwise use some of the VM private APIs to detect this. // static bool is_logging_gem_monkey_patch(VALUE invoke_file_location) { - int logging_gem_path_len = strlen(LOGGING_GEM_PATH); + unsigned long logging_gem_path_len = strlen(LOGGING_GEM_PATH); char *invoke_file = StringValueCStr(invoke_file_location); - int invoke_file_len = strlen(invoke_file); + unsigned long invoke_file_len = strlen(invoke_file); if (invoke_file_len < logging_gem_path_len) return false; @@ -886,6 +1022,8 @@ static bool is_logging_gem_monkey_patch(VALUE invoke_file_location) { } static void initialize_context(VALUE thread, struct per_thread_context *thread_context, struct thread_context_collector_state *state) { + thread_context->sampling_buffer = sampling_buffer_new(state->max_frames, state->locations); + snprintf(thread_context->thread_id, THREAD_ID_LIMIT_CHARS, "%"PRIu64" (%lu)", native_thread_id_for(thread), (unsigned long) thread_id_for(thread)); thread_context->thread_id_char_slice = (ddog_CharSlice) {.ptr = thread_context->thread_id, .len = strlen(thread_context->thread_id)}; @@ -924,6 +1062,25 @@ static void initialize_context(VALUE thread, struct per_thread_context *thread_c // These will only be used during a GC operation thread_context->gc_tracking.cpu_time_at_start_ns = INVALID_TIME; thread_context->gc_tracking.wall_time_at_start_ns = INVALID_TIME; + + #ifndef NO_GVL_INSTRUMENTATION + // We use this special location to store data that can be accessed without any + // kind of synchronization (e.g. by threads without the GVL). + // + // We set this marker here for two purposes: + // * To make sure there's no stale data from a previous execution of the profiler. + // * To mark threads that are actually being profiled + // + // (Setting this is potentially a race, but what we want is to avoid _stale_ data, so + // if this gets set concurrently with context initialization, then such a value will belong + // to the current profiler instance, so that's OK) + gvl_profiling_state_thread_object_set(thread, GVL_WAITING_ENABLED_EMPTY); + #endif +} + +static void free_context(struct per_thread_context* thread_context) { + sampling_buffer_free(thread_context->sampling_buffer); + ruby_xfree(thread_context); } static VALUE _native_inspect(DDTRACE_UNUSED VALUE _self, VALUE collector_instance) { @@ -933,6 +1090,7 @@ static VALUE _native_inspect(DDTRACE_UNUSED VALUE _self, VALUE collector_instanc VALUE result = rb_str_new2(" (native state)"); // Update this when modifying state struct + rb_str_concat(result, rb_sprintf(" max_frames=%d", state->max_frames)); rb_str_concat(result, rb_sprintf(" hash_map_per_thread_context=%"PRIsVALUE, per_thread_context_st_table_as_ruby_hash(state))); rb_str_concat(result, rb_sprintf(" recorder_instance=%"PRIsVALUE, state->recorder_instance)); VALUE tracer_context_key = state->tracer_context_key == MISSING_TRACER_CONTEXT_KEY ? Qnil : ID2SYM(state->tracer_context_key); @@ -941,7 +1099,7 @@ static VALUE _native_inspect(DDTRACE_UNUSED VALUE _self, VALUE collector_instanc rb_str_concat(result, rb_sprintf(" stats=%"PRIsVALUE, stats_as_ruby_hash(state))); rb_str_concat(result, rb_sprintf(" endpoint_collection_enabled=%"PRIsVALUE, state->endpoint_collection_enabled ? Qtrue : Qfalse)); rb_str_concat(result, rb_sprintf(" timeline_enabled=%"PRIsVALUE, state->timeline_enabled ? Qtrue : Qfalse)); - rb_str_concat(result, rb_sprintf(" allocation_type_enabled=%"PRIsVALUE, state->allocation_type_enabled ? Qtrue : Qfalse)); + rb_str_concat(result, rb_sprintf(" otel_context_enabled=%d", state->otel_context_enabled)); rb_str_concat(result, rb_sprintf( " time_converter_state={.system_epoch_ns_reference=%ld, .delta_to_epoch_ns=%ld}", state->time_converter_state.system_epoch_ns_reference, @@ -950,6 +1108,7 @@ static VALUE _native_inspect(DDTRACE_UNUSED VALUE _self, VALUE collector_instanc rb_str_concat(result, rb_sprintf(" main_thread=%"PRIsVALUE, state->main_thread)); rb_str_concat(result, rb_sprintf(" gc_tracking=%"PRIsVALUE, gc_tracking_as_ruby_hash(state))); rb_str_concat(result, rb_sprintf(" otel_current_span_key=%"PRIsVALUE, state->otel_current_span_key)); + rb_str_concat(result, rb_sprintf(" global_waiting_for_gvl_threshold_ns=%u", global_waiting_for_gvl_threshold_ns)); return result; } @@ -977,6 +1136,10 @@ static int per_thread_context_as_ruby_hash(st_data_t key_thread, st_data_t value ID2SYM(rb_intern("gc_tracking.cpu_time_at_start_ns")), /* => */ LONG2NUM(thread_context->gc_tracking.cpu_time_at_start_ns), ID2SYM(rb_intern("gc_tracking.wall_time_at_start_ns")), /* => */ LONG2NUM(thread_context->gc_tracking.wall_time_at_start_ns), + + #ifndef NO_GVL_INSTRUMENTATION + ID2SYM(rb_intern("gvl_waiting_at")), /* => */ LONG2NUM(gvl_profiling_state_thread_object_get(thread)), + #endif }; for (long unsigned int i = 0; i < VALUE_COUNT(arguments); i += 2) rb_hash_aset(context_as_hash, arguments[i], arguments[i+1]); @@ -1017,7 +1180,7 @@ static int remove_if_dead_thread(st_data_t key_thread, st_data_t value_context, if (is_thread_alive(thread)) return ST_CONTINUE; - ruby_xfree(thread_context); + free_context(thread_context); return ST_DELETE; } @@ -1127,6 +1290,7 @@ static VALUE _native_gc_tracking(DDTRACE_UNUSED VALUE _self, VALUE collector_ins // Assumption 1: This function is called in a thread that is holding the Global VM Lock. Caller is responsible for enforcing this. static void trace_identifiers_for(struct thread_context_collector_state *state, VALUE thread, struct trace_identifiers *trace_identifiers_result) { + if (state->otel_context_enabled == OTEL_CONTEXT_ENABLED_ONLY) return; if (state->tracer_context_key == MISSING_TRACER_CONTEXT_KEY) return; VALUE current_context = rb_thread_local_aref(thread, state->tracer_context_key); @@ -1181,7 +1345,7 @@ static bool should_collect_resource(VALUE root_span) { if (root_span_type == Qnil) return false; ENFORCE_TYPE(root_span_type, T_STRING); - int root_span_type_length = RSTRING_LEN(root_span_type); + long root_span_type_length = RSTRING_LEN(root_span_type); const char *root_span_type_value = StringValuePtr(root_span_type); bool is_web_request = @@ -1204,6 +1368,9 @@ static VALUE _native_reset_after_fork(DDTRACE_UNUSED VALUE self, VALUE collector struct thread_context_collector_state *state; TypedData_Get_Struct(collector_instance, struct thread_context_collector_state, &thread_context_collector_typed_data, state); + // Release all context memory before clearing the existing context + st_foreach(state->hash_map_per_thread_context, hash_map_per_thread_context_free_values, 0 /* unused */); + st_clear(state->hash_map_per_thread_context); state->stats = (struct stats) {}; // Resets all stats back to zero @@ -1236,75 +1403,78 @@ void thread_context_collector_sample_allocation(VALUE self_instance, unsigned in ddog_CharSlice *optional_class_name = NULL; char imemo_type[100]; - if (state->allocation_type_enabled) { - optional_class_name = &class_name; - - if ( - type == RUBY_T_OBJECT || - type == RUBY_T_CLASS || - type == RUBY_T_MODULE || - type == RUBY_T_FLOAT || - type == RUBY_T_STRING || - type == RUBY_T_REGEXP || - type == RUBY_T_ARRAY || - type == RUBY_T_HASH || - type == RUBY_T_STRUCT || - type == RUBY_T_BIGNUM || - type == RUBY_T_FILE || - type == RUBY_T_DATA || - type == RUBY_T_MATCH || - type == RUBY_T_COMPLEX || - type == RUBY_T_RATIONAL || - type == RUBY_T_NIL || - type == RUBY_T_TRUE || - type == RUBY_T_FALSE || - type == RUBY_T_SYMBOL || - type == RUBY_T_FIXNUM - ) { - VALUE klass = rb_class_of(new_object); - - // Ruby sometimes plays a bit fast and loose with some of its internal objects, e.g. - // `rb_str_tmp_frozen_acquire` allocates a string with no class (klass=0). - // Thus, we need to make sure there's actually a class before getting its name. - - if (klass != 0) { - const char *name = rb_class2name(klass); - size_t name_length = name != NULL ? strlen(name) : 0; - - if (name_length > 0) { - class_name = (ddog_CharSlice) {.ptr = name, .len = name_length}; - } else { - // @ivoanjo: I'm not sure this can ever happen, but just-in-case - class_name = ruby_value_type_to_class_name(type); - } + optional_class_name = &class_name; + + if ( + type == RUBY_T_OBJECT || + type == RUBY_T_CLASS || + type == RUBY_T_MODULE || + type == RUBY_T_FLOAT || + type == RUBY_T_STRING || + type == RUBY_T_REGEXP || + type == RUBY_T_ARRAY || + type == RUBY_T_HASH || + type == RUBY_T_STRUCT || + type == RUBY_T_BIGNUM || + type == RUBY_T_FILE || + type == RUBY_T_DATA || + type == RUBY_T_MATCH || + type == RUBY_T_COMPLEX || + type == RUBY_T_RATIONAL || + type == RUBY_T_NIL || + type == RUBY_T_TRUE || + type == RUBY_T_FALSE || + type == RUBY_T_SYMBOL || + type == RUBY_T_FIXNUM + ) { + VALUE klass = rb_class_of(new_object); + + // Ruby sometimes plays a bit fast and loose with some of its internal objects, e.g. + // `rb_str_tmp_frozen_acquire` allocates a string with no class (klass=0). + // Thus, we need to make sure there's actually a class before getting its name. + + if (klass != 0) { + const char *name = rb_class2name(klass); + size_t name_length = name != NULL ? strlen(name) : 0; + + if (name_length > 0) { + class_name = (ddog_CharSlice) {.ptr = name, .len = name_length}; } else { - // Fallback for objects with no class + // @ivoanjo: I'm not sure this can ever happen, but just-in-case class_name = ruby_value_type_to_class_name(type); } - } else if (type == RUBY_T_IMEMO) { - const char *imemo_string = imemo_kind(new_object); - if (imemo_string != NULL) { - snprintf(imemo_type, 100, "(VM Internal, T_IMEMO, %s)", imemo_string); - class_name = (ddog_CharSlice) {.ptr = imemo_type, .len = strlen(imemo_type)}; - } else { // Ruby < 3 - class_name = DDOG_CHARSLICE_C("(VM Internal, T_IMEMO)"); - } } else { - class_name = ruby_vm_type; // For other weird internal things we just use the VM type + // Fallback for objects with no class. Objects with no class are a way for the Ruby VM to mark them + // as internal objects; see rb_objspace_internal_object_p for details. + class_name = ruby_value_type_to_class_name(type); + } + } else if (type == RUBY_T_IMEMO) { + const char *imemo_string = imemo_kind(new_object); + if (imemo_string != NULL) { + snprintf(imemo_type, 100, "(VM Internal, T_IMEMO, %s)", imemo_string); + class_name = (ddog_CharSlice) {.ptr = imemo_type, .len = strlen(imemo_type)}; + } else { // Ruby < 3 + class_name = DDOG_CHARSLICE_C("(VM Internal, T_IMEMO)"); } + } else { + class_name = ruby_vm_type; // For other weird internal things we just use the VM type } track_object(state->recorder_instance, new_object, sample_weight, optional_class_name); + struct per_thread_context *thread_context = get_or_create_context_for(current_thread, state); + trigger_sample_for_thread( state, /* thread: */ current_thread, /* stack_from_thread: */ current_thread, - get_or_create_context_for(current_thread, state), - (sample_values) {.alloc_samples = sample_weight, .alloc_samples_unscaled = 1}, + thread_context, + thread_context->sampling_buffer, + (sample_values) {.alloc_samples = sample_weight, .alloc_samples_unscaled = 1, .heap_sample = true}, INVALID_TIME, // For now we're not collecting timestamps for allocation events, as per profiling team internal discussions &ruby_vm_type, - optional_class_name + optional_class_name, + false ); } @@ -1350,25 +1520,29 @@ static ddog_CharSlice ruby_value_type_to_class_name(enum ruby_value_type type) { } } +// Used to access OpenTelemetry::Trace.const_get(:CURRENT_SPAN_KEY). Will raise exceptions if it fails. +static VALUE read_otel_current_span_key_const(DDTRACE_UNUSED VALUE _unused) { + VALUE opentelemetry_module = rb_const_get(rb_cObject, rb_intern("OpenTelemetry")); + ENFORCE_TYPE(opentelemetry_module, T_MODULE); + VALUE trace_module = rb_const_get(opentelemetry_module, rb_intern("Trace")); + ENFORCE_TYPE(trace_module, T_MODULE); + return rb_const_get(trace_module, rb_intern("CURRENT_SPAN_KEY")); +} + static VALUE get_otel_current_span_key(struct thread_context_collector_state *state) { - if (state->otel_current_span_key == Qnil) { - VALUE datadog_module = rb_const_get(rb_cObject, rb_intern("Datadog")); - VALUE opentelemetry_module = rb_const_get(datadog_module, rb_intern("OpenTelemetry")); - VALUE api_module = rb_const_get(opentelemetry_module, rb_intern("API")); - VALUE context_module = rb_const_get(api_module, rb_intern_const("Context")); - VALUE current_span_key = rb_const_get(context_module, rb_intern_const("CURRENT_SPAN_KEY")); - - if (current_span_key == Qnil) { - rb_raise(rb_eRuntimeError, "Unexpected: Missing Datadog::OpenTelemetry::API::Context::CURRENT_SPAN_KEY"); - } + if (state->otel_current_span_key == Qtrue) { // Qtrue means we haven't tried to extract it yet + // If this fails, we want to fail gracefully, rather than raise an exception (e.g. if the opentelemetry gem + // gets refactored, we should not fall on our face) + VALUE span_key = rb_protect(read_otel_current_span_key_const, Qnil, NULL); - state->otel_current_span_key = current_span_key; + // Note that this gets set to Qnil if we failed to extract the correct value, and thus we won't try to extract it again + state->otel_current_span_key = span_key; } return state->otel_current_span_key; } -// This method gets used when ddtrace is being used indirectly via the otel APIs. Information gets stored slightly +// This method gets used when ddtrace is being used indirectly via the opentelemetry APIs. Information gets stored slightly // differently, and this codepath handles it. static void ddtrace_otel_trace_identifiers_for( struct thread_context_collector_state *state, @@ -1388,6 +1562,7 @@ static void ddtrace_otel_trace_identifiers_for( if (resolved_numeric_span_id == Qnil) return; VALUE otel_current_span_key = get_otel_current_span_key(state); + if (otel_current_span_key == Qnil) return; VALUE current_trace = *active_trace; // ddtrace uses a different structure when spans are created from otel, where each otel span will have a unique ddtrace @@ -1411,3 +1586,417 @@ static void ddtrace_otel_trace_identifiers_for( *active_trace = current_trace; *numeric_span_id = resolved_numeric_span_id; } + +void thread_context_collector_sample_skipped_allocation_samples(VALUE self_instance, unsigned int skipped_samples) { + struct thread_context_collector_state *state; + TypedData_Get_Struct(self_instance, struct thread_context_collector_state, &thread_context_collector_typed_data, state); + + ddog_prof_Label labels[] = { + // Providing .num = 0 should not be needed but the tracer-2.7 docker image ships a buggy gcc that complains about this + {.key = DDOG_CHARSLICE_C("thread id"), .str = DDOG_CHARSLICE_C("SS"), .num = 0}, + {.key = DDOG_CHARSLICE_C("thread name"), .str = DDOG_CHARSLICE_C("Skipped Samples"), .num = 0}, + {.key = DDOG_CHARSLICE_C("allocation class"), .str = DDOG_CHARSLICE_C("(Skipped Samples)"), .num = 0}, + }; + ddog_prof_Slice_Label slice_labels = {.ptr = labels, .len = sizeof(labels) / sizeof(labels[0])}; + + record_placeholder_stack( + state->recorder_instance, + (sample_values) {.alloc_samples = skipped_samples}, + (sample_labels) { + .labels = slice_labels, + .state_label = NULL, + .end_timestamp_ns = 0, // For now we're not collecting timestamps for allocation events + }, + DDOG_CHARSLICE_C("Skipped Samples") + ); +} + +static VALUE _native_sample_skipped_allocation_samples(DDTRACE_UNUSED VALUE self, VALUE collector_instance, VALUE skipped_samples) { + thread_context_collector_sample_skipped_allocation_samples(collector_instance, NUM2UINT(skipped_samples)); + return Qtrue; +} + +// This method differs from trace_identifiers_for/ddtrace_otel_trace_identifiers_for to support the situation where +// the opentelemetry ruby library is being used for tracing AND the ddtrace tracing bits are not involved at all. +// +// Thus, in this case, we're directly reading from the opentelemetry stuff, which is different to how ddtrace tracing +// does it. +// +// This is somewhat brittle: we're coupling on internal details of the opentelemetry gem to get what we need. In the +// future maybe the otel ruby folks would be open to having a nice public way of getting this data that suits the +// usecase of profilers. +// Until then, the strategy below is to be extremely defensive, and if anything is out of place, we immediately return +// and give up on getting trace data from opentelemetry. (Thus, worst case would be -- you upgrade opentelemetry and +// profiling features relying on reading this data stop working, but you'll still get profiles and the app will be +// otherwise undisturbed). +// +// Specifically, the way this works is: +// 1. The latest entry in the opentelemetry context storage represents the current span (if any). We take the span id +// and trace id from this span. +// 2. To find the local root span id, we walk the context storage backwards from the current span, and find the earliest +// entry in the context storage that has the same trace id as the current span; we use the found span as the local +// root span id. +// This matches the semantics of how ddtrace tracing creates a TraceOperation and assigns a local root span to it. +static void otel_without_ddtrace_trace_identifiers_for( + struct thread_context_collector_state *state, + VALUE thread, + struct trace_identifiers *trace_identifiers_result +) { + VALUE context_storage = rb_thread_local_aref(thread, otel_context_storage_id /* __opentelemetry_context_storage__ */); + + // If it exists, context_storage is expected to be an Array[OpenTelemetry::Context] + if (context_storage == Qnil || !RB_TYPE_P(context_storage, T_ARRAY)) return; + + VALUE otel_current_span_key = get_otel_current_span_key(state); + if (otel_current_span_key == Qnil) return; + + int active_context_index = RARRAY_LEN(context_storage) - 1; + if (active_context_index < 0) return; + + struct otel_span active_span = otel_span_from(rb_ary_entry(context_storage, active_context_index), otel_current_span_key); + if (active_span.span == Qnil) return; + + struct otel_span local_root_span = active_span; + + // Now find the oldest span starting from the active span that still has the same trace id as the active span + for (int i = active_context_index - 1; i >= 0; i--) { + struct otel_span checking_span = otel_span_from(rb_ary_entry(context_storage, i), otel_current_span_key); + if (checking_span.span == Qnil) return; + + if (rb_str_equal(active_span.trace_id, checking_span.trace_id) == Qfalse) break; + + local_root_span = checking_span; + } + + // Convert the span ids into uint64_t to match what the Datadog tracer does + trace_identifiers_result->span_id = otel_span_id_to_uint(active_span.span_id); + trace_identifiers_result->local_root_span_id = otel_span_id_to_uint(local_root_span.span_id); + + if (trace_identifiers_result->span_id == 0 || trace_identifiers_result->local_root_span_id == 0) return; + + trace_identifiers_result->valid = true; + + if (!state->endpoint_collection_enabled) return; + + VALUE root_span_type = rb_ivar_get(local_root_span.span, at_kind_id /* @kind */); + // We filter out spans that don't have `kind: :server` + if (root_span_type == Qnil || !RB_TYPE_P(root_span_type, T_SYMBOL) || SYM2ID(root_span_type) != server_id) return; + + VALUE trace_resource = rb_ivar_get(local_root_span.span, at_name_id /* @name */); + if (!RB_TYPE_P(trace_resource, T_STRING)) return; + + trace_identifiers_result->trace_endpoint = trace_resource; +} + +static struct otel_span otel_span_from(VALUE otel_context, VALUE otel_current_span_key) { + struct otel_span failed = {.span = Qnil, .span_id = Qnil, .trace_id = Qnil}; + + if (otel_context == Qnil) return failed; + + VALUE context_entries = rb_ivar_get(otel_context, at_entries_id /* @entries */); + if (context_entries == Qnil || !RB_TYPE_P(context_entries, T_HASH)) return failed; + + // If it exists, context_entries is expected to be a Hash[OpenTelemetry::Context::Key, OpenTelemetry::Trace::Span] + VALUE span = rb_hash_lookup(context_entries, otel_current_span_key); + if (span == Qnil) return failed; + + // If it exists, span_context is expected to be a OpenTelemetry::Trace::SpanContext (don't confuse it with OpenTelemetry::Context) + VALUE span_context = rb_ivar_get(span, at_context_id /* @context */); + if (span_context == Qnil) return failed; + + VALUE span_id = rb_ivar_get(span_context, at_span_id_id /* @span_id */); + VALUE trace_id = rb_ivar_get(span_context, at_trace_id_id /* @trace_id */); + if (span_id == Qnil || trace_id == Qnil || !RB_TYPE_P(span_id, T_STRING) || !RB_TYPE_P(trace_id, T_STRING)) return failed; + + return (struct otel_span) {.span = span, .span_id = span_id, .trace_id = trace_id}; +} + +// Otel span ids are represented as a big-endian 8-byte string +static uint64_t otel_span_id_to_uint(VALUE otel_span_id) { + if (!RB_TYPE_P(otel_span_id, T_STRING) || RSTRING_LEN(otel_span_id) != 8) { return 0; } + + unsigned char *span_bytes = (unsigned char*) StringValuePtr(otel_span_id); + + return \ + ((uint64_t)span_bytes[0] << 56) | + ((uint64_t)span_bytes[1] << 48) | + ((uint64_t)span_bytes[2] << 40) | + ((uint64_t)span_bytes[3] << 32) | + ((uint64_t)span_bytes[4] << 24) | + ((uint64_t)span_bytes[5] << 16) | + ((uint64_t)span_bytes[6] << 8) | + ((uint64_t)span_bytes[7]); +} + +#ifndef NO_GVL_INSTRUMENTATION + // This function can get called from outside the GVL and even on non-main Ractors + void thread_context_collector_on_gvl_waiting(gvl_profiling_thread thread) { + // Because this function gets called from a thread that is NOT holding the GVL, we avoid touching the + // per-thread context directly. + // + // Instead, we ask Ruby to hold the data we need in Ruby's own special per-thread context area + // that's thread-safe and built for this kind of use + // + // Also, this function can get called on the non-main Ractor. We deal with this by checking if the value in the context + // is non-zero, since only `initialize_context` ever sets the value from 0 to non-zero for threads it sees. + intptr_t thread_being_profiled = gvl_profiling_state_get(thread); + if (!thread_being_profiled) return; + + long current_monotonic_wall_time_ns = monotonic_wall_time_now_ns(DO_NOT_RAISE_ON_FAILURE); + if (current_monotonic_wall_time_ns <= 0 || current_monotonic_wall_time_ns > GVL_WAITING_ENABLED_EMPTY) return; + + gvl_profiling_state_set(thread, current_monotonic_wall_time_ns); + } + + // This function can get called from outside the GVL and even on non-main Ractors + __attribute__((warn_unused_result)) + on_gvl_running_result thread_context_collector_on_gvl_running_with_threshold(gvl_profiling_thread thread, uint32_t waiting_for_gvl_threshold_ns) { + intptr_t gvl_waiting_at = gvl_profiling_state_get(thread); + + // Thread was not being profiled / not waiting on gvl + if (gvl_waiting_at == 0 || gvl_waiting_at == GVL_WAITING_ENABLED_EMPTY) return ON_GVL_RUNNING_UNKNOWN; + + // @ivoanjo: I'm not sure if this can happen -- It means we should've sampled already but haven't gotten the chance yet? + if (gvl_waiting_at < 0) return ON_GVL_RUNNING_SAMPLE; + + long waiting_for_gvl_duration_ns = monotonic_wall_time_now_ns(DO_NOT_RAISE_ON_FAILURE) - gvl_waiting_at; + + bool should_sample = waiting_for_gvl_duration_ns >= waiting_for_gvl_threshold_ns; + + if (should_sample) { + // We flip the gvl_waiting_at to negative to mark that the thread is now running and no longer waiting + intptr_t gvl_waiting_at_is_now_running = -gvl_waiting_at; + + gvl_profiling_state_set(thread, gvl_waiting_at_is_now_running); + } else { + // We decided not to sample. Let's mark the thread back to the initial "enabled but empty" state + gvl_profiling_state_set(thread, GVL_WAITING_ENABLED_EMPTY); + } + + return should_sample ? ON_GVL_RUNNING_SAMPLE : ON_GVL_RUNNING_DONT_SAMPLE; + } + + __attribute__((warn_unused_result)) + on_gvl_running_result thread_context_collector_on_gvl_running(gvl_profiling_thread thread) { + return thread_context_collector_on_gvl_running_with_threshold(thread, global_waiting_for_gvl_threshold_ns); + } + + // Why does this method need to exist? + // + // You may be surprised to see that if we never call this function (from cpu_and_wall_time_worker), Waiting for GVL + // samples will still show up. + // This is because regular cpu/wall-time samples also use `update_metrics_and_sample` which will do the right thing + // and push "Waiting for GVL" samples as needed. + // + // The reason this method needs to exist and be called very shortly after thread_context_collector_on_gvl_running + // returning true is to ensure accuracy of both the timing and stack for the Waiting for GVL sample. + // + // Timing: + // Because we currently only record the timestamp when the Waiting for GVL started and not when the Waiting for GVL ended, + // we rely on pushing a sample as soon as possible when the Waiting for GVL ends so that the timestamp of the sample + // actually matches when we stopped waiting. + // + // Stack: + // If the thread starts working without the end of the Waiting for GVL sample, then by the time the thread is sampled + // via the regular cpu/wall-time samples mechanism, the stack can be be inaccurate (e.g. does not correctly pinpoint + // where the waiting happened). + // + // Arguably, the last sample after Waiting for GVL ended (when gvl_waiting_at < 0) should always come from this method + // and not a regular cpu/wall-time sample BUT since all of these things are happening in parallel/concurrently I suspect + // it's possible for a regular sample to kick in just before this one. + // + // --- + // + // NOTE: In normal use, current_thread is expected to be == rb_thread_current(); the `current_thread` parameter only + // exists to enable testing. + VALUE thread_context_collector_sample_after_gvl_running(VALUE self_instance, VALUE current_thread, long current_monotonic_wall_time_ns) { + struct thread_context_collector_state *state; + TypedData_Get_Struct(self_instance, struct thread_context_collector_state, &thread_context_collector_typed_data, state); + + if (!state->timeline_enabled) rb_raise(rb_eRuntimeError, "GVL profiling requires timeline to be enabled"); + + intptr_t gvl_waiting_at = gvl_profiling_state_thread_object_get(current_thread); + + if (gvl_waiting_at >= 0) { + // @ivoanjo: I'm not sure if this can ever happen. This means that we're not on the same thread + // that ran `thread_context_collector_on_gvl_running` and made the decision to sample OR a regular sample was + // triggered ahead of us. + // We do nothing in this case. + return Qfalse; + } + + struct per_thread_context *thread_context = get_or_create_context_for(current_thread, state); + + // We don't actually account for cpu-time during Waiting for GVL. BUT, we may chose to push an + // extra sample to represent the period prior to Waiting for GVL. To support that, we retrieve the current + // cpu-time of the thread and let `update_metrics_and_sample` decide what to do with it. + long cpu_time_for_thread = cpu_time_now_ns(thread_context); + + // TODO: Should we update the dynamic sampling rate overhead tracking with this sample as well? + + update_metrics_and_sample( + state, + /* thread_being_sampled: */ current_thread, + /* stack_from_thread: */ current_thread, + thread_context, + thread_context->sampling_buffer, + cpu_time_for_thread, + current_monotonic_wall_time_ns + ); + + return Qtrue; + } + + // This method is intended to be called from update_metrics_and_sample. It exists to handle extra sampling steps we + // need to take when sampling cpu/wall-time for a thread that's in the "Waiting for GVL" state. + __attribute__((warn_unused_result)) + static bool handle_gvl_waiting( + struct thread_context_collector_state *state, + VALUE thread_being_sampled, + VALUE stack_from_thread, + struct per_thread_context *thread_context, + sampling_buffer* sampling_buffer, + long current_cpu_time_ns + ) { + intptr_t gvl_waiting_at = gvl_profiling_state_thread_object_get(thread_being_sampled); + + bool is_gvl_waiting_state = gvl_waiting_at != 0 && gvl_waiting_at != GVL_WAITING_ENABLED_EMPTY; + + if (!is_gvl_waiting_state) return false; + + // We can be in one of 2 situations here: + // + // 1. The current sample is the first one after we entered the "Waiting for GVL" state + // (wall_time_at_previous_sample_ns < abs(gvl_waiting_at)) + // + // time ─────► + // ...──────────────┬───────────────────... + // Other state │ Waiting for GVL + // ...──────────────┴───────────────────... + // ▲ ▲ + // └─ Previous sample └─ Regular sample (caller) + // + // In this case, we'll want to push two samples: a) one for the current time (handled by the caller), b) an extra sample + // to represent the remaining cpu/wall time before the "Waiting for GVL" started: + // + // time ─────► + // ...──────────────┬───────────────────... + // Other state │ Waiting for GVL + // ...──────────────┴───────────────────... + // ▲ ▲ ▲ + // └─ Prev... └─ Extra sample └─ Regular sample (caller) + // + // 2. The current sample is the n-th one after we entered the "Waiting for GVL" state + // (wall_time_at_previous_sample_ns > abs(gvl_waiting_at)) + // + // time ─────► + // ...──────────────┬───────────────────────────────────────────────... + // Other state │ Waiting for GVL + // ...──────────────┴───────────────────────────────────────────────... + // ▲ ▲ ▲ + // └─ Previous sample └─ Previous sample └─ Regular sample (caller) + // + // In this case, we just report back to the caller that the thread is in the "Waiting for GVL" state. + // + // --- + // + // Overall, gvl_waiting_at will be > 0 if still in the "Waiting for GVL" state and < 0 if we actually reached the end of + // the wait. + // + // It doesn't really matter if the thread is still waiting or just reached the end of the wait: each sample represents + // a snapshot at time ending now, so if the state finished, it just means the next sample will be a regular one. + + if (gvl_waiting_at < 0) { + // Negative means the waiting for GVL just ended, so we clear the state, so next samples no longer represent waiting + gvl_profiling_state_thread_object_set(thread_being_sampled, GVL_WAITING_ENABLED_EMPTY); + } + + long gvl_waiting_started_wall_time_ns = labs(gvl_waiting_at); + + if (thread_context->wall_time_at_previous_sample_ns < gvl_waiting_started_wall_time_ns) { // situation 1 above + long cpu_time_elapsed_ns = update_time_since_previous_sample( + &thread_context->cpu_time_at_previous_sample_ns, + current_cpu_time_ns, + thread_context->gc_tracking.cpu_time_at_start_ns, + IS_NOT_WALL_TIME + ); + + long duration_until_start_of_gvl_waiting_ns = update_time_since_previous_sample( + &thread_context->wall_time_at_previous_sample_ns, + gvl_waiting_started_wall_time_ns, + INVALID_TIME, + IS_WALL_TIME + ); + + // Push extra sample + trigger_sample_for_thread( + state, + thread_being_sampled, + stack_from_thread, + thread_context, + sampling_buffer, + (sample_values) {.cpu_time_ns = cpu_time_elapsed_ns, .cpu_or_wall_samples = 1, .wall_time_ns = duration_until_start_of_gvl_waiting_ns}, + gvl_waiting_started_wall_time_ns, + NULL, + NULL, + false // This is the extra sample before the wait begun; only the next sample will be in the gvl waiting state + ); + } + + return true; + } + + static VALUE _native_on_gvl_waiting(DDTRACE_UNUSED VALUE self, VALUE thread) { + ENFORCE_THREAD(thread); + + thread_context_collector_on_gvl_waiting(thread_from_thread_object(thread)); + return Qnil; + } + + static VALUE _native_gvl_waiting_at_for(DDTRACE_UNUSED VALUE self, VALUE thread) { + ENFORCE_THREAD(thread); + + intptr_t gvl_waiting_at = gvl_profiling_state_thread_object_get(thread); + return LONG2NUM(gvl_waiting_at); + } + + static VALUE _native_on_gvl_running(DDTRACE_UNUSED VALUE self, VALUE thread) { + ENFORCE_THREAD(thread); + + return thread_context_collector_on_gvl_running(thread_from_thread_object(thread)) == ON_GVL_RUNNING_SAMPLE ? Qtrue : Qfalse; + } + + static VALUE _native_sample_after_gvl_running(DDTRACE_UNUSED VALUE self, VALUE collector_instance, VALUE thread) { + ENFORCE_THREAD(thread); + + return thread_context_collector_sample_after_gvl_running( + collector_instance, + thread, + monotonic_wall_time_now_ns(RAISE_ON_FAILURE) + ); + } + + static VALUE _native_apply_delta_to_cpu_time_at_previous_sample_ns(DDTRACE_UNUSED VALUE self, VALUE collector_instance, VALUE thread, VALUE delta_ns) { + ENFORCE_THREAD(thread); + + struct thread_context_collector_state *state; + TypedData_Get_Struct(collector_instance, struct thread_context_collector_state, &thread_context_collector_typed_data, state); + + struct per_thread_context *thread_context = get_context_for(thread, state); + if (thread_context == NULL) rb_raise(rb_eArgError, "Unexpected: This method cannot be used unless the per-thread context for the thread already exists"); + + thread_context->cpu_time_at_previous_sample_ns += NUM2LONG(delta_ns); + + return Qtrue; + } + +#else + static bool handle_gvl_waiting( + DDTRACE_UNUSED struct thread_context_collector_state *state, + DDTRACE_UNUSED VALUE thread_being_sampled, + DDTRACE_UNUSED VALUE stack_from_thread, + DDTRACE_UNUSED struct per_thread_context *thread_context, + DDTRACE_UNUSED sampling_buffer* sampling_buffer, + DDTRACE_UNUSED long current_cpu_time_ns + ) { return false; } +#endif // NO_GVL_INSTRUMENTATION diff --git a/ext/datadog_profiling_native_extension/collectors_thread_context.h b/ext/datadog_profiling_native_extension/collectors_thread_context.h index 6299d96b43e..9a10f0297b3 100644 --- a/ext/datadog_profiling_native_extension/collectors_thread_context.h +++ b/ext/datadog_profiling_native_extension/collectors_thread_context.h @@ -3,13 +3,28 @@ #include #include +#include "gvl_profiling_helper.h" + void thread_context_collector_sample( VALUE self_instance, long current_monotonic_wall_time_ns, VALUE profiler_overhead_stack_thread ); void thread_context_collector_sample_allocation(VALUE self_instance, unsigned int sample_weight, VALUE new_object); +void thread_context_collector_sample_skipped_allocation_samples(VALUE self_instance, unsigned int skipped_samples); VALUE thread_context_collector_sample_after_gc(VALUE self_instance); void thread_context_collector_on_gc_start(VALUE self_instance); -bool thread_context_collector_on_gc_finish(VALUE self_instance); +__attribute__((warn_unused_result)) bool thread_context_collector_on_gc_finish(VALUE self_instance); VALUE enforce_thread_context_collector_instance(VALUE object); + +#ifndef NO_GVL_INSTRUMENTATION + typedef enum { + ON_GVL_RUNNING_UNKNOWN, // Thread is not known, it may not even be from the current Ractor + ON_GVL_RUNNING_DONT_SAMPLE, // Thread is known, but "Waiting for GVL" period was too small to be sampled + ON_GVL_RUNNING_SAMPLE, // Thread is known, and "Waiting for GVL" period should be sampled + } on_gvl_running_result; + + void thread_context_collector_on_gvl_waiting(gvl_profiling_thread thread); + __attribute__((warn_unused_result)) on_gvl_running_result thread_context_collector_on_gvl_running(gvl_profiling_thread thread); + VALUE thread_context_collector_sample_after_gvl_running(VALUE self_instance, VALUE current_thread, long current_monotonic_wall_time_ns); +#endif diff --git a/ext/datadog_profiling_native_extension/datadog_ruby_common.c b/ext/datadog_profiling_native_extension/datadog_ruby_common.c new file mode 100644 index 00000000000..ff7c3b6d514 --- /dev/null +++ b/ext/datadog_profiling_native_extension/datadog_ruby_common.c @@ -0,0 +1,83 @@ +#include "datadog_ruby_common.h" + +// IMPORTANT: Currently this file is copy-pasted between extensions. Make sure to update all versions when doing any change! + +void raise_unexpected_type(VALUE value, const char *value_name, const char *type_name, const char *file, int line, const char* function_name) { + rb_exc_raise( + rb_exc_new_str( + rb_eTypeError, + rb_sprintf("wrong argument %"PRIsVALUE" for '%s' (expected a %s) at %s:%d:in `%s'", + rb_inspect(value), + value_name, + type_name, + file, + line, + function_name + ) + ) + ); +} + +VALUE datadog_gem_version(void) { + VALUE ddtrace_module = rb_const_get(rb_cObject, rb_intern("Datadog")); + ENFORCE_TYPE(ddtrace_module, T_MODULE); + VALUE version_module = rb_const_get(ddtrace_module, rb_intern("VERSION")); + ENFORCE_TYPE(version_module, T_MODULE); + VALUE version_string = rb_const_get(version_module, rb_intern("STRING")); + ENFORCE_TYPE(version_string, T_STRING); + return version_string; +} + +static VALUE log_failure_to_process_tag(VALUE err_details) { + VALUE datadog_module = rb_const_get(rb_cObject, rb_intern("Datadog")); + VALUE logger = rb_funcall(datadog_module, rb_intern("logger"), 0); + + return rb_funcall(logger, rb_intern("warn"), 1, rb_sprintf("Failed to convert tag: %"PRIsVALUE, err_details)); +} + +__attribute__((warn_unused_result)) +ddog_Vec_Tag convert_tags(VALUE tags_as_array) { + ENFORCE_TYPE(tags_as_array, T_ARRAY); + + long tags_count = RARRAY_LEN(tags_as_array); + ddog_Vec_Tag tags = ddog_Vec_Tag_new(); + + for (long i = 0; i < tags_count; i++) { + VALUE name_value_pair = rb_ary_entry(tags_as_array, i); + + if (!RB_TYPE_P(name_value_pair, T_ARRAY)) { + ddog_Vec_Tag_drop(tags); + ENFORCE_TYPE(name_value_pair, T_ARRAY); + } + + // Note: We can index the array without checking its size first because rb_ary_entry returns Qnil if out of bounds + VALUE tag_name = rb_ary_entry(name_value_pair, 0); + VALUE tag_value = rb_ary_entry(name_value_pair, 1); + + if (!(RB_TYPE_P(tag_name, T_STRING) && RB_TYPE_P(tag_value, T_STRING))) { + ddog_Vec_Tag_drop(tags); + ENFORCE_TYPE(tag_name, T_STRING); + ENFORCE_TYPE(tag_value, T_STRING); + } + + ddog_Vec_Tag_PushResult push_result = + ddog_Vec_Tag_push(&tags, char_slice_from_ruby_string(tag_name), char_slice_from_ruby_string(tag_value)); + + if (push_result.tag == DDOG_VEC_TAG_PUSH_RESULT_ERR) { + // libdatadog validates tags and may catch invalid tags that ddtrace didn't actually catch. + // We warn users about such tags, and then just ignore them. + + int exception_state; + rb_protect(log_failure_to_process_tag, get_error_details_and_drop(&push_result.err), &exception_state); + + // Since we are calling into Ruby code, it may raise an exception. Ensure that dynamically-allocated tags + // get cleaned before propagating the exception. + if (exception_state) { + ddog_Vec_Tag_drop(tags); + rb_jump_tag(exception_state); // "Re-raise" exception + } + } + } + + return tags; +} diff --git a/ext/datadog_profiling_native_extension/datadog_ruby_common.h b/ext/datadog_profiling_native_extension/datadog_ruby_common.h new file mode 100644 index 00000000000..d2e3d717180 --- /dev/null +++ b/ext/datadog_profiling_native_extension/datadog_ruby_common.h @@ -0,0 +1,53 @@ +#pragma once + +// IMPORTANT: Currently this file is copy-pasted between extensions. Make sure to update all versions when doing any change! + +#include +#include + +// Used to mark symbols to be exported to the outside of the extension. +// Consider very carefully before tagging a function with this. +#define DDTRACE_EXPORT __attribute__ ((visibility ("default"))) + +// Used to mark function arguments that are deliberately left unused +#ifdef __GNUC__ + #define DDTRACE_UNUSED __attribute__((unused)) +#else + #define DDTRACE_UNUSED +#endif + +#define ADD_QUOTES_HELPER(x) #x +#define ADD_QUOTES(x) ADD_QUOTES_HELPER(x) + +// Ruby has a Check_Type(value, type) that is roughly equivalent to this BUT Ruby's version is rather cryptic when it fails +// e.g. "wrong argument type nil (expected String)". This is a replacement that prints more information to help debugging. +#define ENFORCE_TYPE(value, type) \ + { if (RB_UNLIKELY(!RB_TYPE_P(value, type))) raise_unexpected_type(value, ADD_QUOTES(value), ADD_QUOTES(type), __FILE__, __LINE__, __func__); } + +#define ENFORCE_BOOLEAN(value) \ + { if (RB_UNLIKELY(value != Qtrue && value != Qfalse)) raise_unexpected_type(value, ADD_QUOTES(value), "true or false", __FILE__, __LINE__, __func__); } + +NORETURN(void raise_unexpected_type(VALUE value, const char *value_name, const char *type_name, const char *file, int line, const char* function_name)); + +// Helper to retrieve Datadog::VERSION::STRING +VALUE datadog_gem_version(void); + +static inline ddog_CharSlice char_slice_from_ruby_string(VALUE string) { + ENFORCE_TYPE(string, T_STRING); + ddog_CharSlice char_slice = {.ptr = RSTRING_PTR(string), .len = RSTRING_LEN(string)}; + return char_slice; +} + +__attribute__((warn_unused_result)) +ddog_Vec_Tag convert_tags(VALUE tags_as_array); + +static inline VALUE ruby_string_from_error(const ddog_Error *error) { + ddog_CharSlice char_slice = ddog_Error_message(error); + return rb_str_new(char_slice.ptr, char_slice.len); +} + +static inline VALUE get_error_details_and_drop(ddog_Error *error) { + VALUE result = ruby_string_from_error(error); + ddog_Error_drop(error); + return result; +} diff --git a/ext/datadog_profiling_native_extension/extconf.rb b/ext/datadog_profiling_native_extension/extconf.rb index 9a1a7718ca6..fb3e9edc573 100644 --- a/ext/datadog_profiling_native_extension/extconf.rb +++ b/ext/datadog_profiling_native_extension/extconf.rb @@ -1,11 +1,16 @@ # rubocop:disable Style/StderrPuts # rubocop:disable Style/GlobalVars -require_relative 'native_extension_helpers' +require_relative "native_extension_helpers" +require_relative "../libdatadog_extconf_helpers" SKIPPED_REASON_FILE = "#{__dir__}/skipped_reason.txt".freeze # Not a problem if the file doesn't exist or we can't delete it -File.delete(SKIPPED_REASON_FILE) rescue nil +begin + File.delete(SKIPPED_REASON_FILE) +rescue + nil +end def skip_building_extension!(reason) fail_install_if_missing_extension = @@ -24,13 +29,13 @@ def skip_building_extension!(reason) ) if fail_install_if_missing_extension - require 'mkmf' + require "mkmf" Logging.message( - '[datadog] Failure cause: ' \ + "[datadog] Failure cause: " \ "#{Datadog::Profiling::NativeExtensionHelpers::Supported.render_skipped_reason_file(**reason)}\n" ) else - File.write('Makefile', 'all install clean: # dummy makefile that does nothing') + File.write("Makefile", "all install clean: # dummy makefile that does nothing") end exit @@ -63,41 +68,31 @@ def skip_building_extension!(reason) # NOTE: we MUST NOT require 'mkmf' before we check the #skip_building_extension? because the require triggers checks # that may fail on an environment not properly setup for building Ruby extensions. -require 'mkmf' +require "mkmf" Logging.message("[datadog] Using compiler:\n") -xsystem("#{CONFIG['CC']} -v") +xsystem("#{CONFIG["CC"]} -v") Logging.message("[datadog] End of compiler information\n") -# mkmf on modern Rubies actually has an append_cflags that does something similar -# (see https://github.com/ruby/ruby/pull/5760), but as usual we need a bit more boilerplate to deal with legacy Rubies -def add_compiler_flag(flag) - if try_cflags(flag) - $CFLAGS << ' ' << flag - else - $stderr.puts("WARNING: '#{flag}' not accepted by compiler, skipping it") - end -end - # Because we can't control what compiler versions our customers use, shipping with -Werror by default is a no-go. # But we can enable it in CI, so that we quickly spot any new warnings that just got introduced. -add_compiler_flag '-Werror' if ENV['DATADOG_GEM_CI'] == 'true' +append_cflags "-Werror" if ENV["DATADOG_GEM_CI"] == "true" # Older gcc releases may not default to C99 and we need to ask for this. This is also used: # * by upstream Ruby -- search for gnu99 in the codebase # * by msgpack, another datadog gem dependency # (https://github.com/msgpack/msgpack-ruby/blob/18ce08f6d612fe973843c366ac9a0b74c4e50599/ext/msgpack/extconf.rb#L8) -add_compiler_flag '-std=gnu99' +append_cflags "-std=gnu99" # Gets really noisy when we include the MJIT header, let's omit it (TODO: Use #pragma GCC diagnostic instead?) -add_compiler_flag '-Wno-unused-function' +append_cflags "-Wno-unused-function" # Allow defining variables at any point in a function -add_compiler_flag '-Wno-declaration-after-statement' +append_cflags "-Wno-declaration-after-statement" # If we forget to include a Ruby header, the function call may still appear to work, but then # cause a segfault later. Let's ensure that never happens. -add_compiler_flag '-Werror-implicit-function-declaration' +append_cflags "-Werror-implicit-function-declaration" # The native extension is not intended to expose any symbols/functions for other native libraries to use; # the sole exception being `Init_datadog_profiling_native_extension` which needs to be visible for Ruby to call it when @@ -105,22 +100,22 @@ def add_compiler_flag(flag) # # By setting this compiler flag, we tell it to assume that everything is private unless explicitly stated. # For more details see https://gcc.gnu.org/wiki/Visibility -add_compiler_flag '-fvisibility=hidden' +append_cflags "-fvisibility=hidden" # Avoid legacy C definitions -add_compiler_flag '-Wold-style-definition' +append_cflags "-Wold-style-definition" # Enable all other compiler warnings -add_compiler_flag '-Wall' -add_compiler_flag '-Wextra' +append_cflags "-Wall" +append_cflags "-Wextra" -if ENV['DDTRACE_DEBUG'] - $defs << '-DDD_DEBUG' - CONFIG['optflags'] = '-O0' - CONFIG['debugflags'] = '-ggdb3' +if ENV["DDTRACE_DEBUG"] == "true" + $defs << "-DDD_DEBUG" + CONFIG["optflags"] = "-O0" + CONFIG["debugflags"] = "-ggdb3" end -if RUBY_PLATFORM.include?('linux') +if RUBY_PLATFORM.include?("linux") # Supposedly, the correct way to do this is # ``` # have_library 'pthread' @@ -128,77 +123,83 @@ def add_compiler_flag(flag) # ``` # but it's slower to build # so instead we just assume that we have the function we need on Linux, and nowhere else - $defs << '-DHAVE_PTHREAD_GETCPUCLOCKID' + $defs << "-DHAVE_PTHREAD_GETCPUCLOCKID" + + # Not available on macOS + $defs << "-DHAVE_CLOCK_MONOTONIC_COARSE" end -have_func 'malloc_stats' +have_func "malloc_stats" # On older Rubies, rb_postponed_job_preregister/rb_postponed_job_trigger did not exist -$defs << '-DNO_POSTPONED_TRIGGER' if RUBY_VERSION < '3.3' +$defs << "-DNO_POSTPONED_TRIGGER" if RUBY_VERSION < "3.3" # On older Rubies, M:N threads were not available -$defs << '-DNO_MN_THREADS_AVAILABLE' if RUBY_VERSION < '3.3' +$defs << "-DNO_MN_THREADS_AVAILABLE" if RUBY_VERSION < "3.3" # On older Rubies, we did not need to include the ractor header (this was built into the MJIT header) -$defs << '-DNO_RACTOR_HEADER_INCLUDE' if RUBY_VERSION < '3.3' +$defs << "-DNO_RACTOR_HEADER_INCLUDE" if RUBY_VERSION < "3.3" # On older Rubies, some of the Ractor internal APIs were directly accessible -$defs << '-DUSE_RACTOR_INTERNAL_APIS_DIRECTLY' if RUBY_VERSION < '3.3' +$defs << "-DUSE_RACTOR_INTERNAL_APIS_DIRECTLY" if RUBY_VERSION < "3.3" + +# On older Rubies, there was no GVL instrumentation API and APIs created to support it +$defs << "-DNO_GVL_INSTRUMENTATION" if RUBY_VERSION < "3.2" + +# Supporting GVL instrumentation on 3.2 needs some workarounds +$defs << "-DUSE_GVL_PROFILING_3_2_WORKAROUNDS" if RUBY_VERSION.start_with?("3.2") # On older Rubies, there was no struct rb_native_thread. See private_vm_api_acccess.c for details. -$defs << '-DNO_RB_NATIVE_THREAD' if RUBY_VERSION < '3.2' +$defs << "-DNO_RB_NATIVE_THREAD" if RUBY_VERSION < "3.2" # On older Rubies, there was no struct rb_thread_sched (it was struct rb_global_vm_lock_struct) -$defs << '-DNO_RB_THREAD_SCHED' if RUBY_VERSION < '3.2' +$defs << "-DNO_RB_THREAD_SCHED" if RUBY_VERSION < "3.2" # On older Rubies, the first_lineno inside a location was a VALUE and not a int (https://github.com/ruby/ruby/pull/6430) -$defs << '-DNO_INT_FIRST_LINENO' if RUBY_VERSION < '3.2' +$defs << "-DNO_INT_FIRST_LINENO" if RUBY_VERSION < "3.2" # On older Rubies, "pop" was not a primitive operation -$defs << '-DNO_PRIMITIVE_POP' if RUBY_VERSION < '3.2' +$defs << "-DNO_PRIMITIVE_POP" if RUBY_VERSION < "3.2" # On older Rubies, there was no tid member in the internal thread structure -$defs << '-DNO_THREAD_TID' if RUBY_VERSION < '3.1' +$defs << "-DNO_THREAD_TID" if RUBY_VERSION < "3.1" # On older Rubies, there was no jit_return member on the rb_control_frame_t struct -$defs << '-DNO_JIT_RETURN' if RUBY_VERSION < '3.1' +$defs << "-DNO_JIT_RETURN" if RUBY_VERSION < "3.1" # On older Rubies, rb_gc_force_recycle allowed to free objects in a way that # would be invisible to free tracepoints, finalizers and without cleaning # obj_to_id_tbl mappings. -$defs << '-DHAVE_WORKING_RB_GC_FORCE_RECYCLE' if RUBY_VERSION < '3.1' - -# On older Rubies, we need to use a backported version of this function. See private_vm_api_access.h for details. -$defs << '-DUSE_BACKPORTED_RB_PROFILE_FRAME_METHOD_NAME' if RUBY_VERSION < '3' +$defs << "-DHAVE_WORKING_RB_GC_FORCE_RECYCLE" if RUBY_VERSION < "3.1" # On older Rubies, there are no Ractors -$defs << '-DNO_RACTORS' if RUBY_VERSION < '3' +$defs << "-DNO_RACTORS" if RUBY_VERSION < "3" # On older Rubies, rb_imemo_name did not exist -$defs << '-DNO_IMEMO_NAME' if RUBY_VERSION < '3' +$defs << "-DNO_IMEMO_NAME" if RUBY_VERSION < "3" # On older Rubies, objects would not move -$defs << '-DNO_T_MOVED' if RUBY_VERSION < '2.7' +$defs << "-DNO_T_MOVED" if RUBY_VERSION < "2.7" # On older Rubies, there was no RUBY_SEEN_OBJ_ID flag -$defs << '-DNO_SEEN_OBJ_ID_FLAG' if RUBY_VERSION < '2.7' +$defs << "-DNO_SEEN_OBJ_ID_FLAG" if RUBY_VERSION < "2.7" # On older Rubies, rb_global_vm_lock_struct did not include the owner field -$defs << '-DNO_GVL_OWNER' if RUBY_VERSION < '2.6' +$defs << "-DNO_GVL_OWNER" if RUBY_VERSION < "2.6" # On older Rubies, there was no thread->invoke_arg -$defs << '-DNO_THREAD_INVOKE_ARG' if RUBY_VERSION < '2.6' +$defs << "-DNO_THREAD_INVOKE_ARG" if RUBY_VERSION < "2.6" # If we got here, libdatadog is available and loaded -ENV['PKG_CONFIG_PATH'] = "#{ENV['PKG_CONFIG_PATH']}:#{Libdatadog.pkgconfig_folder}" -Logging.message("[datadog] PKG_CONFIG_PATH set to #{ENV['PKG_CONFIG_PATH'].inspect}\n") +ENV["PKG_CONFIG_PATH"] = "#{ENV["PKG_CONFIG_PATH"]}:#{Libdatadog.pkgconfig_folder}" +Logging.message("[datadog] PKG_CONFIG_PATH set to #{ENV["PKG_CONFIG_PATH"].inspect}\n") $stderr.puts("Using libdatadog #{Libdatadog::VERSION} from #{Libdatadog.pkgconfig_folder}") -unless pkg_config('datadog_profiling_with_rpath') +unless pkg_config("datadog_profiling_with_rpath") Logging.message("[datadog] Ruby detected the pkg-config command is #{$PKGCONFIG.inspect}\n") skip_building_extension!( - if Datadog::Profiling::NativeExtensionHelpers::Supported.pkg_config_missing? + if Datadog::LibdatadogExtconfHelpers.pkg_config_missing? Datadog::Profiling::NativeExtensionHelpers::Supported::PKG_CONFIG_IS_MISSING else # Less specific error message @@ -207,7 +208,7 @@ def add_compiler_flag(flag) ) end -unless have_type('atomic_int', ['stdatomic.h']) +unless have_type("atomic_int", ["stdatomic.h"]) skip_building_extension!(Datadog::Profiling::NativeExtensionHelpers::Supported::COMPILER_ATOMIC_MISSING) end @@ -215,8 +216,8 @@ def add_compiler_flag(flag) # The extremely excessive escaping around ORIGIN below seems to be correct and was determined after a lot of # experimentation. We need to get these special characters across a lot of tools untouched... extra_relative_rpaths = [ - Datadog::Profiling::NativeExtensionHelpers.libdatadog_folder_relative_to_native_lib_folder, - *Datadog::Profiling::NativeExtensionHelpers.libdatadog_folder_relative_to_ruby_extensions_folders, + Datadog::LibdatadogExtconfHelpers.libdatadog_folder_relative_to_native_lib_folder(current_folder: __dir__), + *Datadog::LibdatadogExtconfHelpers.libdatadog_folder_relative_to_ruby_extensions_folders, ] extra_relative_rpaths.each { |folder| $LDFLAGS += " -Wl,-rpath,$$$\\\\{ORIGIN\\}/#{folder.to_str}" } Logging.message("[datadog] After pkg-config $LDFLAGS were set to: #{$LDFLAGS.inspect}\n") @@ -237,8 +238,8 @@ def add_compiler_flag(flag) # use the MJIT header. # Finally, the `COMMON_HEADERS` conflict with the MJIT header so we need to temporarily disable them for this check. original_common_headers = MakeMakefile::COMMON_HEADERS - MakeMakefile::COMMON_HEADERS = ''.freeze - unless have_macro('RUBY_MJIT_H', mjit_header_file_name) + MakeMakefile::COMMON_HEADERS = "".freeze + unless have_macro("RUBY_MJIT_H", mjit_header_file_name) skip_building_extension!(Datadog::Profiling::NativeExtensionHelpers::Supported::COMPILATION_BROKEN) end MakeMakefile::COMMON_HEADERS = original_common_headers @@ -250,34 +251,55 @@ def add_compiler_flag(flag) # Warn on unused parameters to functions. Use `DDTRACE_UNUSED` to mark things as known-to-not-be-used. # See the comment on the same flag below for why this is done last. - add_compiler_flag '-Wunused-parameter' + append_cflags "-Wunused-parameter" create_makefile EXTENSION_NAME else # The MJIT header was introduced on 2.6 and removed on 3.3; for other Rubies we rely on - # the debase-ruby_core_source gem to get access to private VM headers. + # the datadog-ruby_core_source gem to get access to private VM headers. # This gem ships source code copies of these VM headers for the different Ruby VM versions; - # see https://github.com/ruby-debug/debase-ruby_core_source for details + # see https://github.com/DataDog/datadog-ruby_core_source for details create_header - require 'debase/ruby_core_source' - dir_config('ruby') # allow user to pass in non-standard core include directory + require "datadog/ruby_core_source" + dir_config("ruby") # allow user to pass in non-standard core include directory + + # This is a workaround for a weird issue... + # + # The mkmf tool defines a `with_cppflags` helper that datadog-ruby_core_source uses. This helper temporarily + # replaces `$CPPFLAGS` (aka the C pre-processor [not c++!] flags) with a different set when doing something. + # + # The datadog-ruby_core_source gem uses `with_cppflags` during makefile generation to inject extra headers into the + # path. But because `with_cppflags` replaces `$CPPFLAGS`, well, the default `$CPPFLAGS` are not included in the + # makefile. + # + # This is a problem because the default `$CPPFLAGS` carries configuration that was set when Ruby was being built. + # Thus, if we ignore it, we don't compile the profiler with the exact same configuration as Ruby. + # In practice, this can generate crashes and weird bugs if the Ruby configuration is tweaked in a manner that + # changes some of the internal structures that the profiler relies on. Concretely, setting for instance + # `VM_CHECK_MODE=1` when building Ruby will trigger this issue (because somethings in structures the profiler reads + # are ifdef'd out using this setting). + # + # To workaround this issue, we override `with_cppflags` for datadog-ruby_core_source to still include `$CPPFLAGS`. + Datadog::RubyCoreSource.define_singleton_method(:with_cppflags) do |newflags, &block| + super("#{newflags} #{$CPPFLAGS}", &block) + end - Debase::RubyCoreSource + Datadog::RubyCoreSource .create_makefile_with_core( proc do headers_available = - have_header('vm_core.h') && - have_header('iseq.h') && - (RUBY_VERSION < '3.3' || have_header('ractor_core.h')) + have_header("vm_core.h") && + have_header("iseq.h") && + (RUBY_VERSION < "3.3" || have_header("ractor_core.h")) if headers_available # Warn on unused parameters to functions. Use `DDTRACE_UNUSED` to mark things as known-to-not-be-used. # This is added as late as possible because in some Rubies we support (e.g. 3.3), adding this flag before # checking if internal VM headers are available causes those checks to fail because of this warning (and not # because the headers are not available.) - add_compiler_flag '-Wunused-parameter' + append_cflags "-Wunused-parameter" end headers_available diff --git a/ext/datadog_profiling_native_extension/gvl_profiling_helper.c b/ext/datadog_profiling_native_extension/gvl_profiling_helper.c new file mode 100644 index 00000000000..e07acb49854 --- /dev/null +++ b/ext/datadog_profiling_native_extension/gvl_profiling_helper.c @@ -0,0 +1,50 @@ +#include +#include +#include "gvl_profiling_helper.h" + +#if !defined(NO_GVL_INSTRUMENTATION) && !defined(USE_GVL_PROFILING_3_2_WORKAROUNDS) // Ruby 3.3+ + rb_internal_thread_specific_key_t gvl_waiting_tls_key; + + void gvl_profiling_init(void) { + gvl_waiting_tls_key = rb_internal_thread_specific_key_create(); + } + +#endif + +#ifdef USE_GVL_PROFILING_3_2_WORKAROUNDS // Ruby 3.2 + __thread gvl_profiling_thread gvl_waiting_tls; + static bool gvl_profiling_state_thread_tracking_workaround_installed = false; + + static void on_thread_start( + DDTRACE_UNUSED rb_event_flag_t _unused1, + DDTRACE_UNUSED const rb_internal_thread_event_data_t *_unused2, + DDTRACE_UNUSED void *_unused3 + ) { + gvl_waiting_tls = (gvl_profiling_thread) {.thread = NULL}; + } + + // Hack: We're using the gvl_waiting_tls native thread-local to store per-thread information. Unfortunately, Ruby puts a big hole + // in our plan because it reuses native threads -- specifically, in Ruby 3.2, native threads are still 1:1 to Ruby + // threads (M:N wasn't a thing yet) BUT once a Ruby thread dies, the VM will keep the native thread around for a + // bit, and if another Ruby thread starts right after, Ruby will reuse the native thread, rather than create a new one. + // + // This will mean that the new Ruby thread will still have the same native thread-local data that we set on the + // old thread. For the purposes of our tracking, where we're keeping a pointer to the current thread object in + // thread-local storage **this is disastrous** since it means we'll be pointing at the wrong thread (and its + // memory may have been freed or reused since!) + // + // To work around this issue, once GVL profiling is enabled, we install an event hook on thread start + // events that clears the thread-local data. This guarantees that there will be no stale data -- any existing + // data will be cleared at thread start. + // + // Note that once installed, this event hook becomes permanent -- stopping the profiler does not stop this event + // hook, unlike all others. This is because we can't afford to miss any thread start events while the + // profiler is stopped (e.g. during reconfiguration) as that would mean stale data once the profiler starts again. + void gvl_profiling_state_thread_tracking_workaround(void) { + if (gvl_profiling_state_thread_tracking_workaround_installed) return; + + rb_internal_thread_add_event_hook(on_thread_start, RUBY_INTERNAL_THREAD_EVENT_STARTED, NULL); + + gvl_profiling_state_thread_tracking_workaround_installed = true; + } +#endif diff --git a/ext/datadog_profiling_native_extension/gvl_profiling_helper.h b/ext/datadog_profiling_native_extension/gvl_profiling_helper.h new file mode 100644 index 00000000000..071a45151d2 --- /dev/null +++ b/ext/datadog_profiling_native_extension/gvl_profiling_helper.h @@ -0,0 +1,75 @@ +#pragma once + +// This helper is used by the Datadog::Profiling::Collectors::ThreadContext to store data used when profiling the GVL. +// It's tested through that class' interfaces. +// --- + +#include "extconf.h" + +#if !defined(NO_GVL_INSTRUMENTATION) && !defined(USE_GVL_PROFILING_3_2_WORKAROUNDS) // Ruby 3.3+ + #include + #include + #include "datadog_ruby_common.h" + + typedef struct { VALUE thread; } gvl_profiling_thread; + extern rb_internal_thread_specific_key_t gvl_waiting_tls_key; + + void gvl_profiling_init(void); + + static inline gvl_profiling_thread thread_from_thread_object(VALUE thread) { + return (gvl_profiling_thread) {.thread = thread}; + } + + static inline gvl_profiling_thread thread_from_event(const rb_internal_thread_event_data_t *event_data) { + return thread_from_thread_object(event_data->thread); + } + + static inline intptr_t gvl_profiling_state_get(gvl_profiling_thread thread) { + return (intptr_t) rb_internal_thread_specific_get(thread.thread, gvl_waiting_tls_key); + } + + static inline void gvl_profiling_state_set(gvl_profiling_thread thread, intptr_t value) { + rb_internal_thread_specific_set(thread.thread, gvl_waiting_tls_key, (void *) value); + } +#endif + +#ifdef USE_GVL_PROFILING_3_2_WORKAROUNDS // Ruby 3.2 + typedef struct { void *thread; } gvl_profiling_thread; + extern __thread gvl_profiling_thread gvl_waiting_tls; + + static inline void gvl_profiling_init(void) { } + + // This header gets included in private_vm_access.c which can't include datadog_ruby_common.h so we replicate this + // helper here + #ifdef __GNUC__ + #define DDTRACE_UNUSED __attribute__((unused)) + #else + #define DDTRACE_UNUSED + #endif + + // NOTE: This is a hack that relies on the knowledge that on Ruby 3.2 the + // RUBY_INTERNAL_THREAD_EVENT_READY and RUBY_INTERNAL_THREAD_EVENT_RESUMED events always get called on the thread they + // are about. Thus, we can use our thread local storage hack to get this data, even though the event doesn't include it. + static inline gvl_profiling_thread thread_from_event(DDTRACE_UNUSED const void *event_data) { + return gvl_waiting_tls; + } + + void gvl_profiling_state_thread_tracking_workaround(void); + gvl_profiling_thread gvl_profiling_state_maybe_initialize(void); + + // Implementing these on Ruby 3.2 requires access to private VM things, so the following methods are + // implemented in `private_vm_api_access.c` + gvl_profiling_thread thread_from_thread_object(VALUE thread); + intptr_t gvl_profiling_state_get(gvl_profiling_thread thread); + void gvl_profiling_state_set(gvl_profiling_thread thread, intptr_t value); +#endif + +#ifndef NO_GVL_INSTRUMENTATION // For all Rubies supporting GVL profiling (3.2+) + static inline intptr_t gvl_profiling_state_thread_object_get(VALUE thread) { + return gvl_profiling_state_get(thread_from_thread_object(thread)); + } + + static inline void gvl_profiling_state_thread_object_set(VALUE thread, intptr_t value) { + gvl_profiling_state_set(thread_from_thread_object(thread), value); + } +#endif diff --git a/ext/datadog_profiling_native_extension/heap_recorder.c b/ext/datadog_profiling_native_extension/heap_recorder.c index 489b9d1e58f..ea1c2ee5e4c 100644 --- a/ext/datadog_profiling_native_extension/heap_recorder.c +++ b/ext/datadog_profiling_native_extension/heap_recorder.c @@ -5,6 +5,7 @@ #include #include "collectors_stack.h" #include "libdatadog_helpers.h" +#include "time_helpers.h" #if (defined(HAVE_WORKING_RB_GC_FORCE_RECYCLE) && ! defined(NO_SEEN_OBJ_ID_FLAG)) #define CAN_APPLY_GC_FORCE_RECYCLE_BUG_WORKAROUND @@ -16,6 +17,16 @@ // relevant for heap profiles as the great majority should be trivially reclaimed // during the next GC. #define ITERATION_MIN_AGE 1 +// Copied from https://github.com/ruby/ruby/blob/15135030e5808d527325feaaaf04caeb1b44f8b5/gc/default.c#L725C1-L725C27 +// to align with Ruby's GC definition of what constitutes an old object which are only +// supposed to be reclaimed in major GCs. +#define OLD_AGE 3 +// Wait at least 2 seconds before asking heap recorder to explicitly update itself. Heap recorder +// data will only materialize at profile serialization time but updating often helps keep our +// heap tracking data small since every GC should get rid of a bunch of temporary objects. The +// more we clean up before profile flush, the less work we'll have to do all-at-once when preparing +// to flush heap data and holding the GVL which should hopefully help with reducing latency impact. +#define MIN_TIME_BETWEEN_HEAP_RECORDER_UPDATES_NS SECONDS_AS_NS(2) // A compact representation of a stacktrace frame for a heap allocation. typedef struct { @@ -144,11 +155,18 @@ struct heap_recorder { // mutation of the data so iteration can occur without acquiring a lock. // NOTE: Contrary to object_records, this table has no ownership of its data. st_table *object_records_snapshot; - // The GC gen/epoch/count in which we prepared the current iteration. + // Are we currently updating or not? + bool updating; + // The GC gen/epoch/count in which we are updating (or last updated if not currently updating). // - // This enables us to calculate the age of iterated objects in the above snapshot by - // comparing it against an object's alloc_gen. - size_t iteration_gen; + // This enables us to calculate the age of objects considered in the update by comparing it + // against an object's alloc_gen. + size_t update_gen; + // Whether the current update (or last update if not currently updating) is including old + // objects or not. + bool update_include_old; + // When did we do the last update of heap recorder? + long last_update_ns; // Data for a heap recording that was started but not yet ended recording active_recording; @@ -165,7 +183,28 @@ struct heap_recorder { size_t objects_skipped; size_t objects_frozen; } stats_last_update; + + struct stats_lifetime { + unsigned long updates_successful; + unsigned long updates_skipped_concurrent; + unsigned long updates_skipped_gcgen; + unsigned long updates_skipped_time; + + double ewma_young_objects_alive; + double ewma_young_objects_dead; + double ewma_young_objects_skipped; // Note: Here "young" refers to the young update; objects skipped includes non-young objects + + double ewma_objects_alive; + double ewma_objects_dead; + double ewma_objects_skipped; + } stats_lifetime; +}; + +struct end_heap_allocation_args { + struct heap_recorder *heap_recorder; + ddog_prof_Slice_Location locations; }; + static heap_record* get_or_create_heap_record(heap_recorder*, ddog_prof_Slice_Location); static void cleanup_heap_record_if_unused(heap_recorder*, heap_record*); static void on_committed_object_record_cleanup(heap_recorder *heap_recorder, object_record *record); @@ -176,6 +215,9 @@ static int st_object_records_iterate(st_data_t, st_data_t, st_data_t); static int st_object_records_debug(st_data_t key, st_data_t value, st_data_t extra); static int update_object_record_entry(st_data_t*, st_data_t*, st_data_t, int); static void commit_recording(heap_recorder*, heap_record*, recording); +static VALUE end_heap_allocation_recording(VALUE end_heap_allocation_args); +static void heap_recorder_update(heap_recorder *heap_recorder, bool full_update); +static inline double ewma_stat(double previous, double current); // ========================== // Heap Recorder External API @@ -273,6 +315,9 @@ void heap_recorder_after_fork(heap_recorder *heap_recorder) { if (heap_recorder->object_records_snapshot != NULL) { heap_recorder_finish_iteration(heap_recorder); } + + // Clear lifetime stats since this is essentially a new heap recorder + heap_recorder->stats_lifetime = (struct stats_lifetime) {0}; } void start_heap_allocation_recording(heap_recorder *heap_recorder, VALUE new_obj, unsigned int weight, ddog_CharSlice *alloc_class) { @@ -340,9 +385,28 @@ void start_heap_allocation_recording(heap_recorder *heap_recorder, VALUE new_obj }; } -void end_heap_allocation_recording(struct heap_recorder *heap_recorder, ddog_prof_Slice_Location locations) { +// end_heap_allocation_recording_with_rb_protect gets called while the stack_recorder is holding one of the profile +// locks. To enable us to correctly unlock the profile on exception, we wrap the call to end_heap_allocation_recording +// with an rb_protect. +__attribute__((warn_unused_result)) +int end_heap_allocation_recording_with_rb_protect(struct heap_recorder *heap_recorder, ddog_prof_Slice_Location locations) { + int exception_state; + struct end_heap_allocation_args end_heap_allocation_args = { + .heap_recorder = heap_recorder, + .locations = locations, + }; + rb_protect(end_heap_allocation_recording, (VALUE) &end_heap_allocation_args, &exception_state); + return exception_state; +} + +static VALUE end_heap_allocation_recording(VALUE end_heap_allocation_args) { + struct end_heap_allocation_args *args = (struct end_heap_allocation_args *) end_heap_allocation_args; + + struct heap_recorder *heap_recorder = args->heap_recorder; + ddog_prof_Slice_Location locations = args->locations; + if (heap_recorder == NULL) { - return; + return Qnil; } recording active_recording = heap_recorder->active_recording; @@ -356,34 +420,106 @@ void end_heap_allocation_recording(struct heap_recorder *heap_recorder, ddog_pro // data required for committing though. heap_recorder->active_recording = (recording) {0}; - if (active_recording.object_record == &SKIPPED_RECORD) { - // special marker when we decided to skip due to sampling - return; + if (active_recording.object_record == &SKIPPED_RECORD) { // special marker when we decided to skip due to sampling + return Qnil; } heap_record *heap_record = get_or_create_heap_record(heap_recorder, locations); // And then commit the new allocation. commit_recording(heap_recorder, heap_record, active_recording); + + return Qnil; } -void heap_recorder_prepare_iteration(heap_recorder *heap_recorder) { +void heap_recorder_update_young_objects(heap_recorder *heap_recorder) { if (heap_recorder == NULL) { return; } - heap_recorder->iteration_gen = rb_gc_count(); + heap_recorder_update(heap_recorder, /* full_update: */ false); +} + +static void heap_recorder_update(heap_recorder *heap_recorder, bool full_update) { + if (heap_recorder->updating) { + if (full_update) rb_raise(rb_eRuntimeError, "BUG: full_update should not be triggered during another update"); + + // If we try to update while another update is still running, short-circuit. + // NOTE: This runs while holding the GVL. But since updates may be triggered from GC activity, there's still + // a chance for updates to be attempted concurrently if scheduling gods so determine. + heap_recorder->stats_lifetime.updates_skipped_concurrent++; + return; + } if (heap_recorder->object_records_snapshot != NULL) { - // we could trivially handle this but we raise to highlight and catch unexpected usages. - rb_raise(rb_eRuntimeError, "New heap recorder iteration prepared without the previous one having been finished."); + // While serialization is happening, it runs without the GVL and uses the object_records_snapshot. + // Although we iterate on a snapshot of object_records, these records point to other data that has not been + // snapshotted for efficiency reasons (e.g. heap_records). Since updating may invalidate + // some of that non-snapshotted data, let's refrain from doing updates during iteration. This also enforces the + // semantic that iteration will operate as a point-in-time snapshot. + return; } + size_t current_gc_gen = rb_gc_count(); + long now_ns = monotonic_wall_time_now_ns(DO_NOT_RAISE_ON_FAILURE); + + if (!full_update) { + if (current_gc_gen == heap_recorder->update_gen) { + // Are we still in the same GC gen as last update? If so, skip updating since things should not have + // changed significantly since last time. + // NOTE: This is mostly a performance decision. I suppose some objects may be cleaned up in intermediate + // GC steps and sizes may change. But because we have to iterate through all our tracked + // object records to do an update, let's wait until all steps for a particular GC generation + // have finished to do so. We may revisit this once we have a better liveness checking mechanism. + heap_recorder->stats_lifetime.updates_skipped_gcgen++; + return; + } + + if (now_ns > 0 && (now_ns - heap_recorder->last_update_ns) < MIN_TIME_BETWEEN_HEAP_RECORDER_UPDATES_NS) { + // We did an update not too long ago. Let's skip this one to avoid over-taxing the system. + heap_recorder->stats_lifetime.updates_skipped_time++; + return; + } + } + + heap_recorder->updating = true; // Reset last update stats, we'll be building them from scratch during the st_foreach call below - heap_recorder->stats_last_update = (struct stats_last_update) {}; + heap_recorder->stats_last_update = (struct stats_last_update) {0}; + + heap_recorder->update_gen = current_gc_gen; + heap_recorder->update_include_old = full_update; st_foreach(heap_recorder->object_records, st_object_record_update, (st_data_t) heap_recorder); + heap_recorder->last_update_ns = now_ns; + heap_recorder->stats_lifetime.updates_successful++; + + // Lifetime stats updating + if (!full_update) { + heap_recorder->stats_lifetime.ewma_young_objects_alive = ewma_stat(heap_recorder->stats_lifetime.ewma_young_objects_alive, heap_recorder->stats_last_update.objects_alive); + heap_recorder->stats_lifetime.ewma_young_objects_dead = ewma_stat(heap_recorder->stats_lifetime.ewma_young_objects_dead, heap_recorder->stats_last_update.objects_dead); + heap_recorder->stats_lifetime.ewma_young_objects_skipped = ewma_stat(heap_recorder->stats_lifetime.ewma_young_objects_skipped, heap_recorder->stats_last_update.objects_skipped); + } else { + heap_recorder->stats_lifetime.ewma_objects_alive = ewma_stat(heap_recorder->stats_lifetime.ewma_objects_alive, heap_recorder->stats_last_update.objects_alive); + heap_recorder->stats_lifetime.ewma_objects_dead = ewma_stat(heap_recorder->stats_lifetime.ewma_objects_dead, heap_recorder->stats_last_update.objects_dead); + heap_recorder->stats_lifetime.ewma_objects_skipped = ewma_stat(heap_recorder->stats_lifetime.ewma_objects_skipped, heap_recorder->stats_last_update.objects_skipped); + } + + heap_recorder->updating = false; +} + +void heap_recorder_prepare_iteration(heap_recorder *heap_recorder) { + if (heap_recorder == NULL) { + return; + } + + if (heap_recorder->object_records_snapshot != NULL) { + // we could trivially handle this but we raise to highlight and catch unexpected usages. + rb_raise(rb_eRuntimeError, "New heap recorder iteration prepared without the previous one having been finished."); + } + + heap_recorder_update(heap_recorder, /* full_update: */ true); + heap_recorder->object_records_snapshot = st_copy(heap_recorder->object_records); if (heap_recorder->object_records_snapshot == NULL) { rb_raise(rb_eRuntimeError, "Failed to create heap snapshot."); @@ -447,6 +583,19 @@ VALUE heap_recorder_state_snapshot(heap_recorder *heap_recorder) { ID2SYM(rb_intern("last_update_objects_dead")), /* => */ LONG2NUM(heap_recorder->stats_last_update.objects_dead), ID2SYM(rb_intern("last_update_objects_skipped")), /* => */ LONG2NUM(heap_recorder->stats_last_update.objects_skipped), ID2SYM(rb_intern("last_update_objects_frozen")), /* => */ LONG2NUM(heap_recorder->stats_last_update.objects_frozen), + + // Lifetime stats + ID2SYM(rb_intern("lifetime_updates_successful")), /* => */ LONG2NUM(heap_recorder->stats_lifetime.updates_successful), + ID2SYM(rb_intern("lifetime_updates_skipped_concurrent")), /* => */ LONG2NUM(heap_recorder->stats_lifetime.updates_skipped_concurrent), + ID2SYM(rb_intern("lifetime_updates_skipped_gcgen")), /* => */ LONG2NUM(heap_recorder->stats_lifetime.updates_skipped_gcgen), + ID2SYM(rb_intern("lifetime_updates_skipped_time")), /* => */ LONG2NUM(heap_recorder->stats_lifetime.updates_skipped_time), + ID2SYM(rb_intern("lifetime_ewma_young_objects_alive")), /* => */ DBL2NUM(heap_recorder->stats_lifetime.ewma_young_objects_alive), + ID2SYM(rb_intern("lifetime_ewma_young_objects_dead")), /* => */ DBL2NUM(heap_recorder->stats_lifetime.ewma_young_objects_dead), + // Note: Here "young" refers to the young update; objects skipped includes non-young objects + ID2SYM(rb_intern("lifetime_ewma_young_objects_skipped")), /* => */ DBL2NUM(heap_recorder->stats_lifetime.ewma_young_objects_skipped), + ID2SYM(rb_intern("lifetime_ewma_objects_alive")), /* => */ DBL2NUM(heap_recorder->stats_lifetime.ewma_objects_alive), + ID2SYM(rb_intern("lifetime_ewma_objects_dead")), /* => */ DBL2NUM(heap_recorder->stats_lifetime.ewma_objects_dead), + ID2SYM(rb_intern("lifetime_ewma_objects_skipped")), /* => */ DBL2NUM(heap_recorder->stats_lifetime.ewma_objects_skipped), }; VALUE hash = rb_hash_new(); for (long unsigned int i = 0; i < VALUE_COUNT(arguments); i += 2) rb_hash_aset(hash, arguments[i], arguments[i+1]); @@ -476,11 +625,14 @@ void heap_recorder_testonly_assert_hash_matches(ddog_prof_Slice_Location locatio VALUE heap_recorder_testonly_debug(heap_recorder *heap_recorder) { if (heap_recorder == NULL) { - return rb_str_new2("NULL heap_recorder"); + rb_raise(rb_eArgError, "heap_recorder is NULL"); } VALUE debug_str = rb_str_new2("object records:\n"); st_foreach(heap_recorder->object_records, st_object_records_debug, (st_data_t) debug_str); + + rb_str_catf(debug_str, "state snapshot: %"PRIsVALUE"\n------\n", heap_recorder_state_snapshot(heap_recorder)); + return debug_str; } @@ -499,13 +651,6 @@ static int st_object_record_entry_free(DDTRACE_UNUSED st_data_t key, st_data_t v return ST_DELETE; } -// Check to see if an object should not be included in a heap recorder iteration. -// This centralizes the checking logic to ensure it's equally applied between -// preparation and iteration codepaths. -static inline bool should_exclude_from_iteration(object_record *obj_record) { - return obj_record->object_data.gen_age < ITERATION_MIN_AGE; -} - static int st_object_record_update(st_data_t key, st_data_t value, st_data_t extra_arg) { long obj_id = (long) key; object_record *record = (object_record*) value; @@ -513,16 +658,20 @@ static int st_object_record_update(st_data_t key, st_data_t value, st_data_t ext VALUE ref; - size_t iteration_gen = recorder->iteration_gen; + size_t update_gen = recorder->update_gen; size_t alloc_gen = record->object_data.alloc_gen; // Guard against potential overflows given unsigned types here. - record->object_data.gen_age = alloc_gen < iteration_gen ? iteration_gen - alloc_gen : 0; + record->object_data.gen_age = alloc_gen < update_gen ? update_gen - alloc_gen : 0; + + if (record->object_data.gen_age == 0) { + // Objects that belong to the current GC gen have not had a chance to be cleaned up yet + // and won't show up in the iteration anyway so no point in checking their liveness/sizes. + recorder->stats_last_update.objects_skipped++; + return ST_CONTINUE; + } - if (should_exclude_from_iteration(record)) { - // If an object won't be included in the current iteration, there's - // no point checking for liveness or updating its size, so exit early. - // NOTE: This means that there should be an equivalent check during actual - // iteration otherwise we'd iterate/expose stale object data. + if (!recorder->update_include_old && record->object_data.gen_age >= OLD_AGE) { + // The current update is not including old objects but this record is for an old object, skip its update. recorder->stats_last_update.objects_skipped++; return ST_CONTINUE; } @@ -571,7 +720,11 @@ static int st_object_record_update(st_data_t key, st_data_t value, st_data_t ext #endif - if (recorder->size_enabled && !record->object_data.is_frozen) { + if ( + recorder->size_enabled && + recorder->update_include_old && // We only update sizes when doing a full update + !record->object_data.is_frozen + ) { // if we were asked to update sizes and this object was not already seen as being frozen, // update size again. record->object_data.size = ruby_obj_memsize_of(ref); @@ -595,22 +748,22 @@ static int st_object_records_iterate(DDTRACE_UNUSED st_data_t key, st_data_t val const heap_recorder *recorder = context->heap_recorder; - if (should_exclude_from_iteration(record)) { + if (record->object_data.gen_age < ITERATION_MIN_AGE) { // Skip objects that should not be included in iteration - // NOTE: This matches the short-circuiting condition in st_object_record_update - // and prevents iteration over stale objects. return ST_CONTINUE; } ddog_prof_Location *locations = recorder->reusable_locations; for (uint16_t i = 0; i < stack->frames_len; i++) { const heap_frame *frame = &stack->frames[i]; - ddog_prof_Location *location = &locations[i]; - location->function.name.ptr = frame->name; - location->function.name.len = strlen(frame->name); - location->function.filename.ptr = frame->filename; - location->function.filename.len = strlen(frame->filename); - location->line = frame->line; + locations[i] = (ddog_prof_Location) { + .mapping = {.filename = DDOG_CHARSLICE_C(""), .build_id = DDOG_CHARSLICE_C("")}, + .function = { + .name = {.ptr = frame->name, .len = strlen(frame->name)}, + .filename = {.ptr = frame->filename, .len = strlen(frame->filename)}, + }, + .line = frame->line, + }; } heap_recorder_iteration_data iteration_data; @@ -755,8 +908,20 @@ static void cleanup_heap_record_if_unused(heap_recorder *heap_recorder, heap_rec } static void on_committed_object_record_cleanup(heap_recorder *heap_recorder, object_record *record) { + // @ivoanjo: We've seen a segfault crash in the field in this function (October 2024) which we're still trying to investigate. + // (See PROF-10656 Datadog-internal for details). Just in case, I've sprinkled a bunch of NULL tests in this function for now. + // Once we figure out the issue we can get rid of them again. + + if (heap_recorder == NULL) rb_raise(rb_eRuntimeError, "heap_recorder was NULL in on_committed_object_record_cleanup"); + if (heap_recorder->heap_records == NULL) rb_raise(rb_eRuntimeError, "heap_recorder->heap_records was NULL in on_committed_object_record_cleanup"); + if (record == NULL) rb_raise(rb_eRuntimeError, "record was NULL in on_committed_object_record_cleanup"); + // Starting with the associated heap record. There will now be one less tracked object pointing to it heap_record *heap_record = record->heap_record; + + if (heap_record == NULL) rb_raise(rb_eRuntimeError, "heap_record was NULL in on_committed_object_record_cleanup"); + if (heap_record->stack == NULL) rb_raise(rb_eRuntimeError, "heap_record->stack was NULL in on_committed_object_record_cleanup"); + heap_record->num_tracked_objects--; // One less object using this heap record, it may have become unused... @@ -815,6 +980,7 @@ VALUE object_record_inspect(object_record *record) { if (!ruby_ref_from_id(LONG2NUM(record->obj_id), &ref)) { rb_str_catf(inspect, "object="); } else { + rb_str_catf(inspect, "value=%p ", (void *) ref); VALUE ruby_inspect = ruby_safe_inspect(ref); if (ruby_inspect != Qnil) { rb_str_catf(inspect, "object=%"PRIsVALUE, ruby_inspect); @@ -1045,3 +1211,25 @@ st_index_t heap_record_key_hash_st(st_data_t key) { return ddog_location_slice_hash(*record_key->location_slice, FNV1_32A_INIT); } } + +static inline double ewma_stat(double previous, double current) { + double alpha = 0.3; + return (1 - alpha) * previous + alpha * current; +} + +VALUE heap_recorder_testonly_is_object_recorded(heap_recorder *heap_recorder, VALUE obj_id) { + if (heap_recorder == NULL) { + rb_raise(rb_eArgError, "heap_recorder is NULL"); + } + + // Check if object records contains an object with this object_id + return st_is_member(heap_recorder->object_records, FIX2LONG(obj_id)) ? Qtrue : Qfalse; +} + +void heap_recorder_testonly_reset_last_update(heap_recorder *heap_recorder) { + if (heap_recorder == NULL) { + rb_raise(rb_eArgError, "heap_recorder is NULL"); + } + + heap_recorder->last_update_ns = 0; +} diff --git a/ext/datadog_profiling_native_extension/heap_recorder.h b/ext/datadog_profiling_native_extension/heap_recorder.h index 4d8a7aa1e89..bd298464e35 100644 --- a/ext/datadog_profiling_native_extension/heap_recorder.h +++ b/ext/datadog_profiling_native_extension/heap_recorder.h @@ -114,7 +114,14 @@ void start_heap_allocation_recording(heap_recorder *heap_recorder, VALUE new_obj // @param locations The stacktrace representing the location of the allocation. // // WARN: It is illegal to call this without previously having called ::start_heap_allocation_recording. -void end_heap_allocation_recording(heap_recorder *heap_recorder, ddog_prof_Slice_Location locations); +// WARN: This method rescues exceptions with `rb_protect`, returning the exception state integer for the caller to handle. +__attribute__((warn_unused_result)) +int end_heap_allocation_recording_with_rb_protect(heap_recorder *heap_recorder, ddog_prof_Slice_Location locations); + +// Update the heap recorder, **checking young objects only**. The idea here is to align with GC: most young objects never +// survive enough GC generations, and thus periodically running this method reduces memory usage (we get rid of +// these objects quicker) and hopefully reduces tail latency (because there's less objects at serialization time to check). +void heap_recorder_update_young_objects(heap_recorder *heap_recorder); // Update the heap recorder to reflect the latest state of the VM and prepare internal structures // for efficient iteration. @@ -164,3 +171,9 @@ void heap_recorder_testonly_assert_hash_matches(ddog_prof_Slice_Location locatio // Returns a Ruby string with a representation of internal data helpful to // troubleshoot issues such as unexpected test failures. VALUE heap_recorder_testonly_debug(heap_recorder *heap_recorder); + +// Check if a given object_id is being tracked or not +VALUE heap_recorder_testonly_is_object_recorded(heap_recorder *heap_recorder, VALUE obj_id); + +// Used to ensure that a GC actually triggers an update of the objects +void heap_recorder_testonly_reset_last_update(heap_recorder *heap_recorder); diff --git a/ext/datadog_profiling_native_extension/helpers.h b/ext/datadog_profiling_native_extension/helpers.h index ee34d29df18..007598802a7 100644 --- a/ext/datadog_profiling_native_extension/helpers.h +++ b/ext/datadog_profiling_native_extension/helpers.h @@ -2,22 +2,11 @@ #include -// Used to mark symbols to be exported to the outside of the extension. -// Consider very carefully before tagging a function with this. -#define DDTRACE_EXPORT __attribute__ ((visibility ("default"))) - -// Used to mark function arguments that are deliberately left unused -#ifdef __GNUC__ - #define DDTRACE_UNUSED __attribute__((unused)) -#else - #define DDTRACE_UNUSED -#endif - // @ivoanjo: After trying to read through https://stackoverflow.com/questions/3437404/min-and-max-in-c I decided I // don't like C and I just implemented this as a function. -inline static uint64_t uint64_max_of(uint64_t a, uint64_t b) { return a > b ? a : b; } -inline static uint64_t uint64_min_of(uint64_t a, uint64_t b) { return a > b ? b : a; } -inline static long long_max_of(long a, long b) { return a > b ? a : b; } -inline static long long_min_of(long a, long b) { return a > b ? b : a; } -inline static double double_max_of(double a, double b) { return a > b ? a : b; } -inline static double double_min_of(double a, double b) { return a > b ? b : a; } +static inline uint64_t uint64_max_of(uint64_t a, uint64_t b) { return a > b ? a : b; } +static inline uint64_t uint64_min_of(uint64_t a, uint64_t b) { return a > b ? b : a; } +static inline long long_max_of(long a, long b) { return a > b ? a : b; } +static inline long long_min_of(long a, long b) { return a > b ? b : a; } +static inline double double_max_of(double a, double b) { return a > b ? a : b; } +static inline double double_min_of(double a, double b) { return a > b ? b : a; } diff --git a/ext/datadog_profiling_native_extension/http_transport.c b/ext/datadog_profiling_native_extension/http_transport.c index 02fb136e0ba..d41ab7a6b4c 100644 --- a/ext/datadog_profiling_native_extension/http_transport.c +++ b/ext/datadog_profiling_native_extension/http_transport.c @@ -21,7 +21,7 @@ struct call_exporter_without_gvl_arguments { bool send_ran; }; -inline static ddog_ByteSlice byte_slice_from_ruby_string(VALUE string); +static inline ddog_ByteSlice byte_slice_from_ruby_string(VALUE string); static VALUE _native_validate_exporter(VALUE self, VALUE exporter_configuration); static ddog_prof_Exporter_NewResult create_exporter(VALUE exporter_configuration, VALUE tags_as_array); static VALUE handle_exporter_failure(ddog_prof_Exporter_NewResult exporter_result); @@ -53,11 +53,11 @@ void http_transport_init(VALUE profiling_module) { ok_symbol = ID2SYM(rb_intern_const("ok")); error_symbol = ID2SYM(rb_intern_const("error")); - library_version_string = ddtrace_version(); + library_version_string = datadog_gem_version(); rb_global_variable(&library_version_string); } -inline static ddog_ByteSlice byte_slice_from_ruby_string(VALUE string) { +static inline ddog_ByteSlice byte_slice_from_ruby_string(VALUE string) { ENFORCE_TYPE(string, T_STRING); ddog_ByteSlice byte_slice = {.ptr = (uint8_t *) StringValuePtr(string), .len = RSTRING_LEN(string)}; return byte_slice; @@ -77,6 +77,32 @@ static VALUE _native_validate_exporter(DDTRACE_UNUSED VALUE _self, VALUE exporte return rb_ary_new_from_args(2, ok_symbol, Qnil); } +static ddog_prof_Endpoint endpoint_from(VALUE exporter_configuration) { + ENFORCE_TYPE(exporter_configuration, T_ARRAY); + + VALUE exporter_working_mode = rb_ary_entry(exporter_configuration, 0); + ENFORCE_TYPE(exporter_working_mode, T_SYMBOL); + ID working_mode = SYM2ID(exporter_working_mode); + + ID agentless_id = rb_intern("agentless"); + ID agent_id = rb_intern("agent"); + + if (working_mode != agentless_id && working_mode != agent_id) { + rb_raise(rb_eArgError, "Failed to initialize transport: Unexpected working mode, expected :agentless or :agent"); + } + + if (working_mode == agentless_id) { + VALUE site = rb_ary_entry(exporter_configuration, 1); + VALUE api_key = rb_ary_entry(exporter_configuration, 2); + + return ddog_prof_Endpoint_agentless(char_slice_from_ruby_string(site), char_slice_from_ruby_string(api_key)); + } else { // agent_id + VALUE base_url = rb_ary_entry(exporter_configuration, 1); + + return ddog_prof_Endpoint_agent(char_slice_from_ruby_string(base_url)); + } +} + static ddog_prof_Exporter_NewResult create_exporter(VALUE exporter_configuration, VALUE tags_as_array) { ENFORCE_TYPE(exporter_configuration, T_ARRAY); ENFORCE_TYPE(tags_as_array, T_ARRAY); @@ -115,8 +141,7 @@ static VALUE perform_export( ddog_prof_Exporter_Slice_File files_to_export_unmodified, ddog_Vec_Tag *additional_tags, ddog_CharSlice internal_metadata, - ddog_CharSlice info, - uint64_t timeout_milliseconds + ddog_CharSlice info ) { ddog_prof_ProfiledEndpointsStats *endpoints_stats = NULL; // Not in use yet ddog_prof_Exporter_Request_BuildResult build_result = ddog_prof_Exporter_Request_build( @@ -128,8 +153,7 @@ static VALUE perform_export( additional_tags, endpoints_stats, &internal_metadata, - &info, - timeout_milliseconds + &info ); if (build_result.tag == DDOG_PROF_EXPORTER_REQUEST_BUILD_RESULT_ERR) { @@ -254,6 +278,15 @@ static VALUE _native_do_export( VALUE failure_tuple = handle_exporter_failure(exporter_result); if (!NIL_P(failure_tuple)) return failure_tuple; + ddog_prof_MaybeError timeout_result = ddog_prof_Exporter_set_timeout(exporter_result.ok, timeout_milliseconds); + if (timeout_result.tag == DDOG_PROF_OPTION_ERROR_SOME_ERROR) { + // NOTE: Seems a bit harsh to fail the upload if we can't set a timeout. OTOH, this is only expected to fail + // if the exporter is not well built. Because such a situation should already be caught above I think it's + // preferable to leave this here as a virtually unreachable exception rather than ignoring it. + ddog_prof_Exporter_drop(exporter_result.ok); + return rb_ary_new_from_args(2, error_symbol, get_error_details_and_drop(&timeout_result.some)); + } + return perform_export( exporter_result.ok, start, @@ -262,8 +295,7 @@ static VALUE _native_do_export( files_to_export_unmodified, null_additional_tags, internal_metadata, - info, - timeout_milliseconds + info ); } diff --git a/ext/datadog_profiling_native_extension/libdatadog_helpers.c b/ext/datadog_profiling_native_extension/libdatadog_helpers.c index 101f2b50c7e..f6f8b69b1b9 100644 --- a/ext/datadog_profiling_native_extension/libdatadog_helpers.c +++ b/ext/datadog_profiling_native_extension/libdatadog_helpers.c @@ -2,8 +2,6 @@ #include -static VALUE log_failure_to_process_tag(VALUE err_details); - const char *ruby_value_type_to_string(enum ruby_value_type type) { return ruby_value_type_to_char_slice(type).ptr; } @@ -62,87 +60,3 @@ size_t read_ddogerr_string_and_drop(ddog_Error *error, char *string, size_t capa ddog_Error_drop(error); return error_msg_size; } - -__attribute__((warn_unused_result)) -ddog_prof_Endpoint endpoint_from(VALUE exporter_configuration) { - ENFORCE_TYPE(exporter_configuration, T_ARRAY); - - VALUE exporter_working_mode = rb_ary_entry(exporter_configuration, 0); - ENFORCE_TYPE(exporter_working_mode, T_SYMBOL); - ID working_mode = SYM2ID(exporter_working_mode); - - ID agentless_id = rb_intern("agentless"); - ID agent_id = rb_intern("agent"); - - if (working_mode != agentless_id && working_mode != agent_id) { - rb_raise(rb_eArgError, "Failed to initialize transport: Unexpected working mode, expected :agentless or :agent"); - } - - if (working_mode == agentless_id) { - VALUE site = rb_ary_entry(exporter_configuration, 1); - VALUE api_key = rb_ary_entry(exporter_configuration, 2); - ENFORCE_TYPE(site, T_STRING); - ENFORCE_TYPE(api_key, T_STRING); - - return ddog_prof_Endpoint_agentless(char_slice_from_ruby_string(site), char_slice_from_ruby_string(api_key)); - } else { // agent_id - VALUE base_url = rb_ary_entry(exporter_configuration, 1); - ENFORCE_TYPE(base_url, T_STRING); - - return ddog_prof_Endpoint_agent(char_slice_from_ruby_string(base_url)); - } -} - -__attribute__((warn_unused_result)) -ddog_Vec_Tag convert_tags(VALUE tags_as_array) { - ENFORCE_TYPE(tags_as_array, T_ARRAY); - - long tags_count = RARRAY_LEN(tags_as_array); - ddog_Vec_Tag tags = ddog_Vec_Tag_new(); - - for (long i = 0; i < tags_count; i++) { - VALUE name_value_pair = rb_ary_entry(tags_as_array, i); - - if (!RB_TYPE_P(name_value_pair, T_ARRAY)) { - ddog_Vec_Tag_drop(tags); - ENFORCE_TYPE(name_value_pair, T_ARRAY); - } - - // Note: We can index the array without checking its size first because rb_ary_entry returns Qnil if out of bounds - VALUE tag_name = rb_ary_entry(name_value_pair, 0); - VALUE tag_value = rb_ary_entry(name_value_pair, 1); - - if (!(RB_TYPE_P(tag_name, T_STRING) && RB_TYPE_P(tag_value, T_STRING))) { - ddog_Vec_Tag_drop(tags); - ENFORCE_TYPE(tag_name, T_STRING); - ENFORCE_TYPE(tag_value, T_STRING); - } - - ddog_Vec_Tag_PushResult push_result = - ddog_Vec_Tag_push(&tags, char_slice_from_ruby_string(tag_name), char_slice_from_ruby_string(tag_value)); - - if (push_result.tag == DDOG_VEC_TAG_PUSH_RESULT_ERR) { - // libdatadog validates tags and may catch invalid tags that ddtrace didn't actually catch. - // We warn users about such tags, and then just ignore them. - - int exception_state; - rb_protect(log_failure_to_process_tag, get_error_details_and_drop(&push_result.err), &exception_state); - - // Since we are calling into Ruby code, it may raise an exception. Ensure that dynamically-allocated tags - // get cleaned before propagating the exception. - if (exception_state) { - ddog_Vec_Tag_drop(tags); - rb_jump_tag(exception_state); // "Re-raise" exception - } - } - } - - return tags; -} - -static VALUE log_failure_to_process_tag(VALUE err_details) { - VALUE datadog_module = rb_const_get(rb_cObject, rb_intern("Datadog")); - VALUE logger = rb_funcall(datadog_module, rb_intern("logger"), 0); - - return rb_funcall(logger, rb_intern("warn"), 1, rb_sprintf("Failed to add tag to profiling request: %"PRIsVALUE, err_details)); -} diff --git a/ext/datadog_profiling_native_extension/libdatadog_helpers.h b/ext/datadog_profiling_native_extension/libdatadog_helpers.h index 99bfd50b342..573ee4db3a7 100644 --- a/ext/datadog_profiling_native_extension/libdatadog_helpers.h +++ b/ext/datadog_profiling_native_extension/libdatadog_helpers.h @@ -3,27 +3,10 @@ #include #include "ruby_helpers.h" -inline static ddog_CharSlice char_slice_from_ruby_string(VALUE string) { - ENFORCE_TYPE(string, T_STRING); - ddog_CharSlice char_slice = {.ptr = StringValuePtr(string), .len = RSTRING_LEN(string)}; - return char_slice; -} - -inline static VALUE ruby_string_from_vec_u8(ddog_Vec_U8 string) { +static inline VALUE ruby_string_from_vec_u8(ddog_Vec_U8 string) { return rb_str_new((char *) string.ptr, string.len); } -inline static VALUE ruby_string_from_error(const ddog_Error *error) { - ddog_CharSlice char_slice = ddog_Error_message(error); - return rb_str_new(char_slice.ptr, char_slice.len); -} - -inline static VALUE get_error_details_and_drop(ddog_Error *error) { - VALUE result = ruby_string_from_error(error); - ddog_Error_drop(error); - return result; -} - // Utility function to be able to extract an error cstring from a ddog_Error. // Returns the amount of characters written to string (which are necessarily // bounded by capacity - 1 since the string will be null-terminated). @@ -37,10 +20,6 @@ ddog_CharSlice ruby_value_type_to_char_slice(enum ruby_value_type type); // Returns a dynamically allocated string from the provided char slice. // WARN: The returned string must be explicitly freed with ruby_xfree. -inline static char* string_from_char_slice(ddog_CharSlice slice) { +static inline char* string_from_char_slice(ddog_CharSlice slice) { return ruby_strndup(slice.ptr, slice.len); } - -ddog_prof_Endpoint endpoint_from(VALUE exporter_configuration); - -ddog_Vec_Tag convert_tags(VALUE tags_as_array); diff --git a/ext/datadog_profiling_native_extension/native_extension_helpers.rb b/ext/datadog_profiling_native_extension/native_extension_helpers.rb index 4c1227b3656..c36625c3b1f 100644 --- a/ext/datadog_profiling_native_extension/native_extension_helpers.rb +++ b/ext/datadog_profiling_native_extension/native_extension_helpers.rb @@ -1,123 +1,26 @@ # frozen_string_literal: true -require 'rubygems' -require 'pathname' - module Datadog module Profiling # Helpers for extconf.rb module NativeExtensionHelpers # Can be set when customers want to skip compiling the native extension entirely - ENV_NO_EXTENSION = 'DD_PROFILING_NO_EXTENSION' + ENV_NO_EXTENSION = "DD_PROFILING_NO_EXTENSION" # Can be set to force rubygems to fail gem installation when profiling extension could not be built - ENV_FAIL_INSTALL_IF_MISSING_EXTENSION = 'DD_PROFILING_FAIL_INSTALL_IF_MISSING_EXTENSION' - - # The MJIT header was introduced on 2.6 and removed on 3.3; for other Rubies we rely on debase-ruby_core_source - CAN_USE_MJIT_HEADER = RUBY_VERSION.start_with?('2.6', '2.7', '3.0.', '3.1.', '3.2.') + ENV_FAIL_INSTALL_IF_MISSING_EXTENSION = "DD_PROFILING_FAIL_INSTALL_IF_MISSING_EXTENSION" - LIBDATADOG_VERSION = '~> 10.0.0.1.0' + # The MJIT header was introduced on 2.6 and removed on 3.3; for other Rubies we rely on datadog-ruby_core_source + CAN_USE_MJIT_HEADER = RUBY_VERSION.start_with?("2.6", "2.7", "3.0.", "3.1.", "3.2.") def self.fail_install_if_missing_extension? - ENV[ENV_FAIL_INSTALL_IF_MISSING_EXTENSION].to_s.strip.downcase == 'true' - end - - # Used as an workaround for a limitation with how dynamic linking works in environments where the datadog gem and - # libdatadog are moved after the extension gets compiled. - # - # Because the libddpprof native library is installed on a non-standard system path, in order for it to be - # found by the system dynamic linker (e.g. what takes care of dlopen(), which is used to load the profiling - # native extension), we need to add a "runpath" -- a list of folders to search for libdatadog. - # - # This runpath gets hardcoded at native library linking time. You can look at it using the `readelf` tool in - # Linux: e.g. `readelf -d datadog_profiling_native_extension.2.7.3_x86_64-linux.so`. - # - # In older versions of the datadog gem, we only set as runpath an absolute path to libdatadog. - # (This gets set automatically by the call - # to `pkg_config('datadog_profiling_with_rpath')` in `extconf.rb`). This worked fine as long as libdatadog was **NOT** - # moved from the folder it was present at datadog gem installation/linking time. - # - # Unfortunately, environments such as Heroku and AWS Elastic Beanstalk move gems around in the filesystem after - # installation. Thus, the profiling native extension could not be loaded in these environments - # (see https://github.com/DataDog/dd-trace-rb/issues/2067) because libdatadog could not be found. - # - # To workaround this issue, this method computes the **relative** path between the folder where the profiling - # native extension is going to be installed and the folder where libdatadog is installed, and returns it - # to be set as an additional runpath. (Yes, you can set multiple runpath folders to be searched). - # - # This way, if both gems are moved together (and it turns out that they are in these environments), - # the relative path can still be traversed to find libdatadog. - # - # This is incredibly awful, and it's kinda bizarre how it's not possible to just find these paths at runtime - # and set them correctly; rather than needing to set stuff at linking-time and then praying to $deity that - # weird moves don't happen. - # - # As a curiosity, `LD_LIBRARY_PATH` can be used to influence the folders that get searched but **CANNOT BE - # SET DYNAMICALLY**, e.g. it needs to be set at the start of the process (Ruby VM) and thus it's not something - # we could setup when doing a `require`. - # - def self.libdatadog_folder_relative_to_native_lib_folder( - current_folder: __dir__, - libdatadog_pkgconfig_folder: Libdatadog.pkgconfig_folder - ) - return unless libdatadog_pkgconfig_folder - - profiling_native_lib_folder = "#{current_folder}/../../lib/" - libdatadog_lib_folder = "#{libdatadog_pkgconfig_folder}/../" - - Pathname.new(libdatadog_lib_folder).relative_path_from(Pathname.new(profiling_native_lib_folder)).to_s - end - - # In https://github.com/DataDog/dd-trace-rb/pull/3582 we got a report of a customer for which the native extension - # only got installed into the extensions folder. - # - # But then this fix was not enough to fully get them moving because then they started to see the issue from - # https://github.com/DataDog/dd-trace-rb/issues/2067 / https://github.com/DataDog/dd-trace-rb/pull/2125 : - # - # > Profiling was requested but is not supported, profiling disabled: There was an error loading the profiling - # > native extension due to 'RuntimeError Failure to load datadog_profiling_native_extension.3.2.2_x86_64-linux - # > due to libdatadog_profiling.so: cannot open shared object file: No such file or directory - # - # The problem is that when loading the native extension from the extensions directory, the relative rpath we add - # with the #libdatadog_folder_relative_to_native_lib_folder helper above is not correct, we need to add a relative - # rpath to the extensions directory. - # - # So how do we find the full path where the native extension is placed? - # * From https://github.com/ruby/ruby/blob/83f02d42e0a3c39661dc99c049ab9a70ff227d5b/lib/bundler/runtime.rb#L166 - # `extension_dirs = Dir["#{Gem.dir}/extensions/*/*/*"] + Dir["#{Gem.dir}/bundler/gems/extensions/*/*/*"]` - # we get that's in one of two fixed subdirectories of `Gem.dir` - # * From https://github.com/ruby/ruby/blob/83f02d42e0a3c39661dc99c049ab9a70ff227d5b/lib/rubygems/basic_specification.rb#L111-L115 - # we get the structure of the subdirectory (platform/extension_api_version/gem_and_version) - # - # Thus, `Gem.dir` of `/var/app/current/vendor/bundle/ruby/3.2.0` becomes (for instance) - # `/var/app/current/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/datadog-2.0.0/` or - # `/var/app/current/vendor/bundle/ruby/3.2.0/bundler/gems/extensions/x86_64-linux/3.2.0/datadog-2.0.0/` - # - # We then compute the relative path between these folders and the libdatadog folder, and use that as a relative path. - def self.libdatadog_folder_relative_to_ruby_extensions_folders( - gem_dir: Gem.dir, - libdatadog_pkgconfig_folder: Libdatadog.pkgconfig_folder - ) - return unless libdatadog_pkgconfig_folder - - # For the purposes of calculating a folder relative to the other, we don't actually NEED to fill in the - # platform, extension_api_version and gem version. We're basically just after how many folders it is deep from - # the Gem.dir. - expected_ruby_extensions_folders = [ - "#{gem_dir}/extensions/platform/extension_api_version/datadog_version/", - "#{gem_dir}/bundler/gems/extensions/platform/extension_api_version/datadog_version/", - ] - libdatadog_lib_folder = "#{libdatadog_pkgconfig_folder}/../" - - expected_ruby_extensions_folders.map do |folder| - Pathname.new(libdatadog_lib_folder).relative_path_from(Pathname.new(folder)).to_s - end + ENV[ENV_FAIL_INSTALL_IF_MISSING_EXTENSION].to_s.strip.downcase == "true" end # Used to check if profiler is supported, including user-visible clear messages explaining why their # system may not be supported. module Supported private_class_method def self.explain_issue(*reason, suggested:) - { reason: reason, suggested: suggested } + {reason: reason, suggested: suggested} end def self.supported? @@ -143,16 +46,16 @@ def self.failure_banner_for(reason:, suggested:, fail_install:) outcome = if fail_install [ - 'Failing installation immediately because the ', + "Failing installation immediately because the ", "`#{ENV_FAIL_INSTALL_IF_MISSING_EXTENSION}` environment variable is set", - 'to `true`.', - 'When contacting support, please include the file that is shown ', - 'below.', + "to `true`.", + "When contacting support, please include the file that is shown ", + "below.", ] else [ - 'The Datadog Continuous Profiler will not be available,', - 'but all other datadog features will work fine!', + "The Datadog Continuous Profiler will not be available,", + "but all other datadog features will work fine!", ] end @@ -170,22 +73,14 @@ def self.failure_banner_for(reason:, suggested:, fail_install:) # This will be saved in a file to later be presented while operating the gem def self.render_skipped_reason_file(reason:, suggested:) - [*reason, *suggested].join(' ') - end - - # mkmf sets $PKGCONFIG after the `pkg_config` gets used in extconf.rb. When `pkg_config` is unsuccessful, we use - # this helper to decide if we can show more specific error message vs a generic "something went wrong". - def self.pkg_config_missing?(command: $PKGCONFIG) # rubocop:disable Style/GlobalVars - pkg_config_available = command && xsystem("#{command} --version") - - pkg_config_available != true + [*reason, *suggested].join(" ") end CONTACT_SUPPORT = [ - 'For help solving this issue, please contact Datadog support at', - '.', - 'You can also check out the Continuous Profiler troubleshooting page at', - '.' + "For help solving this issue, please contact Datadog support at", + ".", + "You can also check out the Continuous Profiler troubleshooting page at", + "." ].freeze GET_IN_TOUCH = [ @@ -193,83 +88,83 @@ def self.pkg_config_missing?(command: $PKGCONFIG) # rubocop:disable Style/Global ].freeze UPGRADE_RUBY = [ - 'Upgrade to a modern Ruby to enable profiling for your app.' + "Upgrade to a modern Ruby to enable profiling for your app." ].freeze # Validation for this check is done in extconf.rb because it relies on mkmf FAILED_TO_CONFIGURE_LIBDATADOG = explain_issue( - 'there was a problem in setting up the `libdatadog` dependency.', + "there was a problem in setting up the `libdatadog` dependency.", suggested: CONTACT_SUPPORT, ) # Validation for this check is done in extconf.rb because it relies on mkmf COMPILATION_BROKEN = explain_issue( - 'compilation of the Ruby VM just-in-time header failed.', - 'Your C compiler or Ruby VM just-in-time compiler seem to be broken.', + "compilation of the Ruby VM just-in-time header failed.", + "Your C compiler or Ruby VM just-in-time compiler seem to be broken.", suggested: CONTACT_SUPPORT, ) # Validation for this check is done in extconf.rb because it relies on mkmf PKG_CONFIG_IS_MISSING = explain_issue( # ----------------------------------------------------------------------------+ - 'the `pkg-config` system tool is missing.', - 'This issue can usually be fixed by installing one of the following:', - 'the `pkg-config` package on Homebrew and Debian/Ubuntu-based Linux;', - 'the `pkgconf` package on Arch and Alpine-based Linux;', - 'the `pkgconf-pkg-config` package on Fedora/Red Hat-based Linux.', - '(Tip: When fixing this, ensure `pkg-config` is installed **before**', - 'running `bundle install`, and remember to clear any installed gems cache).', + "the `pkg-config` system tool is missing.", + "This issue can usually be fixed by installing one of the following:", + "the `pkg-config` package on Homebrew and Debian/Ubuntu-based Linux;", + "the `pkgconf` package on Arch and Alpine-based Linux;", + "the `pkgconf-pkg-config` package on Fedora/Red Hat-based Linux.", + "(Tip: When fixing this, ensure `pkg-config` is installed **before**", + "running `bundle install`, and remember to clear any installed gems cache).", suggested: CONTACT_SUPPORT, ) # Validation for this check is done in extconf.rb because it relies on mkmf COMPILER_ATOMIC_MISSING = explain_issue( - 'your C compiler is missing support for the header.', - 'This issue can usually be fixed by upgrading to a later version of your', - 'operating system image or compiler.', + "your C compiler is missing support for the header.", + "This issue can usually be fixed by upgrading to a later version of your", + "operating system image or compiler.", suggested: CONTACT_SUPPORT, ) private_class_method def self.disabled_via_env? report_disabled = [ - 'If you needed to use this, please tell us why on', - ' so we can fix it :)', + "If you needed to use this, please tell us why on", + " so we can fix it :)", ].freeze disabled_via_env = explain_issue( - 'the `DD_PROFILING_NO_EXTENSION` environment variable is/was set to', - '`true` during installation.', + "the `DD_PROFILING_NO_EXTENSION` environment variable is/was set to", + "`true` during installation.", suggested: report_disabled, ) - return unless ENV[ENV_NO_EXTENSION].to_s.strip.downcase == 'true' + return unless ENV[ENV_NO_EXTENSION].to_s.strip.downcase == "true" disabled_via_env end private_class_method def self.on_jruby? jruby_not_supported = explain_issue( - 'JRuby is not supported by the Datadog Continuous Profiler.', + "JRuby is not supported by the Datadog Continuous Profiler.", suggested: GET_IN_TOUCH, ) - jruby_not_supported if RUBY_ENGINE == 'jruby' + jruby_not_supported if RUBY_ENGINE == "jruby" end private_class_method def self.on_truffleruby? truffleruby_not_supported = explain_issue( - 'TruffleRuby is not supported by the datadog gem.', + "TruffleRuby is not supported by the datadog gem.", suggested: GET_IN_TOUCH, ) - truffleruby_not_supported if RUBY_ENGINE == 'truffleruby' + truffleruby_not_supported if RUBY_ENGINE == "truffleruby" end # See https://docs.datadoghq.com/tracing/setup_overview/setup/ruby/#microsoft-windows-support for current # state of Windows support in the datadog gem. private_class_method def self.on_windows? windows_not_supported = explain_issue( - 'Microsoft Windows is not supported by the Datadog Continuous Profiler.', + "Microsoft Windows is not supported by the Datadog Continuous Profiler.", suggested: GET_IN_TOUCH, ) @@ -278,72 +173,66 @@ def self.pkg_config_missing?(command: $PKGCONFIG) # rubocop:disable Style/Global private_class_method def self.on_macos? macos_not_supported = explain_issue( - 'macOS is currently not supported by the Datadog Continuous Profiler.', + "macOS is currently not supported by the Datadog Continuous Profiler.", suggested: GET_IN_TOUCH, ) # For development only; not supported otherwise - macos_testing_override = ENV['DD_PROFILING_MACOS_TESTING'] == 'true' + macos_testing_override = ENV["DD_PROFILING_MACOS_TESTING"] == "true" - macos_not_supported if RUBY_PLATFORM.include?('darwin') && !macos_testing_override + macos_not_supported if RUBY_PLATFORM.include?("darwin") && !macos_testing_override end private_class_method def self.on_unknown_os? unknown_os_not_supported = explain_issue( - 'your operating system is not supported by the Datadog Continuous Profiler.', + "your operating system is not supported by the Datadog Continuous Profiler.", suggested: GET_IN_TOUCH, ) - unknown_os_not_supported unless RUBY_PLATFORM.include?('darwin') || RUBY_PLATFORM.include?('linux') + unknown_os_not_supported unless RUBY_PLATFORM.include?("darwin") || RUBY_PLATFORM.include?("linux") end private_class_method def self.on_unsupported_cpu_arch? architecture_not_supported = explain_issue( - 'your CPU architecture is not supported by the Datadog Continuous Profiler.', + "your CPU architecture is not supported by the Datadog Continuous Profiler.", suggested: GET_IN_TOUCH, ) - architecture_not_supported unless RUBY_PLATFORM.start_with?('x86_64', 'aarch64', 'arm64') + architecture_not_supported unless RUBY_PLATFORM.start_with?("x86_64", "aarch64", "arm64") end # On some Rubies, we require the mjit header to be present. If Ruby was installed without MJIT support, we also skip # building the extension. private_class_method def self.expected_to_use_mjit_but_mjit_is_disabled? ruby_without_mjit = explain_issue( - 'your Ruby has been compiled without JIT support (--disable-jit-support).', - 'The profiling native extension requires a Ruby compiled with JIT support,', - 'even if the JIT is not in use by the application itself.', + "your Ruby has been compiled without JIT support (--disable-jit-support).", + "The profiling native extension requires a Ruby compiled with JIT support,", + "even if the JIT is not in use by the application itself.", suggested: CONTACT_SUPPORT, ) - ruby_without_mjit if CAN_USE_MJIT_HEADER && RbConfig::CONFIG['MJIT_SUPPORT'] != 'yes' + ruby_without_mjit if CAN_USE_MJIT_HEADER && RbConfig::CONFIG["MJIT_SUPPORT"] != "yes" end private_class_method def self.libdatadog_not_available? - begin - gem 'libdatadog', LIBDATADOG_VERSION - require 'libdatadog' - nil - # rubocop:disable Lint/RescueException - rescue Exception => e + Datadog::LibdatadogExtconfHelpers.try_loading_libdatadog do |exception| explain_issue( - 'there was an exception during loading of the `libdatadog` gem:', - e.class.name, - *e.message.split("\n"), - *Array(e.backtrace), - '.', + "there was an exception during loading of the `libdatadog` gem:", + exception.class.name, + *exception.message.split("\n"), + *Array(exception.backtrace), + ".", suggested: CONTACT_SUPPORT, ) end - # rubocop:enable Lint/RescueException end private_class_method def self.libdatadog_not_usable? no_binaries_for_current_platform = explain_issue( - 'the `libdatadog` gem installed on your system is missing binaries for your', - 'platform variant.', + "the `libdatadog` gem installed on your system is missing binaries for your", + "platform variant.", "(Your platform: `#{Libdatadog.current_platform}`)", - '(Available binaries:', - "`#{Libdatadog.available_binaries.join('`, `')}`)", + "(Available binaries:", + "`#{Libdatadog.available_binaries.join("`, `")}`)", suggested: CONTACT_SUPPORT, ) diff --git a/ext/datadog_profiling_native_extension/private_vm_api_access.c b/ext/datadog_profiling_native_extension/private_vm_api_access.c index 52783619681..af78a027d30 100644 --- a/ext/datadog_profiling_native_extension/private_vm_api_access.c +++ b/ext/datadog_profiling_native_extension/private_vm_api_access.c @@ -13,7 +13,7 @@ #include RUBY_MJIT_HEADER #else // The MJIT header was introduced on 2.6 and removed on 3.3; for other Rubies we rely on - // the debase-ruby_core_source gem to get access to private VM headers. + // the datadog-ruby_core_source gem to get access to private VM headers. // We can't do anything about warnings in VM headers, so we just use this technique to suppress them. // See https://nelkinda.com/blog/suppress-warnings-in-gcc-and-clang/#d11e364 for details. @@ -182,7 +182,7 @@ uint64_t native_thread_id_for(VALUE thread) { #if !defined(NO_THREAD_TID) && defined(RB_THREAD_T_HAS_NATIVE_ID) #ifndef NO_RB_NATIVE_THREAD struct rb_native_thread* native_thread = thread_struct_from_object(thread)->nt; - if (native_thread == NULL) rb_raise(rb_eRuntimeError, "BUG: rb_native_thread* is null. Is this Ruby running with RUBY_MN_THREADS=1?"); + if (native_thread == NULL) return 0; return native_thread->tid; #else return thread_struct_from_object(thread)->tid; @@ -311,7 +311,7 @@ VALUE thread_name_for(VALUE thread) { // with diagnostic stuff. See https://nelkinda.com/blog/suppress-warnings-in-gcc-and-clang/#d11e364 for details. #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" -inline static int +static inline int calc_pos(const rb_iseq_t *iseq, const VALUE *pc, int *lineno, int *node_id) { VM_ASSERT(iseq); @@ -364,7 +364,7 @@ calc_pos(const rb_iseq_t *iseq, const VALUE *pc, int *lineno, int *node_id) // Copyright (C) 1993-2012 Yukihiro Matsumoto // to support our custom rb_profile_frames (see below) // Modifications: None -inline static int +static inline int calc_lineno(const rb_iseq_t *iseq, const VALUE *pc) { int lineno; @@ -376,8 +376,8 @@ calc_lineno(const rb_iseq_t *iseq, const VALUE *pc) // Copyright (C) 1993-2012 Yukihiro Matsumoto // Modifications: // * Renamed rb_profile_frames => ddtrace_rb_profile_frames -// * Add thread argument -// * Add is_ruby_frame argument +// * Add thread argument (this is now upstream, actually!) +// * Add frame_flags.is_ruby_frame argument // * Removed `if (lines)` tests -- require/assume that like `buff`, `lines` is always specified // * Skip dummy frame that shows up in main thread // * Add `end_cfp == NULL` and `end_cfp <= cfp` safety checks. These are used in a bunch of places in @@ -392,6 +392,9 @@ calc_lineno(const rb_iseq_t *iseq, const VALUE *pc) // was called from. // * Imported fix from https://github.com/ruby/ruby/pull/7116 to avoid sampling threads that are still being created // * Imported fix from https://github.com/ruby/ruby/pull/8415 to avoid potential crash when using YJIT. +// * Add frame_flags.same_frame and logic to skip redoing work if the buffer already contains the same data we're collecting +// * Skipped use of rb_callable_method_entry_t (cme) for Ruby frames as it doesn't impact us. +// * Imported fix from https://github.com/ruby/ruby/pull/8280 to keep us closer to upstream // // What is rb_profile_frames? // `rb_profile_frames` is a Ruby VM debug API added for use by profilers for sampling the stack trace of a Ruby thread. @@ -421,8 +424,7 @@ calc_lineno(const rb_iseq_t *iseq, const VALUE *pc) // and friends). We've found quite a few situations where the data from rb_profile_frames and the reference APIs // disagree, and quite a few of them seem oversights/bugs (speculation from my part) rather than deliberate // decisions. -int ddtrace_rb_profile_frames(VALUE thread, int start, int limit, VALUE *buff, int *lines, bool* is_ruby_frame) -{ +int ddtrace_rb_profile_frames(VALUE thread, int start, int limit, frame_info *stack_buffer) { int i; // Modified from upstream: Instead of using `GET_EC` to collect info from the current thread, // support sampling any thread (including the current) passed as an argument @@ -466,7 +468,7 @@ int ddtrace_rb_profile_frames(VALUE thread, int start, int limit, VALUE *buff, i // See comment on `record_placeholder_stack_in_native_code` for a full explanation of what this means (and why we don't just return 0) if (end_cfp <= cfp) return PLACEHOLDER_STACK_IN_NATIVE_CODE; - for (i=0; iiseq && !cfp->pc) { // Fix: Do nothing -- this frame should not be used // @@ -479,164 +481,88 @@ int ddtrace_rb_profile_frames(VALUE thread, int start, int limit, VALUE *buff, i continue; } - /* record frame info */ - cme = rb_vm_frame_method_entry(cfp); + stack_buffer[i].same_frame = + stack_buffer[i].is_ruby_frame && + stack_buffer[i].as.ruby_frame.iseq == (VALUE) cfp->iseq && + stack_buffer[i].as.ruby_frame.caching_pc == cfp->pc; - if (cme && cme->def->type == VM_METHOD_TYPE_ISEQ && - // Fix: Do not use callable method entry when iseq is for an eval. - // TL;DR: This fix is needed for us to match the Ruby reference API information in the - // "when sampling an eval/instance eval inside an object" spec. - // - // Longer note: - // When a frame is a ruby frame (VM_FRAME_RUBYFRAME_P above), we can get information about it - // by introspecting both the callable method entry, as well as the iseq directly. - // Often they match... but sometimes they provide different info (as in the "iseq for an eval" situation - // here). - // If my reading of vm_backtrace.c is correct, the actual Ruby stack trace API **never** uses the - // callable method entry for Ruby frames, but only for VM_METHOD_TYPE_CFUNC (see `backtrace_each` method - // on that file). - // So... why does `rb_profile_frames` do something different? Is it a bug? Is it because it exposes - // more information than the Ruby stack frame API? - // As a final note, the `backtracie` gem (https://github.com/ivoanjo/backtracie) can be used to introspect - // the full metadata provided by both the callable method entry as well as the iseq, and is really useful - // to debug and learn more about these differences. - cfp->iseq->body->type != ISEQ_TYPE_EVAL) { - buff[i] = (VALUE)cme; - } - else { - buff[i] = (VALUE)cfp->iseq; + if (stack_buffer[i].same_frame) { // Nothing to do, buffer already contains this frame + i++; + continue; } + // dd-trace-rb NOTE: + // Upstream Ruby has code here to retrieve the rb_callable_method_entry_t (cme) and in some cases to use it + // instead of the iseq. + // In practice, they are usually the same; the difference is that when you have e.g. block, one gets you a + // reference to the block, and the other to the method containing the block. + // This would be important if we used `rb_profile_frame_label` and wanted the "block in foo" label instead + // of just "foo". But we're currently using `rb_profile_frame_base_label` which I believe is always the same + // between the rb_callable_method_entry_t and the iseq. Thus, to simplify a bit our logic and reduce a bit + // the overhead, we always use the iseq here. + // + // @ivoanjo: I've left the upstream Ruby code commented out below for reference, so it's more obvious that + // we're diverging, and we can easily compare and experiment with the upstream version in the future. + // + // cme = rb_vm_frame_method_entry(cfp); + + // if (cme && cme->def->type == VM_METHOD_TYPE_ISEQ && + // // Fix: Do not use callable method entry when iseq is for an eval. + // // TL;DR: This fix is needed for us to match the Ruby reference API information in the + // // "when sampling an eval/instance eval inside an object" spec. + // cfp->iseq->body->type != ISEQ_TYPE_EVAL) { + // buff[i] = (VALUE)cme; + // } + // else { + stack_buffer[i].as.ruby_frame.iseq = (VALUE)cfp->iseq; + stack_buffer[i].as.ruby_frame.caching_pc = (void *) cfp->pc; + // } + // The topmost frame may not have an updated PC because the JIT // may not have set one. The JIT compiler will update the PC // before entering a new function (so that `caller` will work), // so only the topmost frame could possibly have an out of date PC #ifndef NO_JIT_RETURN if (cfp == top && cfp->jit_return) { - lines[i] = 0; + stack_buffer[i].as.ruby_frame.line = 0; } else { - lines[i] = calc_lineno(cfp->iseq, cfp->pc); + stack_buffer[i].as.ruby_frame.line = calc_lineno(cfp->iseq, cfp->pc); } #else // Ruby < 3.1 - lines[i] = calc_lineno(cfp->iseq, cfp->pc); + stack_buffer[i].as.ruby_frame.line = calc_lineno(cfp->iseq, cfp->pc); #endif - is_ruby_frame[i] = true; + stack_buffer[i].is_ruby_frame = true; i++; } else { cme = rb_vm_frame_method_entry(cfp); if (cme && cme->def->type == VM_METHOD_TYPE_CFUNC) { - buff[i] = (VALUE)cme; - lines[i] = 0; - is_ruby_frame[i] = false; + if (start > 0) { + start--; + continue; + } + + stack_buffer[i].same_frame = + !stack_buffer[i].is_ruby_frame && + stack_buffer[i].as.native_frame.caching_cme == (VALUE) cme; + + if (stack_buffer[i].same_frame) { // Nothing to do, buffer already contains this frame + i++; + continue; + } + + stack_buffer[i].as.native_frame.caching_cme = (VALUE)cme; + stack_buffer[i].as.native_frame.method_id = cme->def->original_id; + stack_buffer[i].is_ruby_frame = false; i++; } } - cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp); } return i; } -#ifdef USE_BACKPORTED_RB_PROFILE_FRAME_METHOD_NAME - -// Taken from upstream vm_backtrace.c at commit 5f10bd634fb6ae8f74a4ea730176233b0ca96954 (March 2022, Ruby 3.2 trunk) -// Copyright (C) 1993-2012 Yukihiro Matsumoto -// to support our custom rb_profile_frame_method_name (see below) -// Modifications: None -static VALUE -id2str(ID id) -{ - VALUE str = rb_id2str(id); - if (!str) return Qnil; - return str; -} -#define rb_id2str(id) id2str(id) - -// Taken from upstream vm_backtrace.c at commit 5f10bd634fb6ae8f74a4ea730176233b0ca96954 (March 2022, Ruby 3.2 trunk) -// Copyright (C) 1993-2012 Yukihiro Matsumoto -// to support our custom rb_profile_frame_method_name (see below) -// Modifications: None -static const rb_iseq_t * -frame2iseq(VALUE frame) -{ - if (NIL_P(frame)) return NULL; - - if (RB_TYPE_P(frame, T_IMEMO)) { - switch (imemo_type(frame)) { - case imemo_iseq: - return (const rb_iseq_t *)frame; - case imemo_ment: - { - const rb_callable_method_entry_t *cme = (rb_callable_method_entry_t *)frame; - switch (cme->def->type) { - case VM_METHOD_TYPE_ISEQ: - return cme->def->body.iseq.iseqptr; - default: - return NULL; - } - } - default: - break; - } - } - rb_bug("frame2iseq: unreachable"); -} - -// Taken from upstream vm_backtrace.c at commit 5f10bd634fb6ae8f74a4ea730176233b0ca96954 (March 2022, Ruby 3.2 trunk) -// Copyright (C) 1993-2012 Yukihiro Matsumoto -// to support our custom rb_profile_frame_method_name (see below) -// Modifications: None -static const rb_callable_method_entry_t * -cframe(VALUE frame) -{ - if (NIL_P(frame)) return NULL; - - if (RB_TYPE_P(frame, T_IMEMO)) { - switch (imemo_type(frame)) { - case imemo_ment: - { - const rb_callable_method_entry_t *cme = (rb_callable_method_entry_t *)frame; - switch (cme->def->type) { - case VM_METHOD_TYPE_CFUNC: - return cme; - default: - return NULL; - } - } - default: - return NULL; - } - } - - return NULL; -} - -// Taken from upstream vm_backtrace.c at commit 5f10bd634fb6ae8f74a4ea730176233b0ca96954 (March 2022, Ruby 3.2 trunk) -// Copyright (C) 1993-2012 Yukihiro Matsumoto -// -// Ruby 3.0 finally added support for showing CFUNC frames (frames for methods written using native code) -// in stack traces gathered via `rb_profile_frames` (https://github.com/ruby/ruby/pull/3299). -// To access this information on older Rubies, beyond using our custom `ddtrace_rb_profile_frames` above, we also need -// to backport the Ruby 3.0+ version of `rb_profile_frame_method_name`. -// -// Modifications: -// * Renamed rb_profile_frame_method_name => ddtrace_rb_profile_frame_method_name -VALUE -ddtrace_rb_profile_frame_method_name(VALUE frame) -{ - const rb_callable_method_entry_t *cme = cframe(frame); - if (cme) { - ID mid = cme->def->original_id; - return id2str(mid); - } - const rb_iseq_t *iseq = frame2iseq(frame); - return iseq ? rb_iseq_method_name(iseq) : Qnil; -} - -#endif // USE_BACKPORTED_RB_PROFILE_FRAME_METHOD_NAME - // Support code for older Rubies that cannot use the MJIT header #ifndef RUBY_MJIT_HEADER @@ -829,3 +755,54 @@ static inline int ddtrace_imemo_type(VALUE imemo) { return GET_VM()->objspace; } #endif + +#ifdef USE_GVL_PROFILING_3_2_WORKAROUNDS // Ruby 3.2 + #include "gvl_profiling_helper.h" + + gvl_profiling_thread thread_from_thread_object(VALUE thread) { + return (gvl_profiling_thread) {.thread = thread_struct_from_object(thread)}; + } + + // Hack: In Ruby 3.3+ we attach gvl profiling state to Ruby threads using the + // rb_internal_thread_specific_* APIs. These APIs did not exist on Ruby 3.2. On Ruby 3.2 we instead store the + // needed data inside the `rb_thread_t` structure, specifically in `stat_insn_usage` as a Ruby FIXNUM. + // + // Why `stat_insn_usage`? We needed some per-thread storage, and while looking at the Ruby VM sources I noticed + // that `stat_insn_usage` has been in `rb_thread_t` for a long time, but is not used anywhere in the VM + // code. There's a comment attached to it "/* statistics data for profiler */" but other than marking this + // field for GC, I could not find any place in the VM commit history or on GitHub where this has ever been used. + // + // Thus, since this hack is only for 3.2, which presumably will never see this field either removed or used + // during its remaining maintenance release period we... kinda take it for our own usage. It's ugly, I know... + intptr_t gvl_profiling_state_get(gvl_profiling_thread thread) { + if (thread.thread == NULL) return 0; + + VALUE current_value = ((rb_thread_t *)thread.thread)->stat_insn_usage; + intptr_t result = current_value == Qnil ? 0 : FIX2LONG(current_value); + return result; + } + + void gvl_profiling_state_set(gvl_profiling_thread thread, intptr_t value) { + if (thread.thread == NULL) return; + ((rb_thread_t *)thread.thread)->stat_insn_usage = LONG2FIX(value); + } + + // Because Ruby 3.2 does not give us the current thread when calling the RUBY_INTERNAL_THREAD_EVENT_READY and + // RUBY_INTERNAL_THREAD_EVENT_RESUMED APIs, we need to figure out this info ourselves. + // + // Specifically, this method was created to be called from a RUBY_INTERNAL_THREAD_EVENT_RESUMED callback -- + // when it's triggered, we know the thread the code gets executed on is holding the GVL, so we use this + // opportunity to initialize our thread-local value. + gvl_profiling_thread gvl_profiling_state_maybe_initialize(void) { + gvl_profiling_thread current_thread = gvl_waiting_tls; + + if (current_thread.thread == NULL) { + // threads.sched.running is the thread currently holding the GVL, which when this gets executed is the + // current thread! + current_thread = (gvl_profiling_thread) {.thread = (void *) rb_current_ractor()->threads.sched.running}; + gvl_waiting_tls = current_thread; + } + + return current_thread; + } +#endif diff --git a/ext/datadog_profiling_native_extension/private_vm_api_access.h b/ext/datadog_profiling_native_extension/private_vm_api_access.h index 487ed84b69e..c40992274cb 100644 --- a/ext/datadog_profiling_native_extension/private_vm_api_access.h +++ b/ext/datadog_profiling_native_extension/private_vm_api_access.h @@ -18,6 +18,22 @@ typedef struct { rb_nativethread_id_t owner; } current_gvl_owner; +typedef struct frame_info { + union { + struct { + VALUE iseq; + void *caching_pc; // For caching only + int line; + } ruby_frame; + struct { + VALUE caching_cme; // For caching only + ID method_id; + } native_frame; + } as; + bool is_ruby_frame : 1; + bool same_frame : 1; +} frame_info; + rb_nativethread_id_t pthread_id_for(VALUE thread); bool is_current_thread_holding_the_gvl(void); current_gvl_owner gvl_owner(void); @@ -27,20 +43,10 @@ void ddtrace_thread_list(VALUE result_array); bool is_thread_alive(VALUE thread); VALUE thread_name_for(VALUE thread); -int ddtrace_rb_profile_frames(VALUE thread, int start, int limit, VALUE *buff, int *lines, bool* is_ruby_frame); +int ddtrace_rb_profile_frames(VALUE thread, int start, int limit, frame_info *stack_buffer); // Returns true if the current thread belongs to the main Ractor or if Ruby has no Ractor support bool ddtrace_rb_ractor_main_p(void); -// Ruby 3.0 finally added support for showing CFUNC frames (frames for methods written using native code) -// in stack traces gathered via `rb_profile_frames` (https://github.com/ruby/ruby/pull/3299). -// To access this information on older Rubies, beyond using our custom `ddtrace_rb_profile_frames` above, we also need -// to backport the Ruby 3.0+ version of `rb_profile_frame_method_name`. -#ifdef USE_BACKPORTED_RB_PROFILE_FRAME_METHOD_NAME - VALUE ddtrace_rb_profile_frame_method_name(VALUE frame); -#else // Ruby > 3.0, just use the stock functionality - #define ddtrace_rb_profile_frame_method_name rb_profile_frame_method_name -#endif - // See comment on `record_placeholder_stack_in_native_code` for a full explanation of what this means (and why we don't just return 0) #define PLACEHOLDER_STACK_IN_NATIVE_CODE -1 @@ -59,3 +65,6 @@ const char *imemo_kind(VALUE imemo); #ifdef NO_POSTPONED_TRIGGER void *objspace_ptr_for_gc_finalize_deferred_workaround(void); #endif + +#define ENFORCE_THREAD(value) \ + { if (RB_UNLIKELY(!rb_typeddata_is_kind_of(value, RTYPEDDATA_TYPE(rb_thread_current())))) raise_unexpected_type(value, ADD_QUOTES(value), "Thread", __FILE__, __LINE__, __func__); } diff --git a/ext/datadog_profiling_native_extension/profiling.c b/ext/datadog_profiling_native_extension/profiling.c index f256937722b..96637cd110c 100644 --- a/ext/datadog_profiling_native_extension/profiling.c +++ b/ext/datadog_profiling_native_extension/profiling.c @@ -19,7 +19,6 @@ void collectors_dynamic_sampling_rate_init(VALUE profiling_module); void collectors_idle_sampling_helper_init(VALUE profiling_module); void collectors_stack_init(VALUE profiling_module); void collectors_thread_context_init(VALUE profiling_module); -void crashtracker_init(VALUE profiling_module); void http_transport_init(VALUE profiling_module); void stack_recorder_init(VALUE profiling_module); @@ -54,7 +53,6 @@ void DDTRACE_EXPORT Init_datadog_profiling_native_extension(void) { collectors_idle_sampling_helper_init(profiling_module); collectors_stack_init(profiling_module); collectors_thread_context_init(profiling_module); - crashtracker_init(profiling_module); http_transport_init(profiling_module); stack_recorder_init(profiling_module); @@ -255,7 +253,7 @@ static VALUE _native_enforce_success(DDTRACE_UNUSED VALUE _self, VALUE syserr_er static void *trigger_enforce_success(void *trigger_args) { intptr_t syserr_errno = (intptr_t) trigger_args; - ENFORCE_SUCCESS_NO_GVL(syserr_errno); + ENFORCE_SUCCESS_NO_GVL((int) syserr_errno); return NULL; } diff --git a/ext/datadog_profiling_native_extension/ruby_helpers.c b/ext/datadog_profiling_native_extension/ruby_helpers.c index c104cd8c0d5..084dadf9e67 100644 --- a/ext/datadog_profiling_native_extension/ruby_helpers.c +++ b/ext/datadog_profiling_native_extension/ruby_helpers.c @@ -20,29 +20,6 @@ void ruby_helpers_init(void) { to_s_id = rb_intern("to_s"); } -void raise_unexpected_type( - VALUE value, - const char *value_name, - const char *type_name, - const char *file, - int line, - const char* function_name -) { - rb_exc_raise( - rb_exc_new_str( - rb_eTypeError, - rb_sprintf("wrong argument %"PRIsVALUE" for '%s' (expected a %s) at %s:%d:in `%s'", - rb_inspect(value), - value_name, - type_name, - file, - line, - function_name - ) - ) - ); -} - #define MAX_RAISE_MESSAGE_SIZE 256 struct raise_arguments { @@ -242,26 +219,19 @@ static bool ruby_is_obj_with_class(VALUE obj) { return false; } -VALUE ruby_safe_inspect(VALUE obj) { - if (!ruby_is_obj_with_class(obj)) { - return rb_str_new_cstr("(Not an object)"); - } - - if (rb_respond_to(obj, inspect_id)) { - return rb_sprintf("%+"PRIsVALUE, obj); - } else if (rb_respond_to(obj, to_s_id)) { - return rb_sprintf("%"PRIsVALUE, obj); - } else { - return rb_str_new_cstr("(Not inspectable)"); - } -} +// These two functions are not present in the VM headers, but are public symbols that can be invoked. +int rb_objspace_internal_object_p(VALUE obj); +const char *rb_obj_info(VALUE obj); -VALUE ddtrace_version(void) { - VALUE ddtrace_module = rb_const_get(rb_cObject, rb_intern("Datadog")); - ENFORCE_TYPE(ddtrace_module, T_MODULE); - VALUE version_module = rb_const_get(ddtrace_module, rb_intern("VERSION")); - ENFORCE_TYPE(version_module, T_MODULE); - VALUE version_string = rb_const_get(version_module, rb_intern("STRING")); - ENFORCE_TYPE(version_string, T_STRING); - return version_string; +VALUE ruby_safe_inspect(VALUE obj) { + if (!ruby_is_obj_with_class(obj)) return rb_str_new_cstr("(Not an object)"); + if (rb_objspace_internal_object_p(obj)) return rb_sprintf("(VM Internal, %s)", rb_obj_info(obj)); + // @ivoanjo: I saw crashes on Ruby 3.1.4 when trying to #inspect matchdata objects. I'm not entirely sure why this + // is needed, but since we only use this method for debug purposes I put in this alternative and decided not to + // dig deeper. + if (rb_type(obj) == RUBY_T_MATCH) return rb_sprintf("(MatchData, %s)", rb_obj_info(obj)); + if (rb_respond_to(obj, inspect_id)) return rb_sprintf("%+"PRIsVALUE, obj); + if (rb_respond_to(obj, to_s_id)) return rb_sprintf("%"PRIsVALUE, obj); + + return rb_str_new_cstr("(Not inspectable)"); } diff --git a/ext/datadog_profiling_native_extension/ruby_helpers.h b/ext/datadog_profiling_native_extension/ruby_helpers.h index 892362fff2e..ee609f11b86 100644 --- a/ext/datadog_profiling_native_extension/ruby_helpers.h +++ b/ext/datadog_profiling_native_extension/ruby_helpers.h @@ -1,9 +1,7 @@ #pragma once -#include #include - -#include "helpers.h" +#include "datadog_ruby_common.h" // Initialize internal data needed by some ruby helpers. Should be called during start, before any actual // usage of ruby helpers. @@ -39,27 +37,6 @@ static inline int check_if_pending_exception(void) { return pending_exception; } -#define ADD_QUOTES_HELPER(x) #x -#define ADD_QUOTES(x) ADD_QUOTES_HELPER(x) - -// Ruby has a Check_Type(value, type) that is roughly equivalent to this BUT Ruby's version is rather cryptic when it fails -// e.g. "wrong argument type nil (expected String)". This is a replacement that prints more information to help debugging. -#define ENFORCE_TYPE(value, type) \ - { if (RB_UNLIKELY(!RB_TYPE_P(value, type))) raise_unexpected_type(value, ADD_QUOTES(value), ADD_QUOTES(type), __FILE__, __LINE__, __func__); } - -#define ENFORCE_BOOLEAN(value) \ - { if (RB_UNLIKELY(value != Qtrue && value != Qfalse)) raise_unexpected_type(value, ADD_QUOTES(value), "true or false", __FILE__, __LINE__, __func__); } - -// Called by ENFORCE_TYPE; should not be used directly -NORETURN(void raise_unexpected_type( - VALUE value, - const char *value_name, - const char *type_name, - const char *file, - int line, - const char *function_name -)); - #define VALUE_COUNT(array) (sizeof(array) / sizeof(VALUE)) NORETURN( @@ -113,5 +90,3 @@ size_t ruby_obj_memsize_of(VALUE obj); // return a string with the result of that call. Elsif the object responds to // 'to_s', return a string with the result of that call. Otherwise, return Qnil. VALUE ruby_safe_inspect(VALUE obj); - -VALUE ddtrace_version(void); diff --git a/ext/datadog_profiling_native_extension/setup_signal_handler.h b/ext/datadog_profiling_native_extension/setup_signal_handler.h index 7b73b96b07a..3c969986c4d 100644 --- a/ext/datadog_profiling_native_extension/setup_signal_handler.h +++ b/ext/datadog_profiling_native_extension/setup_signal_handler.h @@ -1,6 +1,7 @@ #pragma once #include +#include "datadog_ruby_common.h" void empty_signal_handler(DDTRACE_UNUSED int _signal, DDTRACE_UNUSED siginfo_t *_info, DDTRACE_UNUSED void *_ucontext); void install_sigprof_signal_handler(void (*signal_handler_function)(int, siginfo_t *, void *), const char *handler_pretty_name); diff --git a/ext/datadog_profiling_native_extension/stack_recorder.c b/ext/datadog_profiling_native_extension/stack_recorder.c index 875d05bb980..31165ba8b3b 100644 --- a/ext/datadog_profiling_native_extension/stack_recorder.c +++ b/ext/datadog_profiling_native_extension/stack_recorder.c @@ -187,6 +187,7 @@ typedef struct profile_slot { struct stack_recorder_state { // Heap recorder instance heap_recorder *heap_recorder; + bool heap_clean_after_gc_enabled; pthread_mutex_t mutex_slot_one; profile_slot profile_slot_one; @@ -236,16 +237,7 @@ static VALUE _native_new(VALUE klass); static void initialize_slot_concurrency_control(struct stack_recorder_state *state); static void initialize_profiles(struct stack_recorder_state *state, ddog_prof_Slice_ValueType sample_types); static void stack_recorder_typed_data_free(void *data); -static VALUE _native_initialize( - DDTRACE_UNUSED VALUE _self, - VALUE recorder_instance, - VALUE cpu_time_enabled, - VALUE alloc_samples_enabled, - VALUE heap_samples_enabled, - VALUE heap_size_enabled, - VALUE heap_sample_every, - VALUE timeline_enabled -); +static VALUE _native_initialize(int argc, VALUE *argv, DDTRACE_UNUSED VALUE _self); static VALUE _native_serialize(VALUE self, VALUE recorder_instance); static VALUE ruby_time_from(ddog_Timespec ddprof_time); static void *call_serialize_without_gvl(void *call_args); @@ -270,7 +262,9 @@ static VALUE _native_gc_force_recycle(DDTRACE_UNUSED VALUE _self, VALUE obj); static VALUE _native_has_seen_id_flag(DDTRACE_UNUSED VALUE _self, VALUE obj); static VALUE _native_stats(DDTRACE_UNUSED VALUE self, VALUE instance); static VALUE build_profile_stats(profile_slot *slot, long serialization_time_ns, long heap_iteration_prep_time_ns, long heap_profile_build_time_ns); - +static VALUE _native_is_object_recorded(DDTRACE_UNUSED VALUE _self, VALUE recorder_instance, VALUE object_id); +static VALUE _native_heap_recorder_reset_last_update(DDTRACE_UNUSED VALUE _self, VALUE recorder_instance); +static VALUE _native_recorder_after_gc_step(DDTRACE_UNUSED VALUE _self, VALUE recorder_instance); void stack_recorder_init(VALUE profiling_module) { VALUE stack_recorder_class = rb_define_class_under(profiling_module, "StackRecorder", rb_cObject); @@ -287,7 +281,7 @@ void stack_recorder_init(VALUE profiling_module) { // https://bugs.ruby-lang.org/issues/18007 for a discussion around this. rb_define_alloc_func(stack_recorder_class, _native_new); - rb_define_singleton_method(stack_recorder_class, "_native_initialize", _native_initialize, 7); + rb_define_singleton_method(stack_recorder_class, "_native_initialize", _native_initialize, -1); rb_define_singleton_method(stack_recorder_class, "_native_serialize", _native_serialize, 1); rb_define_singleton_method(stack_recorder_class, "_native_reset_after_fork", _native_reset_after_fork, 1); rb_define_singleton_method(stack_recorder_class, "_native_stats", _native_stats, 1); @@ -307,6 +301,9 @@ void stack_recorder_init(VALUE profiling_module) { _native_gc_force_recycle, 1); rb_define_singleton_method(testing_module, "_native_has_seen_id_flag", _native_has_seen_id_flag, 1); + rb_define_singleton_method(testing_module, "_native_is_object_recorded?", _native_is_object_recorded, 2); + rb_define_singleton_method(testing_module, "_native_heap_recorder_reset_last_update", _native_heap_recorder_reset_last_update, 1); + rb_define_singleton_method(testing_module, "_native_recorder_after_gc_step", _native_recorder_after_gc_step, 1); ok_symbol = ID2SYM(rb_intern_const("ok")); error_symbol = ID2SYM(rb_intern_const("error")); @@ -330,6 +327,8 @@ static VALUE _native_new(VALUE klass) { // Note: Any exceptions raised from this note until the TypedData_Wrap_Struct call will lead to the state memory // being leaked. + state->heap_clean_after_gc_enabled = false; + ddog_prof_Slice_ValueType sample_types = {.ptr = all_value_types, .len = ALL_VALUE_TYPES_COUNT}; initialize_slot_concurrency_control(state); @@ -411,26 +410,33 @@ static void stack_recorder_typed_data_free(void *state_ptr) { ruby_xfree(state); } -static VALUE _native_initialize( - DDTRACE_UNUSED VALUE _self, - VALUE recorder_instance, - VALUE cpu_time_enabled, - VALUE alloc_samples_enabled, - VALUE heap_samples_enabled, - VALUE heap_size_enabled, - VALUE heap_sample_every, - VALUE timeline_enabled -) { +static VALUE _native_initialize(int argc, VALUE *argv, DDTRACE_UNUSED VALUE _self) { + VALUE options; + rb_scan_args(argc, argv, "0:", &options); + if (options == Qnil) options = rb_hash_new(); + + VALUE recorder_instance = rb_hash_fetch(options, ID2SYM(rb_intern("self_instance"))); + VALUE cpu_time_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("cpu_time_enabled"))); + VALUE alloc_samples_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("alloc_samples_enabled"))); + VALUE heap_samples_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("heap_samples_enabled"))); + VALUE heap_size_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("heap_size_enabled"))); + VALUE heap_sample_every = rb_hash_fetch(options, ID2SYM(rb_intern("heap_sample_every"))); + VALUE timeline_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("timeline_enabled"))); + VALUE heap_clean_after_gc_enabled = rb_hash_fetch(options, ID2SYM(rb_intern("heap_clean_after_gc_enabled"))); + ENFORCE_BOOLEAN(cpu_time_enabled); ENFORCE_BOOLEAN(alloc_samples_enabled); ENFORCE_BOOLEAN(heap_samples_enabled); ENFORCE_BOOLEAN(heap_size_enabled); ENFORCE_TYPE(heap_sample_every, T_FIXNUM); ENFORCE_BOOLEAN(timeline_enabled); + ENFORCE_BOOLEAN(heap_clean_after_gc_enabled); struct stack_recorder_state *state; TypedData_Get_Struct(recorder_instance, struct stack_recorder_state, &stack_recorder_typed_data, state); + state->heap_clean_after_gc_enabled = (heap_clean_after_gc_enabled == Qtrue); + heap_recorder_set_sample_rate(state->heap_recorder, NUM2INT(heap_sample_every)); uint8_t requested_values_count = ALL_VALUE_TYPES_COUNT - @@ -616,12 +622,20 @@ void record_sample(VALUE recorder_instance, ddog_prof_Slice_Location locations, metric_values[position_for[ALLOC_SAMPLES_UNSCALED_VALUE_ID]] = values.alloc_samples_unscaled; metric_values[position_for[TIMELINE_VALUE_ID]] = values.timeline_wall_time_ns; - if (values.alloc_samples != 0) { + if (values.heap_sample) { // If we got an allocation sample end the heap allocation recording to commit the heap sample. // FIXME: Heap sampling currently has to be done in 2 parts because the construction of locations is happening // very late in the allocation-sampling path (which is shared with the cpu sampling path). This can // be fixed with some refactoring but for now this leads to a less impactful change. - end_heap_allocation_recording(state->heap_recorder, locations); + // + // NOTE: The heap recorder is allowed to raise exceptions if something's wrong. But we also need to handle it + // on this side to make sure we properly unlock the active slot mutex on our way out. Otherwise, this would + // later lead to deadlocks (since the active slot mutex is not expected to be locked forever). + int exception_state = end_heap_allocation_recording_with_rb_protect(state->heap_recorder, locations); + if (exception_state) { + sampler_unlock_active_profile(active_slot); + rb_jump_tag(exception_state); + } } ddog_prof_Profile_Result result = ddog_prof_Profile_add( @@ -667,6 +681,13 @@ void record_endpoint(VALUE recorder_instance, uint64_t local_root_span_id, ddog_ } } +void recorder_after_gc_step(VALUE recorder_instance) { + struct stack_recorder_state *state; + TypedData_Get_Struct(recorder_instance, struct stack_recorder_state, &stack_recorder_typed_data, state); + + if (state->heap_clean_after_gc_enabled) heap_recorder_update_young_objects(state->heap_recorder); +} + #define MAX_LEN_HEAP_ITERATION_ERROR_MSG 256 // Heap recorder iteration context allows us access to stack recorder state and profile being serialized @@ -1049,3 +1070,26 @@ static VALUE build_profile_stats(profile_slot *slot, long serialization_time_ns, for (long unsigned int i = 0; i < VALUE_COUNT(arguments); i += 2) rb_hash_aset(stats_as_hash, arguments[i], arguments[i+1]); return stats_as_hash; } + +static VALUE _native_is_object_recorded(DDTRACE_UNUSED VALUE _self, VALUE recorder_instance, VALUE obj_id) { + ENFORCE_TYPE(obj_id, T_FIXNUM); + + struct stack_recorder_state *state; + TypedData_Get_Struct(recorder_instance, struct stack_recorder_state, &stack_recorder_typed_data, state); + + return heap_recorder_testonly_is_object_recorded(state->heap_recorder, obj_id); +} + +static VALUE _native_heap_recorder_reset_last_update(DDTRACE_UNUSED VALUE _self, VALUE recorder_instance) { + struct stack_recorder_state *state; + TypedData_Get_Struct(recorder_instance, struct stack_recorder_state, &stack_recorder_typed_data, state); + + heap_recorder_testonly_reset_last_update(state->heap_recorder); + + return Qtrue; +} + +static VALUE _native_recorder_after_gc_step(DDTRACE_UNUSED VALUE _self, VALUE recorder_instance) { + recorder_after_gc_step(recorder_instance); + return Qtrue; +} diff --git a/ext/datadog_profiling_native_extension/stack_recorder.h b/ext/datadog_profiling_native_extension/stack_recorder.h index 30b56746364..7a500c42c1b 100644 --- a/ext/datadog_profiling_native_extension/stack_recorder.h +++ b/ext/datadog_profiling_native_extension/stack_recorder.h @@ -9,6 +9,7 @@ typedef struct { uint32_t cpu_or_wall_samples; uint32_t alloc_samples; uint32_t alloc_samples_unscaled; + bool heap_sample; int64_t timeline_wall_time_ns; } sample_values; @@ -18,6 +19,7 @@ typedef struct sample_labels { // This is used to allow the `Collectors::Stack` to modify the existing label, if any. This MUST be NULL or point // somewhere inside the labels slice above. ddog_prof_Label *state_label; + bool is_gvl_waiting_state; int64_t end_timestamp_ns; } sample_labels; @@ -25,4 +27,5 @@ typedef struct sample_labels { void record_sample(VALUE recorder_instance, ddog_prof_Slice_Location locations, sample_values values, sample_labels labels); void record_endpoint(VALUE recorder_instance, uint64_t local_root_span_id, ddog_CharSlice endpoint); void track_object(VALUE recorder_instance, VALUE new_object, unsigned int sample_weight, ddog_CharSlice *alloc_class); +void recorder_after_gc_step(VALUE recorder_instance); VALUE enforce_recorder_instance(VALUE object); diff --git a/ext/datadog_profiling_native_extension/time_helpers.c b/ext/datadog_profiling_native_extension/time_helpers.c index 5d761f0b127..15d499348a6 100644 --- a/ext/datadog_profiling_native_extension/time_helpers.c +++ b/ext/datadog_profiling_native_extension/time_helpers.c @@ -4,21 +4,6 @@ #include "ruby_helpers.h" #include "time_helpers.h" -// Safety: This function is assumed never to raise exceptions by callers when raise_on_failure == false -long retrieve_clock_as_ns(clockid_t clock_id, bool raise_on_failure) { - struct timespec clock_value; - - if (clock_gettime(clock_id, &clock_value) != 0) { - if (raise_on_failure) ENFORCE_SUCCESS_GVL(errno); - return 0; - } - - return clock_value.tv_nsec + SECONDS_AS_NS(clock_value.tv_sec); -} - -long monotonic_wall_time_now_ns(bool raise_on_failure) { return retrieve_clock_as_ns(CLOCK_MONOTONIC, raise_on_failure); } -long system_epoch_time_now_ns(bool raise_on_failure) { return retrieve_clock_as_ns(CLOCK_REALTIME, raise_on_failure); } - // Design: The monotonic_to_system_epoch_state struct is kept somewhere by the caller, and MUST be initialized to // MONOTONIC_TO_SYSTEM_EPOCH_INITIALIZER. // diff --git a/ext/datadog_profiling_native_extension/time_helpers.h b/ext/datadog_profiling_native_extension/time_helpers.h index 82ed1eb2a0d..87bc5341fc9 100644 --- a/ext/datadog_profiling_native_extension/time_helpers.h +++ b/ext/datadog_profiling_native_extension/time_helpers.h @@ -1,12 +1,16 @@ #pragma once #include +#include +#include + +#include "extconf.h" // Needed for HAVE_CLOCK_MONOTONIC_COARSE +#include "ruby_helpers.h" #define SECONDS_AS_NS(value) (value * 1000 * 1000 * 1000L) #define MILLIS_AS_NS(value) (value * 1000 * 1000L) -#define RAISE_ON_FAILURE true -#define DO_NOT_RAISE_ON_FAILURE false +typedef enum { RAISE_ON_FAILURE, DO_NOT_RAISE_ON_FAILURE } raise_on_failure_setting; #define INVALID_TIME -1 @@ -17,10 +21,36 @@ typedef struct { #define MONOTONIC_TO_SYSTEM_EPOCH_INITIALIZER {.system_epoch_ns_reference = INVALID_TIME, .delta_to_epoch_ns = INVALID_TIME} -// Safety: This function is assumed never to raise exceptions by callers when raise_on_failure == false -long monotonic_wall_time_now_ns(bool raise_on_failure); +static inline long retrieve_clock_as_ns(clockid_t clock_id, raise_on_failure_setting raise_on_failure) { + struct timespec clock_value; + + if (clock_gettime(clock_id, &clock_value) != 0) { + if (raise_on_failure == RAISE_ON_FAILURE) ENFORCE_SUCCESS_GVL(errno); + return 0; + } + + return clock_value.tv_nsec + SECONDS_AS_NS(clock_value.tv_sec); +} + +static inline long monotonic_wall_time_now_ns(raise_on_failure_setting raise_on_failure) { return retrieve_clock_as_ns(CLOCK_MONOTONIC, raise_on_failure); } +static inline long system_epoch_time_now_ns(raise_on_failure_setting raise_on_failure) { return retrieve_clock_as_ns(CLOCK_REALTIME, raise_on_failure); } + +// Coarse instants use CLOCK_MONOTONIC_COARSE on Linux which is expected to provide resolution in the millisecond range: +// https://docs.redhat.com/en/documentation/red_hat_enterprise_linux_for_real_time/7/html/reference_guide/sect-posix_clocks#Using_clock_getres_to_compare_clock_resolution +// We introduce here a separate type for it, so as to make it harder to misuse/more explicit when these timestamps are used + +typedef struct coarse_instant { + long timestamp_ns; +} coarse_instant; + +static inline coarse_instant to_coarse_instant(long timestamp_ns) { return (coarse_instant) {.timestamp_ns = timestamp_ns}; } -// Safety: This function is assumed never to raise exceptions by callers when raise_on_failure == false -long system_epoch_time_now_ns(bool raise_on_failure); +static inline coarse_instant monotonic_coarse_wall_time_now_ns(void) { + #ifdef HAVE_CLOCK_MONOTONIC_COARSE // Linux + return to_coarse_instant(retrieve_clock_as_ns(CLOCK_MONOTONIC_COARSE, DO_NOT_RAISE_ON_FAILURE)); + #else // macOS + return to_coarse_instant(retrieve_clock_as_ns(CLOCK_MONOTONIC, DO_NOT_RAISE_ON_FAILURE)); + #endif +} long monotonic_to_system_epoch_ns(monotonic_to_system_epoch_state *state, long monotonic_wall_time_ns); diff --git a/ext/datadog_profiling_native_extension/crashtracker.c b/ext/libdatadog_api/crashtracker.c similarity index 63% rename from ext/datadog_profiling_native_extension/crashtracker.c rename to ext/libdatadog_api/crashtracker.c index a22d9ae4245..82c1efc1a84 100644 --- a/ext/datadog_profiling_native_extension/crashtracker.c +++ b/ext/libdatadog_api/crashtracker.c @@ -1,15 +1,25 @@ #include -#include -#include +#include + +#include "datadog_ruby_common.h" static VALUE _native_start_or_update_on_fork(int argc, VALUE *argv, DDTRACE_UNUSED VALUE _self); static VALUE _native_stop(DDTRACE_UNUSED VALUE _self); +static void crashtracker_init(VALUE crashtracking_module); // Used to report Ruby VM crashes. // Once initialized, segfaults will be reported automatically using libdatadog. -void crashtracker_init(VALUE profiling_module) { - VALUE crashtracker_class = rb_define_class_under(profiling_module, "Crashtracker", rb_cObject); +void DDTRACE_EXPORT Init_libdatadog_api(void) { + VALUE datadog_module = rb_define_module("Datadog"); + VALUE core_module = rb_define_module_under(datadog_module, "Core"); + VALUE crashtracking_module = rb_define_module_under(core_module, "Crashtracking"); + + crashtracker_init(crashtracking_module); +} + +void crashtracker_init(VALUE crashtracking_module) { + VALUE crashtracker_class = rb_define_class_under(crashtracking_module, "Component", rb_cObject); rb_define_singleton_method(crashtracker_class, "_native_start_or_update_on_fork", _native_start_or_update_on_fork, -1); rb_define_singleton_method(crashtracker_class, "_native_stop", _native_stop, 0); @@ -18,8 +28,9 @@ void crashtracker_init(VALUE profiling_module) { static VALUE _native_start_or_update_on_fork(int argc, VALUE *argv, DDTRACE_UNUSED VALUE _self) { VALUE options; rb_scan_args(argc, argv, "0:", &options); + if (options == Qnil) options = rb_hash_new(); - VALUE exporter_configuration = rb_hash_fetch(options, ID2SYM(rb_intern("exporter_configuration"))); + VALUE agent_base_url = rb_hash_fetch(options, ID2SYM(rb_intern("agent_base_url"))); VALUE path_to_crashtracking_receiver_binary = rb_hash_fetch(options, ID2SYM(rb_intern("path_to_crashtracking_receiver_binary"))); VALUE ld_library_path = rb_hash_fetch(options, ID2SYM(rb_intern("ld_library_path"))); VALUE tags_as_array = rb_hash_fetch(options, ID2SYM(rb_intern("tags_as_array"))); @@ -29,7 +40,7 @@ static VALUE _native_start_or_update_on_fork(int argc, VALUE *argv, DDTRACE_UNUS VALUE start_action = ID2SYM(rb_intern("start")); VALUE update_on_fork_action = ID2SYM(rb_intern("update_on_fork")); - ENFORCE_TYPE(exporter_configuration, T_ARRAY); + ENFORCE_TYPE(agent_base_url, T_STRING); ENFORCE_TYPE(tags_as_array, T_ARRAY); ENFORCE_TYPE(path_to_crashtracking_receiver_binary, T_STRING); ENFORCE_TYPE(ld_library_path, T_STRING); @@ -38,14 +49,14 @@ static VALUE _native_start_or_update_on_fork(int argc, VALUE *argv, DDTRACE_UNUS if (action != start_action && action != update_on_fork_action) rb_raise(rb_eArgError, "Unexpected action: %+"PRIsVALUE, action); - VALUE version = ddtrace_version(); - ddog_prof_Endpoint endpoint = endpoint_from(exporter_configuration); + VALUE version = datadog_gem_version(); - // Tags are heap-allocated, so after here we can't raise exceptions otherwise we'll leak this memory + // Tags and endpoint are heap-allocated, so after here we can't raise exceptions otherwise we'll leak this memory // Start of exception-free zone to prevent leaks {{ + ddog_Endpoint *endpoint = ddog_endpoint_from_url(char_slice_from_ruby_string(agent_base_url)); ddog_Vec_Tag tags = convert_tags(tags_as_array); - ddog_prof_CrashtrackerConfiguration config = { + ddog_crasht_Config config = { .additional_files = {}, // The Ruby VM already uses an alt stack to detect stack overflows so the crash handler must not overwrite it. // @@ -57,23 +68,26 @@ static VALUE _native_start_or_update_on_fork(int argc, VALUE *argv, DDTRACE_UNUS // "Process.kill('SEGV', Process.pid)" gets run. .create_alt_stack = false, .endpoint = endpoint, - .resolve_frames = DDOG_PROF_STACKTRACE_COLLECTION_ENABLED_WITH_SYMBOLS_IN_RECEIVER, + .resolve_frames = DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_SYMBOLS_IN_RECEIVER, .timeout_secs = FIX2INT(upload_timeout_seconds), + // Waits for crash tracker to finish reporting the issue before letting the Ruby process die; see + // https://github.com/DataDog/libdatadog/pull/477 for details + .wait_for_receiver = true, }; - ddog_prof_CrashtrackerMetadata metadata = { - .profiling_library_name = DDOG_CHARSLICE_C("dd-trace-rb"), - .profiling_library_version = char_slice_from_ruby_string(version), + ddog_crasht_Metadata metadata = { + .library_name = DDOG_CHARSLICE_C("dd-trace-rb"), + .library_version = char_slice_from_ruby_string(version), .family = DDOG_CHARSLICE_C("ruby"), .tags = &tags, }; - ddog_prof_EnvVar ld_library_path_env = { + ddog_crasht_EnvVar ld_library_path_env = { .key = DDOG_CHARSLICE_C("LD_LIBRARY_PATH"), .val = char_slice_from_ruby_string(ld_library_path), }; - ddog_prof_CrashtrackerReceiverConfig receiver_config = { + ddog_crasht_ReceiverConfig receiver_config = { .args = {}, .env = {.ptr = &ld_library_path_env, .len = 1}, .path_to_receiver_binary = char_slice_from_ruby_string(path_to_crashtracking_receiver_binary), @@ -81,16 +95,17 @@ static VALUE _native_start_or_update_on_fork(int argc, VALUE *argv, DDTRACE_UNUS .optional_stdout_filename = {}, }; - ddog_prof_CrashtrackerResult result = + ddog_crasht_Result result = action == start_action ? - ddog_prof_Crashtracker_init(config, receiver_config, metadata) : - ddog_prof_Crashtracker_update_on_fork(config, receiver_config, metadata); + ddog_crasht_init_with_receiver(config, receiver_config, metadata) : + ddog_crasht_update_on_fork(config, receiver_config, metadata); // Clean up before potentially raising any exceptions ddog_Vec_Tag_drop(tags); + ddog_endpoint_drop(endpoint); // }} End of exception-free zone to prevent leaks - if (result.tag == DDOG_PROF_CRASHTRACKER_RESULT_ERR) { + if (result.tag == DDOG_CRASHT_RESULT_ERR) { rb_raise(rb_eRuntimeError, "Failed to start/update the crash tracker: %"PRIsVALUE, get_error_details_and_drop(&result.err)); } @@ -98,9 +113,9 @@ static VALUE _native_start_or_update_on_fork(int argc, VALUE *argv, DDTRACE_UNUS } static VALUE _native_stop(DDTRACE_UNUSED VALUE _self) { - ddog_prof_CrashtrackerResult result = ddog_prof_Crashtracker_shutdown(); + ddog_crasht_Result result = ddog_crasht_shutdown(); - if (result.tag == DDOG_PROF_CRASHTRACKER_RESULT_ERR) { + if (result.tag == DDOG_CRASHT_RESULT_ERR) { rb_raise(rb_eRuntimeError, "Failed to stop the crash tracker: %"PRIsVALUE, get_error_details_and_drop(&result.err)); } diff --git a/ext/libdatadog_api/datadog_ruby_common.c b/ext/libdatadog_api/datadog_ruby_common.c new file mode 100644 index 00000000000..ff7c3b6d514 --- /dev/null +++ b/ext/libdatadog_api/datadog_ruby_common.c @@ -0,0 +1,83 @@ +#include "datadog_ruby_common.h" + +// IMPORTANT: Currently this file is copy-pasted between extensions. Make sure to update all versions when doing any change! + +void raise_unexpected_type(VALUE value, const char *value_name, const char *type_name, const char *file, int line, const char* function_name) { + rb_exc_raise( + rb_exc_new_str( + rb_eTypeError, + rb_sprintf("wrong argument %"PRIsVALUE" for '%s' (expected a %s) at %s:%d:in `%s'", + rb_inspect(value), + value_name, + type_name, + file, + line, + function_name + ) + ) + ); +} + +VALUE datadog_gem_version(void) { + VALUE ddtrace_module = rb_const_get(rb_cObject, rb_intern("Datadog")); + ENFORCE_TYPE(ddtrace_module, T_MODULE); + VALUE version_module = rb_const_get(ddtrace_module, rb_intern("VERSION")); + ENFORCE_TYPE(version_module, T_MODULE); + VALUE version_string = rb_const_get(version_module, rb_intern("STRING")); + ENFORCE_TYPE(version_string, T_STRING); + return version_string; +} + +static VALUE log_failure_to_process_tag(VALUE err_details) { + VALUE datadog_module = rb_const_get(rb_cObject, rb_intern("Datadog")); + VALUE logger = rb_funcall(datadog_module, rb_intern("logger"), 0); + + return rb_funcall(logger, rb_intern("warn"), 1, rb_sprintf("Failed to convert tag: %"PRIsVALUE, err_details)); +} + +__attribute__((warn_unused_result)) +ddog_Vec_Tag convert_tags(VALUE tags_as_array) { + ENFORCE_TYPE(tags_as_array, T_ARRAY); + + long tags_count = RARRAY_LEN(tags_as_array); + ddog_Vec_Tag tags = ddog_Vec_Tag_new(); + + for (long i = 0; i < tags_count; i++) { + VALUE name_value_pair = rb_ary_entry(tags_as_array, i); + + if (!RB_TYPE_P(name_value_pair, T_ARRAY)) { + ddog_Vec_Tag_drop(tags); + ENFORCE_TYPE(name_value_pair, T_ARRAY); + } + + // Note: We can index the array without checking its size first because rb_ary_entry returns Qnil if out of bounds + VALUE tag_name = rb_ary_entry(name_value_pair, 0); + VALUE tag_value = rb_ary_entry(name_value_pair, 1); + + if (!(RB_TYPE_P(tag_name, T_STRING) && RB_TYPE_P(tag_value, T_STRING))) { + ddog_Vec_Tag_drop(tags); + ENFORCE_TYPE(tag_name, T_STRING); + ENFORCE_TYPE(tag_value, T_STRING); + } + + ddog_Vec_Tag_PushResult push_result = + ddog_Vec_Tag_push(&tags, char_slice_from_ruby_string(tag_name), char_slice_from_ruby_string(tag_value)); + + if (push_result.tag == DDOG_VEC_TAG_PUSH_RESULT_ERR) { + // libdatadog validates tags and may catch invalid tags that ddtrace didn't actually catch. + // We warn users about such tags, and then just ignore them. + + int exception_state; + rb_protect(log_failure_to_process_tag, get_error_details_and_drop(&push_result.err), &exception_state); + + // Since we are calling into Ruby code, it may raise an exception. Ensure that dynamically-allocated tags + // get cleaned before propagating the exception. + if (exception_state) { + ddog_Vec_Tag_drop(tags); + rb_jump_tag(exception_state); // "Re-raise" exception + } + } + } + + return tags; +} diff --git a/ext/libdatadog_api/datadog_ruby_common.h b/ext/libdatadog_api/datadog_ruby_common.h new file mode 100644 index 00000000000..d2e3d717180 --- /dev/null +++ b/ext/libdatadog_api/datadog_ruby_common.h @@ -0,0 +1,53 @@ +#pragma once + +// IMPORTANT: Currently this file is copy-pasted between extensions. Make sure to update all versions when doing any change! + +#include +#include + +// Used to mark symbols to be exported to the outside of the extension. +// Consider very carefully before tagging a function with this. +#define DDTRACE_EXPORT __attribute__ ((visibility ("default"))) + +// Used to mark function arguments that are deliberately left unused +#ifdef __GNUC__ + #define DDTRACE_UNUSED __attribute__((unused)) +#else + #define DDTRACE_UNUSED +#endif + +#define ADD_QUOTES_HELPER(x) #x +#define ADD_QUOTES(x) ADD_QUOTES_HELPER(x) + +// Ruby has a Check_Type(value, type) that is roughly equivalent to this BUT Ruby's version is rather cryptic when it fails +// e.g. "wrong argument type nil (expected String)". This is a replacement that prints more information to help debugging. +#define ENFORCE_TYPE(value, type) \ + { if (RB_UNLIKELY(!RB_TYPE_P(value, type))) raise_unexpected_type(value, ADD_QUOTES(value), ADD_QUOTES(type), __FILE__, __LINE__, __func__); } + +#define ENFORCE_BOOLEAN(value) \ + { if (RB_UNLIKELY(value != Qtrue && value != Qfalse)) raise_unexpected_type(value, ADD_QUOTES(value), "true or false", __FILE__, __LINE__, __func__); } + +NORETURN(void raise_unexpected_type(VALUE value, const char *value_name, const char *type_name, const char *file, int line, const char* function_name)); + +// Helper to retrieve Datadog::VERSION::STRING +VALUE datadog_gem_version(void); + +static inline ddog_CharSlice char_slice_from_ruby_string(VALUE string) { + ENFORCE_TYPE(string, T_STRING); + ddog_CharSlice char_slice = {.ptr = RSTRING_PTR(string), .len = RSTRING_LEN(string)}; + return char_slice; +} + +__attribute__((warn_unused_result)) +ddog_Vec_Tag convert_tags(VALUE tags_as_array); + +static inline VALUE ruby_string_from_error(const ddog_Error *error) { + ddog_CharSlice char_slice = ddog_Error_message(error); + return rb_str_new(char_slice.ptr, char_slice.len); +} + +static inline VALUE get_error_details_and_drop(ddog_Error *error) { + VALUE result = ruby_string_from_error(error); + ddog_Error_drop(error); + return result; +} diff --git a/ext/libdatadog_api/extconf.rb b/ext/libdatadog_api/extconf.rb new file mode 100644 index 00000000000..b519e47c3a2 --- /dev/null +++ b/ext/libdatadog_api/extconf.rb @@ -0,0 +1,108 @@ +# rubocop:disable Style/StderrPuts +# rubocop:disable Style/GlobalVars + +require 'rubygems' +require_relative '../libdatadog_extconf_helpers' + +def skip_building_extension!(reason) + $stderr.puts( + "WARN: Skipping build of libdatadog_api (#{reason}). Some functionality will not be available." + ) + + fail_install_if_missing_extension = ENV['DD_FAIL_INSTALL_IF_MISSING_EXTENSION'].to_s.strip.downcase == 'true' + + if fail_install_if_missing_extension + require 'mkmf' + Logging.message("[datadog] Failure cause: #{reason}") + else + File.write('Makefile', 'all install clean: # dummy makefile that does nothing') + end + + exit +end + +if ENV['DD_NO_EXTENSION'].to_s.strip.downcase == 'true' + skip_building_extension!('the `DD_NO_EXTENSION` environment variable is/was set to `true` during installation') +end +skip_building_extension!('current Ruby VM is not supported') if RUBY_ENGINE != 'ruby' +skip_building_extension!('Microsoft Windows is not supported') if Gem.win_platform? +skip_building_extension!('issue setting up `libdatadog` gem') if Datadog::LibdatadogExtconfHelpers.libdatadog_issue? + +require 'mkmf' + +# Because we can't control what compiler versions our customers use, shipping with -Werror by default is a no-go. +# But we can enable it in CI, so that we quickly spot any new warnings that just got introduced. +append_cflags '-Werror' if ENV['DATADOG_GEM_CI'] == 'true' + +# Older gcc releases may not default to C99 and we need to ask for this. This is also used: +# * by upstream Ruby -- search for gnu99 in the codebase +# * by msgpack, another datadog gem dependency +# (https://github.com/msgpack/msgpack-ruby/blob/18ce08f6d612fe973843c366ac9a0b74c4e50599/ext/msgpack/extconf.rb#L8) +append_cflags '-std=gnu99' + +# Allow defining variables at any point in a function +append_cflags '-Wno-declaration-after-statement' + +# If we forget to include a Ruby header, the function call may still appear to work, but then +# cause a segfault later. Let's ensure that never happens. +append_cflags '-Werror-implicit-function-declaration' + +# Warn on unused parameters to functions. Use `DDTRACE_UNUSED` to mark things as known-to-not-be-used. +append_cflags '-Wunused-parameter' + +# The native extension is not intended to expose any symbols/functions for other native libraries to use; +# the sole exception being `Init_libdatadog_api` which needs to be visible for Ruby to call it when +# it `dlopen`s the library. +# +# By setting this compiler flag, we tell it to assume that everything is private unless explicitly stated. +# For more details see https://gcc.gnu.org/wiki/Visibility +append_cflags '-fvisibility=hidden' + +# Avoid legacy C definitions +append_cflags '-Wold-style-definition' + +# Enable all other compiler warnings +append_cflags '-Wall' +append_cflags '-Wextra' + +if ENV['DDTRACE_DEBUG'] == 'true' + $defs << '-DDD_DEBUG' + CONFIG['optflags'] = '-O0' + CONFIG['debugflags'] = '-ggdb3' +end + +# If we got here, libdatadog is available and loaded +ENV['PKG_CONFIG_PATH'] = "#{ENV['PKG_CONFIG_PATH']}:#{Libdatadog.pkgconfig_folder}" +Logging.message("[datadog] PKG_CONFIG_PATH set to #{ENV['PKG_CONFIG_PATH'].inspect}\n") +$stderr.puts("Using libdatadog #{Libdatadog::VERSION} from #{Libdatadog.pkgconfig_folder}") + +unless pkg_config('datadog_profiling_with_rpath') + Logging.message("[datadog] Ruby detected the pkg-config command is #{$PKGCONFIG.inspect}\n") + + if Datadog::LibdatadogExtconfHelpers.pkg_config_missing? + skip_building_extension!('the `pkg-config` system tool is missing') + else + skip_building_extension!('there was a problem in setting up the `libdatadog` dependency') + end +end + +# See comments on the helper methods being used for why we need to additionally set this. +# The extremely excessive escaping around ORIGIN below seems to be correct and was determined after a lot of +# experimentation. We need to get these special characters across a lot of tools untouched... +extra_relative_rpaths = [ + Datadog::LibdatadogExtconfHelpers.libdatadog_folder_relative_to_native_lib_folder(current_folder: __dir__), + *Datadog::LibdatadogExtconfHelpers.libdatadog_folder_relative_to_ruby_extensions_folders, +] +extra_relative_rpaths.each { |folder| $LDFLAGS += " -Wl,-rpath,$$$\\\\{ORIGIN\\}/#{folder.to_str}" } +Logging.message("[datadog] After pkg-config $LDFLAGS were set to: #{$LDFLAGS.inspect}\n") + +# Tag the native extension library with the Ruby version and Ruby platform. +# This makes it easier for development (avoids "oops I forgot to rebuild when I switched my Ruby") and ensures that +# the wrong library is never loaded. +# When requiring, we need to use the exact same string, including the version and the platform. +EXTENSION_NAME = "libdatadog_api.#{RUBY_VERSION[/\d+.\d+/]}_#{RUBY_PLATFORM}".freeze + +create_makefile(EXTENSION_NAME) + +# rubocop:enable Style/GlobalVars +# rubocop:enable Style/StderrPuts diff --git a/ext/libdatadog_api/macos_development.md b/ext/libdatadog_api/macos_development.md new file mode 100644 index 00000000000..35e461b2dac --- /dev/null +++ b/ext/libdatadog_api/macos_development.md @@ -0,0 +1,26 @@ +# Developing on macOS + +As of this writing (August 2024), the libdatadog builds on rubygems.org only support Linux. + +We don't officially support using libdatadog for Ruby on other platforms yet, but it is possible to use it for local development on macOS. +(**Note that you don't need these instructions if you develop inside docker.**) + +Here's how you can do so: + +1. [Install rust](https://www.rust-lang.org/tools/install) +2. Install `cbindgen`: `cargo install cbindgen` +3. Clone [libdatadog](https://github.com/datadog/libdatadog) +4. Create a folder for building into based on your ruby platform: + +``` +export DD_RUBY_PLATFORM=`ruby -e 'puts Gem::Platform.local.to_s'` +mkdir -p my-libdatadog-build/$DD_RUBY_PLATFORM +``` + +5. Build libdatadog into this folder: `./build-profiling-ffi.sh my-libdatadog-build/$DD_RUBY_PLATFORM` +6. Tell the Ruby where to find libdatadog: `export LIBDATADOG_VENDOR_OVERRIDE=/full/path/to/my-libdatadog-build/` (Notice no platform here) +7. Run `bundle exec rake clean compile` + +If you additionally want to run the profiler test suite, also remember to `export DD_PROFILING_MACOS_TESTING=true` and re-run `rake clean compile`. + +These instructions can quickly get outdated, so feel free to open an issue if they're not working (and/or ping @ivoanjo). diff --git a/ext/libdatadog_extconf_helpers.rb b/ext/libdatadog_extconf_helpers.rb new file mode 100644 index 00000000000..ad9cf4f2e6b --- /dev/null +++ b/ext/libdatadog_extconf_helpers.rb @@ -0,0 +1,130 @@ +# frozen_string_literal: true + +require 'rubygems' +require 'pathname' + +module Datadog + # Contains a bunch of shared helpers that get used during building of extensions that link to libdatadog + module LibdatadogExtconfHelpers + # Used to make sure the correct gem version gets loaded, as extconf.rb does not get run with "bundle exec" and thus + # may see multiple libdatadog versions. See https://github.com/DataDog/dd-trace-rb/pull/2531 for the horror story. + LIBDATADOG_VERSION = '~> 13.1.0.1.0' + + # Used as an workaround for a limitation with how dynamic linking works in environments where the datadog gem and + # libdatadog are moved after the extension gets compiled. + # + # Because the libdatadog native library is installed on a non-standard system path, in order for it to be + # found by the system dynamic linker (e.g. what takes care of dlopen(), which is used to load + # native extensions), we need to add a "runpath" -- a list of folders to search for libdatadog. + # + # This runpath gets hardcoded at native library linking time. You can look at it using the `readelf` tool in + # Linux: e.g. `readelf -d datadog_profiling_native_extension.2.7.3_x86_64-linux.so`. + # + # In older versions of the datadog gem, we only set as runpath an absolute path to libdatadog. + # (This gets set automatically by the call + # to `pkg_config('datadog_profiling_with_rpath')` in `extconf.rb`). This worked fine as long as libdatadog was **NOT** + # moved from the folder it was present at datadog gem installation/linking time. + # + # Unfortunately, environments such as Heroku and AWS Elastic Beanstalk move gems around in the filesystem after + # installation. Thus, the profiling native extension could not be loaded in these environments + # (see https://github.com/DataDog/dd-trace-rb/issues/2067) because libdatadog could not be found. + # + # To workaround this issue, this method computes the **relative** path between the folder where + # native extensions are going to be installed and the folder where libdatadog is installed, and returns it + # to be set as an additional runpath. (Yes, you can set multiple runpath folders to be searched). + # + # This way, if both gems are moved together (and it turns out that they are in these environments), + # the relative path can still be traversed to find libdatadog. + # + # This is incredibly awful, and it's kinda bizarre how it's not possible to just find these paths at runtime + # and set them correctly; rather than needing to set stuff at linking-time and then praying to $deity that + # weird moves don't happen. + # + # As a curiosity, `LD_LIBRARY_PATH` can be used to influence the folders that get searched but **CANNOT BE + # SET DYNAMICALLY**, e.g. it needs to be set at the start of the process (Ruby VM) and thus it's not something + # we could setup when doing a `require`. + # + def self.libdatadog_folder_relative_to_native_lib_folder( + current_folder:, + libdatadog_pkgconfig_folder: Libdatadog.pkgconfig_folder + ) + return unless libdatadog_pkgconfig_folder + + native_lib_folder = "#{current_folder}/../../lib/" + libdatadog_lib_folder = "#{libdatadog_pkgconfig_folder}/../" + + Pathname.new(libdatadog_lib_folder).relative_path_from(Pathname.new(native_lib_folder)).to_s + end + + # In https://github.com/DataDog/dd-trace-rb/pull/3582 we got a report of a customer for which the native extension + # only got installed into the extensions folder. + # + # But then this fix was not enough to fully get them moving because then they started to see the issue from + # https://github.com/DataDog/dd-trace-rb/issues/2067 / https://github.com/DataDog/dd-trace-rb/pull/2125 : + # + # > Profiling was requested but is not supported, profiling disabled: There was an error loading the profiling + # > native extension due to 'RuntimeError Failure to load datadog_profiling_native_extension.3.2.2_x86_64-linux + # > due to libdatadog_profiling.so: cannot open shared object file: No such file or directory + # + # The problem is that when loading the native extension from the extensions directory, the relative rpath we add + # with the #libdatadog_folder_relative_to_native_lib_folder helper above is not correct, we need to add a relative + # rpath to the extensions directory. + # + # So how do we find the full path where the native extension is placed? + # * From https://github.com/ruby/ruby/blob/83f02d42e0a3c39661dc99c049ab9a70ff227d5b/lib/bundler/runtime.rb#L166 + # `extension_dirs = Dir["#{Gem.dir}/extensions/*/*/*"] + Dir["#{Gem.dir}/bundler/gems/extensions/*/*/*"]` + # we get that's in one of two fixed subdirectories of `Gem.dir` + # * From https://github.com/ruby/ruby/blob/83f02d42e0a3c39661dc99c049ab9a70ff227d5b/lib/rubygems/basic_specification.rb#L111-L115 + # we get the structure of the subdirectory (platform/extension_api_version/gem_and_version) + # + # Thus, `Gem.dir` of `/var/app/current/vendor/bundle/ruby/3.2.0` becomes (for instance) + # `/var/app/current/vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/datadog-2.0.0/` or + # `/var/app/current/vendor/bundle/ruby/3.2.0/bundler/gems/extensions/x86_64-linux/3.2.0/datadog-2.0.0/` + # + # We then compute the relative path between these folders and the libdatadog folder, and use that as a relative path. + def self.libdatadog_folder_relative_to_ruby_extensions_folders( + gem_dir: Gem.dir, + libdatadog_pkgconfig_folder: Libdatadog.pkgconfig_folder + ) + return unless libdatadog_pkgconfig_folder + + # For the purposes of calculating a folder relative to the other, we don't actually NEED to fill in the + # platform, extension_api_version and gem version. We're basically just after how many folders it is deep from + # the Gem.dir. + expected_ruby_extensions_folders = [ + "#{gem_dir}/extensions/platform/extension_api_version/datadog_version/", + "#{gem_dir}/bundler/gems/extensions/platform/extension_api_version/datadog_version/", + ] + libdatadog_lib_folder = "#{libdatadog_pkgconfig_folder}/../" + + expected_ruby_extensions_folders.map do |folder| + Pathname.new(libdatadog_lib_folder).relative_path_from(Pathname.new(folder)).to_s + end + end + + # mkmf sets $PKGCONFIG after the `pkg_config` gets used in extconf.rb. When `pkg_config` is unsuccessful, we use + # this helper to decide if we can show more specific error message vs a generic "something went wrong". + def self.pkg_config_missing?(command: $PKGCONFIG) # rubocop:disable Style/GlobalVars + pkg_config_available = command && xsystem("#{command} --version") + + pkg_config_available != true + end + + def self.try_loading_libdatadog + gem 'libdatadog', LIBDATADOG_VERSION + require 'libdatadog' + nil + rescue Exception => e # rubocop:disable Lint/RescueException + if block_given? + yield e + else + e + end + end + + def self.libdatadog_issue? + try_loading_libdatadog { |_exception| return true } + Libdatadog.pkgconfig_folder.nil? + end + end +end diff --git a/flake.lock b/flake.lock new file mode 100644 index 00000000000..3ba015ba6f7 --- /dev/null +++ b/flake.lock @@ -0,0 +1,76 @@ +{ + "nodes": { + "flake-compat": { + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "revCount": 57, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1729076285, + "narHash": "sha256-0pKZR4g2X3YTOcLQexuDrN2vIdFQJ1djqXSBfD0gEgE=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "2a3b139da1ffe0cdd6ab82583e147a75738ba4f8", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "master", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000000..f2517590275 --- /dev/null +++ b/flake.nix @@ -0,0 +1,57 @@ +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/master"; + + # cross-platform convenience + flake-utils.url = "github:numtide/flake-utils"; + + # backwards compatibility with nix-build and nix-shell + flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"; + }; + + outputs = { self, nixpkgs, flake-utils, flake-compat }: + # resolve for all platforms in turn + flake-utils.lib.eachDefaultSystem (system: + let + # packages for this system platform + pkgs = nixpkgs.legacyPackages.${system}; + + # control versions + ruby = pkgs.ruby_3_3; + llvm = pkgs.llvmPackages_16; + gcc = pkgs.gcc13; + in { + devShell = pkgs.llvm.stdenv.mkDerivation { + name = "devshell"; + + buildInputs = with pkgs; [ + ruby + libyaml.dev + + # TODO: some gems insist on using `gcc` on Linux, satisfy them for now: + # - json + # - protobuf + # - ruby-prof + gcc + ]; + + shellHook = '' + # get major.minor.0 ruby version + export RUBY_VERSION="$(ruby -e 'puts RUBY_VERSION.gsub(/\d+$/, "0")')" + + # make gem install work in-project, compatibly with bundler + export GEM_HOME="$(pwd)/vendor/bundle/ruby/$RUBY_VERSION" + + # make bundle work in-project + export BUNDLE_PATH="$(pwd)/vendor/bundle" + + # enable calling gem scripts without bundle exec + export PATH="$GEM_HOME/bin:$PATH" + + # enable implicitly resolving gems to bundled version + export RUBYGEMS_GEMDEPS="$(pwd)/Gemfile" + ''; + }; + } + ); +} diff --git a/gemfiles/jruby_9.2_activesupport.gemfile b/gemfiles/jruby_9.2_activesupport.gemfile index a3a69aeca78..344b1a48a31 100644 --- a/gemfiles/jruby_9.2_activesupport.gemfile +++ b/gemfiles/jruby_9.2_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "activesupport", "~> 5" diff --git a/gemfiles/jruby_9.2_activesupport.gemfile.lock b/gemfiles/jruby_9.2_activesupport.gemfile.lock index faf018290c0..fe5e7bd2f4b 100644 --- a/gemfiles/jruby_9.2_activesupport.gemfile.lock +++ b/gemfiles/jruby_9.2_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -62,7 +62,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) @@ -102,7 +102,7 @@ GEM addressable (>= 2.4) jsonapi-renderer (0.2.2) king_konf (1.0.1) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.13.0) @@ -205,7 +205,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-1.8 @@ -218,7 +217,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -245,7 +243,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_aws.gemfile b/gemfiles/jruby_9.2_aws.gemfile index 798014fd3ca..d3eec5784c6 100644 --- a/gemfiles/jruby_9.2_aws.gemfile +++ b/gemfiles/jruby_9.2_aws.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", "= 3.2.6" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "aws-sdk" diff --git a/gemfiles/jruby_9.2_aws.gemfile.lock b/gemfiles/jruby_9.2_aws.gemfile.lock index e6069343fb5..8b279262db1 100644 --- a/gemfiles/jruby_9.2_aws.gemfile.lock +++ b/gemfiles/jruby_9.2_aws.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -1449,13 +1449,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.0) @@ -1464,7 +1463,7 @@ GEM jmespath (1.6.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -1520,7 +1519,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-1.8 @@ -1530,7 +1528,6 @@ DEPENDENCIES aws-sdk benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -1554,7 +1551,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_contrib.gemfile b/gemfiles/jruby_9.2_contrib.gemfile index 014b089dc32..83e9cf2eb57 100644 --- a/gemfiles/jruby_9.2_contrib.gemfile +++ b/gemfiles/jruby_9.2_contrib.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "dalli", ">= 3.0.0" diff --git a/gemfiles/jruby_9.2_contrib.gemfile.lock b/gemfiles/jruby_9.2_contrib.gemfile.lock index fc9b5b86d3f..850d3c6ae04 100644 --- a/gemfiles/jruby_9.2_contrib.gemfile.lock +++ b/gemfiles/jruby_9.2_contrib.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,7 +30,6 @@ GEM benchmark-memory (0.1.2) memory_profiler (~> 0.9) bson (4.15.0-java) - builder (3.2.4) bunny (2.19.0) amq-protocol (~> 2.3, >= 2.3.1) sorted_set (~> 1, >= 1.0.2) @@ -41,7 +40,7 @@ GEM crack (0.4.5) rexml dalli (3.2.0) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.0) @@ -51,7 +50,7 @@ GEM concurrent-ruby (~> 1.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -152,9 +151,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-1.8 @@ -163,7 +159,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder bunny (~> 2.19.0) climate_control (~> 0.2.0) concurrent-ruby @@ -198,7 +193,6 @@ DEPENDENCIES sucker_punch warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_contrib_old.gemfile b/gemfiles/jruby_9.2_contrib_old.gemfile index 1add7a5c030..bb9ee790d69 100644 --- a/gemfiles/jruby_9.2_contrib_old.gemfile +++ b/gemfiles/jruby_9.2_contrib_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "dalli", "< 3.0.0" diff --git a/gemfiles/jruby_9.2_contrib_old.gemfile.lock b/gemfiles/jruby_9.2_contrib_old.gemfile.lock index a62a70eb727..36cfc41e40c 100644 --- a/gemfiles/jruby_9.2_contrib_old.gemfile.lock +++ b/gemfiles/jruby_9.2_contrib_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -28,14 +28,13 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.1.10) crack (0.4.5) rexml dalli (2.7.11) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -47,7 +46,7 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -109,9 +108,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-1.8 @@ -120,7 +116,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (< 3.0.0) @@ -148,7 +143,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_core_old.gemfile b/gemfiles/jruby_9.2_core_old.gemfile index 45a1ed280a4..62b025bebb8 100644 --- a/gemfiles/jruby_9.2_core_old.gemfile +++ b/gemfiles/jruby_9.2_core_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", "~> 4" gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/jruby_9.2_core_old.gemfile.lock b/gemfiles/jruby_9.2_core_old.gemfile.lock index 9ee83165a75..1e937e5d172 100644 --- a/gemfiles/jruby_9.2_core_old.gemfile.lock +++ b/gemfiles/jruby_9.2_core_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -28,13 +28,12 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.1.10) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (4.8.3) @@ -42,7 +41,7 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -96,9 +95,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-1.8 @@ -107,7 +103,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -130,7 +125,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_elasticsearch_7.gemfile b/gemfiles/jruby_9.2_elasticsearch_7.gemfile index 973456d5829..64863d4d9e3 100644 --- a/gemfiles/jruby_9.2_elasticsearch_7.gemfile +++ b/gemfiles/jruby_9.2_elasticsearch_7.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "elasticsearch", "~> 7" diff --git a/gemfiles/jruby_9.2_elasticsearch_7.gemfile.lock b/gemfiles/jruby_9.2_elasticsearch_7.gemfile.lock index c7ce8ac17e3..efdf40c6f0c 100644 --- a/gemfiles/jruby_9.2_elasticsearch_7.gemfile.lock +++ b/gemfiles/jruby_9.2_elasticsearch_7.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -74,7 +73,7 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -132,7 +131,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-1.8 @@ -141,7 +139,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -165,7 +162,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_elasticsearch_8.gemfile b/gemfiles/jruby_9.2_elasticsearch_8.gemfile index 1f157efbfb1..fdfeb0ce9de 100644 --- a/gemfiles/jruby_9.2_elasticsearch_8.gemfile +++ b/gemfiles/jruby_9.2_elasticsearch_8.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "elasticsearch", "~> 8" diff --git a/gemfiles/jruby_9.2_elasticsearch_8.gemfile.lock b/gemfiles/jruby_9.2_elasticsearch_8.gemfile.lock index 78409d9049e..7821de7a85e 100644 --- a/gemfiles/jruby_9.2_elasticsearch_8.gemfile.lock +++ b/gemfiles/jruby_9.2_elasticsearch_8.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -74,7 +73,7 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -132,7 +131,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-1.8 @@ -141,7 +139,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -165,7 +162,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_elasticsearch_latest.gemfile b/gemfiles/jruby_9.2_elasticsearch_latest.gemfile new file mode 100644 index 00000000000..170cf304690 --- /dev/null +++ b/gemfiles/jruby_9.2_elasticsearch_latest.gemfile @@ -0,0 +1,39 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "elasticsearch" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.2_elasticsearch_latest.gemfile.lock b/gemfiles/jruby_9.2_elasticsearch_latest.gemfile.lock new file mode 100644 index 00000000000..ae1669e6cc0 --- /dev/null +++ b/gemfiles/jruby_9.2_elasticsearch_latest.gemfile.lock @@ -0,0 +1,167 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + elastic-transport (8.3.5) + faraday (< 3) + multi_json + elasticsearch (8.15.0) + elastic-transport (~> 8.3) + elasticsearch-api (= 8.15.0) + elasticsearch-api (8.15.0) + multi_json + faraday (1.10.4) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.2) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + ffi (1.16.3-java) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + multi_json (1.15.0) + multipart-post (2.4.1) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + ruby-debug-base (0.11.0-java) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-1.8 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + elasticsearch + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.2_graphql_2.0.gemfile b/gemfiles/jruby_9.2_graphql_2.0.gemfile index bfb717fccb8..0354833e870 100644 --- a/gemfiles/jruby_9.2_graphql_2.0.gemfile +++ b/gemfiles/jruby_9.2_graphql_2.0.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,10 +24,12 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.0.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/jruby_9.2_graphql_2.0.gemfile.lock b/gemfiles/jruby_9.2_graphql_2.0.gemfile.lock index c1d4d719a6a..06a737862b3 100644 --- a/gemfiles/jruby_9.2_graphql_2.0.gemfile.lock +++ b/gemfiles/jruby_9.2_graphql_2.0.gemfile.lock @@ -11,21 +11,81 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) bundler rake thor (>= 0.14.0) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -35,21 +95,61 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) + digest (3.1.1-java) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) ffi (1.16.3-java) + globalid (1.2.1) + activesupport (>= 6.1) graphql (2.0.28) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + io-wait (0.3.1-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.2) + minitest (5.15.0) msgpack (1.7.2-java) + net-imap (0.2.2) + digest + net-protocol + strscan + net-pop (0.1.2) + net-protocol + net-protocol (0.1.2) + io-wait + timeout + net-smtp (0.3.0) + digest + net-protocol + timeout + nio4r (2.7.3-java) + nokogiri (1.12.5-java) + racc (~> 1.4) os (1.1.4) pimpmychangelog (0.1.3) pry (0.14.2-java) @@ -60,9 +160,42 @@ GEM pry (>= 0.13, < 0.15) ruby-debug-base (>= 0.10.4, < 0.12) public_suffix (4.0.7) + racc (1.8.0-java) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.5.0) + loofah (~> 2.19, >= 2.19.1) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rake (13.1.0) rake-compiler (1.2.6) rake + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -92,14 +225,28 @@ GEM simplecov_json_formatter (0.1.4) spoon (0.0.6) ffi + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0-java) thor (1.2.2) + timeout (0.4.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) warning (1.3.0) webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) + websocket-driver (0.7.6-java) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS universal-java-1.8 @@ -108,7 +255,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -116,11 +262,13 @@ DEPENDENCIES ffi (~> 1.16.3) graphql (~> 2.0.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-debugger-jruby + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -130,9 +278,9 @@ DEPENDENCIES rspec_junit_formatter (>= 0.5.1) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_http.gemfile b/gemfiles/jruby_9.2_http.gemfile index a913c7573fc..b1dd9d1f588 100644 --- a/gemfiles/jruby_9.2_http.gemfile +++ b/gemfiles/jruby_9.2_http.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "ethon", "< 0.15.0" @@ -34,7 +32,6 @@ gem "faraday" gem "http", "~> 4" gem "httpclient" gem "rest-client" -gem "stripe", "~> 7.0" gem "typhoeus" group :check do diff --git a/gemfiles/jruby_9.2_http.gemfile.lock b/gemfiles/jruby_9.2_http.gemfile.lock index 49faf4adac6..1372592a504 100644 --- a/gemfiles/jruby_9.2_http.gemfile.lock +++ b/gemfiles/jruby_9.2_http.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -28,13 +28,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -85,7 +84,7 @@ GEM httpclient (2.8.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -143,7 +142,6 @@ GEM simplecov_json_formatter (0.1.4) spoon (0.0.6) ffi - stripe (7.1.0) strscan (3.1.0-java) thor (1.2.2) typhoeus (1.4.0) @@ -154,7 +152,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-1.8 @@ -163,7 +160,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -190,11 +186,9 @@ DEPENDENCIES rspec_junit_formatter (>= 0.5.1) simplecov! simplecov-cobertura (~> 2.1.0) - stripe (~> 7.0) typhoeus warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_opensearch_2.gemfile b/gemfiles/jruby_9.2_opensearch_2.gemfile index 68929b864c0..9ddf7381cc2 100644 --- a/gemfiles/jruby_9.2_opensearch_2.gemfile +++ b/gemfiles/jruby_9.2_opensearch_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "opensearch-ruby", "~> 2" diff --git a/gemfiles/jruby_9.2_opensearch_2.gemfile.lock b/gemfiles/jruby_9.2_opensearch_2.gemfile.lock index a5d3860617a..68d43ed2356 100644 --- a/gemfiles/jruby_9.2_opensearch_2.gemfile.lock +++ b/gemfiles/jruby_9.2_opensearch_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -66,7 +65,7 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -132,7 +131,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-1.8 @@ -141,7 +139,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -165,7 +162,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_opensearch_3.gemfile b/gemfiles/jruby_9.2_opensearch_3.gemfile index 59ad6b07f2d..7020646b8b3 100644 --- a/gemfiles/jruby_9.2_opensearch_3.gemfile +++ b/gemfiles/jruby_9.2_opensearch_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "opensearch-ruby", "~> 3" diff --git a/gemfiles/jruby_9.2_opensearch_3.gemfile.lock b/gemfiles/jruby_9.2_opensearch_3.gemfile.lock index cc8123c3ccb..8e6a115fbb0 100644 --- a/gemfiles/jruby_9.2_opensearch_3.gemfile.lock +++ b/gemfiles/jruby_9.2_opensearch_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -66,7 +65,7 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -127,7 +126,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-1.8 @@ -136,7 +134,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -160,7 +157,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_opensearch_latest.gemfile b/gemfiles/jruby_9.2_opensearch_latest.gemfile new file mode 100644 index 00000000000..e1cb6ac1409 --- /dev/null +++ b/gemfiles/jruby_9.2_opensearch_latest.gemfile @@ -0,0 +1,39 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "opensearch-ruby" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.2_opensearch_latest.gemfile.lock b/gemfiles/jruby_9.2_opensearch_latest.gemfile.lock new file mode 100644 index 00000000000..d9d838d4a3b --- /dev/null +++ b/gemfiles/jruby_9.2_opensearch_latest.gemfile.lock @@ -0,0 +1,162 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + faraday (1.10.4) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.2) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + ffi (1.16.3-java) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + multi_json (1.15.0) + multipart-post (2.4.1) + opensearch-ruby (3.4.0) + faraday (>= 1.0, < 3) + multi_json (>= 1.0) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + ruby-debug-base (0.11.0-java) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-1.8 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + opensearch-ruby + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.2_rack_1.gemfile b/gemfiles/jruby_9.2_rack_1.gemfile index b0a27a362a7..de86c62668c 100644 --- a/gemfiles/jruby_9.2_rack_1.gemfile +++ b/gemfiles/jruby_9.2_rack_1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rack", "~> 1" diff --git a/gemfiles/jruby_9.2_rack_1.gemfile.lock b/gemfiles/jruby_9.2_rack_1.gemfile.lock index 1ffd3365251..17b17effe2e 100644 --- a/gemfiles/jruby_9.2_rack_1.gemfile.lock +++ b/gemfiles/jruby_9.2_rack_1.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -28,13 +28,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -42,7 +41,7 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -101,7 +100,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-1.8 @@ -110,7 +108,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -136,7 +133,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rack_2.gemfile b/gemfiles/jruby_9.2_rack_2.gemfile index 2bcc2a54100..1e1593bfaeb 100644 --- a/gemfiles/jruby_9.2_rack_2.gemfile +++ b/gemfiles/jruby_9.2_rack_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rack", "~> 2" diff --git a/gemfiles/jruby_9.2_rack_2.gemfile.lock b/gemfiles/jruby_9.2_rack_2.gemfile.lock index b3141126ee6..7b1aee145f9 100644 --- a/gemfiles/jruby_9.2_rack_2.gemfile.lock +++ b/gemfiles/jruby_9.2_rack_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -28,13 +28,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -42,7 +41,7 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -101,7 +100,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-1.8 @@ -110,7 +108,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -136,7 +133,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rack_3.gemfile b/gemfiles/jruby_9.2_rack_3.gemfile index 34d7e7ed3b8..585a359e724 100644 --- a/gemfiles/jruby_9.2_rack_3.gemfile +++ b/gemfiles/jruby_9.2_rack_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rack", "~> 3" diff --git a/gemfiles/jruby_9.2_rack_3.gemfile.lock b/gemfiles/jruby_9.2_rack_3.gemfile.lock index 4a725bfb6b8..2613810969a 100644 --- a/gemfiles/jruby_9.2_rack_3.gemfile.lock +++ b/gemfiles/jruby_9.2_rack_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -28,13 +28,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -42,7 +41,7 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -101,7 +100,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-1.8 @@ -110,7 +108,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -136,7 +133,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rack_latest.gemfile b/gemfiles/jruby_9.2_rack_latest.gemfile new file mode 100644 index 00000000000..3605c6f3ea3 --- /dev/null +++ b/gemfiles/jruby_9.2_rack_latest.gemfile @@ -0,0 +1,41 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "rack" +gem "rack-contrib" +gem "rack-test" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.2_rack_latest.gemfile.lock b/gemfiles/jruby_9.2_rack_latest.gemfile.lock new file mode 100644 index 00000000000..3f2a70a8932 --- /dev/null +++ b/gemfiles/jruby_9.2_rack_latest.gemfile.lock @@ -0,0 +1,140 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.2) + ffi (1.16.3-java) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (4.0.7) + rack (3.1.8) + rack-contrib (2.5.0) + rack (< 4) + rack-test (2.1.0) + rack (>= 1.3) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + ruby-debug-base (0.11.0-java) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-1.8 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rack + rack-contrib + rack-test + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails5_mysql2.gemfile b/gemfiles/jruby_9.2_rails5_mysql2.gemfile index 3c9ec2b7817..df4f37fde30 100644 --- a/gemfiles/jruby_9.2_rails5_mysql2.gemfile +++ b/gemfiles/jruby_9.2_rails5_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 5.2.1" diff --git a/gemfiles/jruby_9.2_rails5_mysql2.gemfile.lock b/gemfiles/jruby_9.2_rails5_mysql2.gemfile.lock index 554254f76b3..226ea844b40 100644 --- a/gemfiles/jruby_9.2_rails5_mysql2.gemfile.lock +++ b/gemfiles/jruby_9.2_rails5_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -82,7 +82,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -96,7 +96,7 @@ GEM jdbc-mysql (8.0.27) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -206,12 +206,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-1.8 @@ -221,7 +218,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -249,7 +245,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails5_postgres.gemfile b/gemfiles/jruby_9.2_rails5_postgres.gemfile index b45e70eb8b4..b698c9aeb4b 100644 --- a/gemfiles/jruby_9.2_rails5_postgres.gemfile +++ b/gemfiles/jruby_9.2_rails5_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 5.2.1" diff --git a/gemfiles/jruby_9.2_rails5_postgres.gemfile.lock b/gemfiles/jruby_9.2_rails5_postgres.gemfile.lock index 579cc323aad..5706cadc15c 100644 --- a/gemfiles/jruby_9.2_rails5_postgres.gemfile.lock +++ b/gemfiles/jruby_9.2_rails5_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -82,7 +82,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest (3.1.1-java) docile (1.4.0) @@ -98,7 +98,7 @@ GEM jdbc-postgres (42.2.25) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -225,12 +225,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-1.8 @@ -240,7 +237,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -267,7 +263,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails5_postgres_redis.gemfile b/gemfiles/jruby_9.2_rails5_postgres_redis.gemfile index b5d21517d4d..380039a7b69 100644 --- a/gemfiles/jruby_9.2_rails5_postgres_redis.gemfile +++ b/gemfiles/jruby_9.2_rails5_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 5.2.1" diff --git a/gemfiles/jruby_9.2_rails5_postgres_redis.gemfile.lock b/gemfiles/jruby_9.2_rails5_postgres_redis.gemfile.lock index 749663e7bd8..eefcc54ba28 100644 --- a/gemfiles/jruby_9.2_rails5_postgres_redis.gemfile.lock +++ b/gemfiles/jruby_9.2_rails5_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -83,7 +83,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest (3.1.1-java) docile (1.4.0) @@ -99,7 +99,7 @@ GEM jdbc-postgres (42.2.25) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -230,12 +230,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-1.8 @@ -245,7 +242,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -273,7 +269,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails5_postgres_redis_activesupport.gemfile b/gemfiles/jruby_9.2_rails5_postgres_redis_activesupport.gemfile index 7106703db23..b8ae24db064 100644 --- a/gemfiles/jruby_9.2_rails5_postgres_redis_activesupport.gemfile +++ b/gemfiles/jruby_9.2_rails5_postgres_redis_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 5.2.1" diff --git a/gemfiles/jruby_9.2_rails5_postgres_redis_activesupport.gemfile.lock b/gemfiles/jruby_9.2_rails5_postgres_redis_activesupport.gemfile.lock index bab2ebac97b..b6343514c30 100644 --- a/gemfiles/jruby_9.2_rails5_postgres_redis_activesupport.gemfile.lock +++ b/gemfiles/jruby_9.2_rails5_postgres_redis_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -82,7 +82,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest (3.1.1-java) docile (1.4.0) @@ -98,7 +98,7 @@ GEM jdbc-postgres (42.2.25) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -242,12 +242,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-1.8 @@ -257,7 +254,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -287,7 +283,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails5_postgres_sidekiq.gemfile b/gemfiles/jruby_9.2_rails5_postgres_sidekiq.gemfile index c16367531f4..60138976d49 100644 --- a/gemfiles/jruby_9.2_rails5_postgres_sidekiq.gemfile +++ b/gemfiles/jruby_9.2_rails5_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 5.2.1" diff --git a/gemfiles/jruby_9.2_rails5_postgres_sidekiq.gemfile.lock b/gemfiles/jruby_9.2_rails5_postgres_sidekiq.gemfile.lock index e8baebdd556..b5a28aec9d4 100644 --- a/gemfiles/jruby_9.2_rails5_postgres_sidekiq.gemfile.lock +++ b/gemfiles/jruby_9.2_rails5_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -83,7 +83,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest (3.1.1-java) docile (1.4.0) @@ -99,7 +99,7 @@ GEM jdbc-postgres (42.2.25) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -231,12 +231,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-1.8 @@ -247,7 +244,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -275,7 +271,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails5_semantic_logger.gemfile b/gemfiles/jruby_9.2_rails5_semantic_logger.gemfile index e661a8ba8d5..b12cdefae79 100644 --- a/gemfiles/jruby_9.2_rails5_semantic_logger.gemfile +++ b/gemfiles/jruby_9.2_rails5_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 5.2.1" diff --git a/gemfiles/jruby_9.2_rails5_semantic_logger.gemfile.lock b/gemfiles/jruby_9.2_rails5_semantic_logger.gemfile.lock index 54f06ed67fd..04796985fde 100644 --- a/gemfiles/jruby_9.2_rails5_semantic_logger.gemfile.lock +++ b/gemfiles/jruby_9.2_rails5_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -82,7 +82,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest (3.1.1-java) docile (1.4.0) @@ -98,7 +98,7 @@ GEM jdbc-postgres (42.2.25) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) loofah (2.19.1) @@ -224,12 +224,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-1.8 @@ -239,7 +236,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -266,7 +262,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails61_mysql2.gemfile b/gemfiles/jruby_9.2_rails61_mysql2.gemfile index cede38d2a51..9332d46de2b 100644 --- a/gemfiles/jruby_9.2_rails61_mysql2.gemfile +++ b/gemfiles/jruby_9.2_rails61_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 6.1.0" diff --git a/gemfiles/jruby_9.2_rails61_mysql2.gemfile.lock b/gemfiles/jruby_9.2_rails61_mysql2.gemfile.lock index 623c1d93ed7..461f9254d91 100644 --- a/gemfiles/jruby_9.2_rails61_mysql2.gemfile.lock +++ b/gemfiles/jruby_9.2_rails61_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -99,7 +99,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -113,7 +113,7 @@ GEM jdbc-mysql (8.0.27) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -224,12 +224,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -240,7 +237,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -268,7 +264,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails61_postgres.gemfile b/gemfiles/jruby_9.2_rails61_postgres.gemfile index 33ae10d0619..655ed092f7d 100644 --- a/gemfiles/jruby_9.2_rails61_postgres.gemfile +++ b/gemfiles/jruby_9.2_rails61_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 6.1.0" diff --git a/gemfiles/jruby_9.2_rails61_postgres.gemfile.lock b/gemfiles/jruby_9.2_rails61_postgres.gemfile.lock index fa4ea8ec14d..38b454040af 100644 --- a/gemfiles/jruby_9.2_rails61_postgres.gemfile.lock +++ b/gemfiles/jruby_9.2_rails61_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -99,7 +99,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest (3.1.1-java) docile (1.4.0) @@ -115,7 +115,7 @@ GEM jdbc-postgres (42.2.25) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -243,12 +243,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -259,7 +256,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -286,7 +282,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails61_postgres_redis.gemfile b/gemfiles/jruby_9.2_rails61_postgres_redis.gemfile index 9f53410e432..ba4e7a6f23f 100644 --- a/gemfiles/jruby_9.2_rails61_postgres_redis.gemfile +++ b/gemfiles/jruby_9.2_rails61_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 6.1.0" diff --git a/gemfiles/jruby_9.2_rails61_postgres_redis.gemfile.lock b/gemfiles/jruby_9.2_rails61_postgres_redis.gemfile.lock index cbbc308be01..70e9fe1a633 100644 --- a/gemfiles/jruby_9.2_rails61_postgres_redis.gemfile.lock +++ b/gemfiles/jruby_9.2_rails61_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -100,7 +100,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest (3.1.1-java) docile (1.4.0) @@ -116,7 +116,7 @@ GEM jdbc-postgres (42.2.25) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -248,12 +248,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -264,7 +261,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -292,7 +288,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails61_postgres_sidekiq.gemfile b/gemfiles/jruby_9.2_rails61_postgres_sidekiq.gemfile index 30748cf72ef..43789485c44 100644 --- a/gemfiles/jruby_9.2_rails61_postgres_sidekiq.gemfile +++ b/gemfiles/jruby_9.2_rails61_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 6.1.0" diff --git a/gemfiles/jruby_9.2_rails61_postgres_sidekiq.gemfile.lock b/gemfiles/jruby_9.2_rails61_postgres_sidekiq.gemfile.lock index 4ac20d600e7..c3d1bc73e08 100644 --- a/gemfiles/jruby_9.2_rails61_postgres_sidekiq.gemfile.lock +++ b/gemfiles/jruby_9.2_rails61_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -100,7 +100,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest (3.1.1-java) docile (1.4.0) @@ -116,7 +116,7 @@ GEM jdbc-postgres (42.2.25) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -249,12 +249,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -265,7 +262,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -293,7 +289,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails61_semantic_logger.gemfile b/gemfiles/jruby_9.2_rails61_semantic_logger.gemfile index 401415cb79e..677cd4136da 100644 --- a/gemfiles/jruby_9.2_rails61_semantic_logger.gemfile +++ b/gemfiles/jruby_9.2_rails61_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 6.1.0" diff --git a/gemfiles/jruby_9.2_rails61_semantic_logger.gemfile.lock b/gemfiles/jruby_9.2_rails61_semantic_logger.gemfile.lock index 3ee420d4031..fb6b2cf61b0 100644 --- a/gemfiles/jruby_9.2_rails61_semantic_logger.gemfile.lock +++ b/gemfiles/jruby_9.2_rails61_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -99,7 +99,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest (3.1.1-java) docile (1.4.0) @@ -115,7 +115,7 @@ GEM jdbc-postgres (42.2.25) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) loofah (2.19.1) @@ -242,12 +242,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -258,7 +255,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -285,7 +281,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails6_mysql2.gemfile b/gemfiles/jruby_9.2_rails6_mysql2.gemfile index a9e0b211b6a..c0a2330000b 100644 --- a/gemfiles/jruby_9.2_rails6_mysql2.gemfile +++ b/gemfiles/jruby_9.2_rails6_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 6.0.0" diff --git a/gemfiles/jruby_9.2_rails6_mysql2.gemfile.lock b/gemfiles/jruby_9.2_rails6_mysql2.gemfile.lock index 780725c984c..f847f1ce6a2 100644 --- a/gemfiles/jruby_9.2_rails6_mysql2.gemfile.lock +++ b/gemfiles/jruby_9.2_rails6_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -95,7 +95,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -109,7 +109,7 @@ GEM jdbc-mysql (8.0.27) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -221,12 +221,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -237,7 +234,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -265,7 +261,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails6_postgres.gemfile b/gemfiles/jruby_9.2_rails6_postgres.gemfile index c4191978199..d592509cf17 100644 --- a/gemfiles/jruby_9.2_rails6_postgres.gemfile +++ b/gemfiles/jruby_9.2_rails6_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 6.0.0" diff --git a/gemfiles/jruby_9.2_rails6_postgres.gemfile.lock b/gemfiles/jruby_9.2_rails6_postgres.gemfile.lock index dfd3266f408..073315794ec 100644 --- a/gemfiles/jruby_9.2_rails6_postgres.gemfile.lock +++ b/gemfiles/jruby_9.2_rails6_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -95,7 +95,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest (3.1.1-java) docile (1.4.0) @@ -111,7 +111,7 @@ GEM jdbc-postgres (42.2.25) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -240,12 +240,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -256,7 +253,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -283,7 +279,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails6_postgres_redis.gemfile b/gemfiles/jruby_9.2_rails6_postgres_redis.gemfile index fb8ef21d5d4..e222d9d5aa6 100644 --- a/gemfiles/jruby_9.2_rails6_postgres_redis.gemfile +++ b/gemfiles/jruby_9.2_rails6_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 6.0.0" diff --git a/gemfiles/jruby_9.2_rails6_postgres_redis.gemfile.lock b/gemfiles/jruby_9.2_rails6_postgres_redis.gemfile.lock index 59e0c7d62d6..73fc573a48e 100644 --- a/gemfiles/jruby_9.2_rails6_postgres_redis.gemfile.lock +++ b/gemfiles/jruby_9.2_rails6_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -96,7 +96,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest (3.1.1-java) docile (1.4.0) @@ -112,7 +112,7 @@ GEM jdbc-postgres (42.2.25) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -245,12 +245,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -261,7 +258,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -289,7 +285,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails6_postgres_redis_activesupport.gemfile b/gemfiles/jruby_9.2_rails6_postgres_redis_activesupport.gemfile index d4c00d427ef..e4115f66ed3 100644 --- a/gemfiles/jruby_9.2_rails6_postgres_redis_activesupport.gemfile +++ b/gemfiles/jruby_9.2_rails6_postgres_redis_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 6.0.0" diff --git a/gemfiles/jruby_9.2_rails6_postgres_redis_activesupport.gemfile.lock b/gemfiles/jruby_9.2_rails6_postgres_redis_activesupport.gemfile.lock index a3a0233ea9d..db2b5dfc4e6 100644 --- a/gemfiles/jruby_9.2_rails6_postgres_redis_activesupport.gemfile.lock +++ b/gemfiles/jruby_9.2_rails6_postgres_redis_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -95,7 +95,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest (3.1.1-java) docile (1.4.0) @@ -111,7 +111,7 @@ GEM jdbc-postgres (42.2.25) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -257,12 +257,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -273,7 +270,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -303,7 +299,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails6_postgres_sidekiq.gemfile b/gemfiles/jruby_9.2_rails6_postgres_sidekiq.gemfile index 3a98ece9b7c..8cb84eb143e 100644 --- a/gemfiles/jruby_9.2_rails6_postgres_sidekiq.gemfile +++ b/gemfiles/jruby_9.2_rails6_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 6.0.0" diff --git a/gemfiles/jruby_9.2_rails6_postgres_sidekiq.gemfile.lock b/gemfiles/jruby_9.2_rails6_postgres_sidekiq.gemfile.lock index 4a4b875e276..6df697977d1 100644 --- a/gemfiles/jruby_9.2_rails6_postgres_sidekiq.gemfile.lock +++ b/gemfiles/jruby_9.2_rails6_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -96,7 +96,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest (3.1.1-java) docile (1.4.0) @@ -112,7 +112,7 @@ GEM jdbc-postgres (42.2.25) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -246,12 +246,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -263,7 +260,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -291,7 +287,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_rails6_semantic_logger.gemfile b/gemfiles/jruby_9.2_rails6_semantic_logger.gemfile index 25802191513..fa2aa0eef1a 100644 --- a/gemfiles/jruby_9.2_rails6_semantic_logger.gemfile +++ b/gemfiles/jruby_9.2_rails6_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "rails", "~> 6.0.0" diff --git a/gemfiles/jruby_9.2_rails6_semantic_logger.gemfile.lock b/gemfiles/jruby_9.2_rails6_semantic_logger.gemfile.lock index 1652faf92fc..15f9dd790c4 100644 --- a/gemfiles/jruby_9.2_rails6_semantic_logger.gemfile.lock +++ b/gemfiles/jruby_9.2_rails6_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -95,7 +95,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest (3.1.1-java) docile (1.4.0) @@ -111,7 +111,7 @@ GEM jdbc-postgres (42.2.25) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) loofah (2.19.1) @@ -239,12 +239,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -255,7 +252,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -282,7 +278,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_redis_3.gemfile b/gemfiles/jruby_9.2_redis_3.gemfile index 2b7a474dc02..1fd7ea75954 100644 --- a/gemfiles/jruby_9.2_redis_3.gemfile +++ b/gemfiles/jruby_9.2_redis_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "redis", "~> 3" diff --git a/gemfiles/jruby_9.2_redis_3.gemfile.lock b/gemfiles/jruby_9.2_redis_3.gemfile.lock index dd77bdb6780..fda1ae86407 100644 --- a/gemfiles/jruby_9.2_redis_3.gemfile.lock +++ b/gemfiles/jruby_9.2_redis_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -28,13 +28,12 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.1.10) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -42,7 +41,7 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -97,9 +96,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-1.8 @@ -108,7 +104,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -132,7 +127,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_redis_4.gemfile b/gemfiles/jruby_9.2_redis_4.gemfile index 942ab558de4..0dd8812a676 100644 --- a/gemfiles/jruby_9.2_redis_4.gemfile +++ b/gemfiles/jruby_9.2_redis_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "redis", "~> 4" diff --git a/gemfiles/jruby_9.2_redis_4.gemfile.lock b/gemfiles/jruby_9.2_redis_4.gemfile.lock index 7c5b204f0ba..969638d45e4 100644 --- a/gemfiles/jruby_9.2_redis_4.gemfile.lock +++ b/gemfiles/jruby_9.2_redis_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -28,13 +28,12 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.1.10) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -42,7 +41,7 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -97,9 +96,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-1.8 @@ -108,7 +104,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -132,7 +127,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_redis_5.gemfile b/gemfiles/jruby_9.2_redis_5.gemfile index 76c1cab09e3..12fb3c2cc53 100644 --- a/gemfiles/jruby_9.2_redis_5.gemfile +++ b/gemfiles/jruby_9.2_redis_5.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "redis", "~> 5" diff --git a/gemfiles/jruby_9.2_redis_5.gemfile.lock b/gemfiles/jruby_9.2_redis_5.gemfile.lock index 4fa8a77c601..3137a82315b 100644 --- a/gemfiles/jruby_9.2_redis_5.gemfile.lock +++ b/gemfiles/jruby_9.2_redis_5.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -28,14 +28,13 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.1.10) connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -43,7 +42,7 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -101,9 +100,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-1.8 @@ -112,7 +108,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -136,7 +131,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_relational_db.gemfile b/gemfiles/jruby_9.2_relational_db.gemfile index 9bada5f0073..c2607e504a7 100644 --- a/gemfiles/jruby_9.2_relational_db.gemfile +++ b/gemfiles/jruby_9.2_relational_db.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "activerecord", "~> 5" @@ -34,7 +32,7 @@ gem "delayed_job_active_record" gem "makara" gem "activerecord-jdbcmysql-adapter", ">= 52", platform: :jruby gem "activerecord-jdbcpostgresql-adapter", ">= 52", platform: :jruby -gem "sequel", "~> 5.54.0" +gem "sequel" gem "activerecord-jdbcsqlite3-adapter", ">= 52", platform: :jruby group :check do diff --git a/gemfiles/jruby_9.2_relational_db.gemfile.lock b/gemfiles/jruby_9.2_relational_db.gemfile.lock index ceb0209876e..38b9cd49c33 100644 --- a/gemfiles/jruby_9.2_relational_db.gemfile.lock +++ b/gemfiles/jruby_9.2_relational_db.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -51,13 +51,13 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) + bigdecimal (3.1.8-java) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) delayed_job (4.1.11) activesupport (>= 3.0, < 8.0) delayed_job_active_record (4.1.7) @@ -75,7 +75,7 @@ GEM jdbc-sqlite3 (3.28.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) makara (0.5.1) @@ -118,7 +118,8 @@ GEM rspec_junit_formatter (0.6.0) rspec-core (>= 2, < 4, != 2.12.0) ruby-debug-base (0.11.0-java) - sequel (5.54.0) + sequel (5.83.1) + bigdecimal simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -136,7 +137,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-1.8 @@ -149,7 +149,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -171,12 +170,11 @@ DEPENDENCIES rspec-collection_matchers (~> 1.1) rspec-wait (~> 0) rspec_junit_formatter (>= 0.5.1) - sequel (~> 5.54.0) + sequel simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_resque2_redis3.gemfile b/gemfiles/jruby_9.2_resque2_redis3.gemfile index 9c874178276..a5585cd5fb3 100644 --- a/gemfiles/jruby_9.2_resque2_redis3.gemfile +++ b/gemfiles/jruby_9.2_resque2_redis3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "redis", "< 4.0" diff --git a/gemfiles/jruby_9.2_resque2_redis3.gemfile.lock b/gemfiles/jruby_9.2_resque2_redis3.gemfile.lock index 6c393e3324f..9de7ee05894 100644 --- a/gemfiles/jruby_9.2_resque2_redis3.gemfile.lock +++ b/gemfiles/jruby_9.2_resque2_redis3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -28,13 +28,12 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.1.10) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -42,7 +41,7 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -118,9 +117,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-1.8 @@ -129,7 +125,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -154,7 +149,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_resque2_redis4.gemfile b/gemfiles/jruby_9.2_resque2_redis4.gemfile index a7d6ec7d53e..403aa44e881 100644 --- a/gemfiles/jruby_9.2_resque2_redis4.gemfile +++ b/gemfiles/jruby_9.2_resque2_redis4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "redis", ">= 4.0" diff --git a/gemfiles/jruby_9.2_resque2_redis4.gemfile.lock b/gemfiles/jruby_9.2_resque2_redis4.gemfile.lock index ad4860af505..a9ca7c1f909 100644 --- a/gemfiles/jruby_9.2_resque2_redis4.gemfile.lock +++ b/gemfiles/jruby_9.2_resque2_redis4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -28,14 +28,13 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.1.10) connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -43,7 +42,7 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -122,9 +121,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-1.8 @@ -133,7 +129,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -158,7 +153,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_sinatra_2.gemfile b/gemfiles/jruby_9.2_sinatra_2.gemfile index d361ca4a895..d9f61836a33 100644 --- a/gemfiles/jruby_9.2_sinatra_2.gemfile +++ b/gemfiles/jruby_9.2_sinatra_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false gem "sinatra", "~> 2" diff --git a/gemfiles/jruby_9.2_sinatra_2.gemfile.lock b/gemfiles/jruby_9.2_sinatra_2.gemfile.lock index 69a6ca4364b..89f4651a8a4 100644 --- a/gemfiles/jruby_9.2_sinatra_2.gemfile.lock +++ b/gemfiles/jruby_9.2_sinatra_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,14 +30,13 @@ GEM benchmark-memory (0.1.2) memory_profiler (~> 0.9) bigdecimal (3.1.7-java) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.1) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -45,7 +44,7 @@ GEM hashdiff (1.1.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -116,7 +115,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.36) PLATFORMS universal-java-1.8 @@ -125,7 +123,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -151,7 +148,6 @@ DEPENDENCIES sinatra (~> 2) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.2_stripe_10.gemfile b/gemfiles/jruby_9.2_stripe_10.gemfile new file mode 100644 index 00000000000..dfbb783c160 --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_10.gemfile @@ -0,0 +1,39 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 10" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.2_stripe_10.gemfile.lock b/gemfiles/jruby_9.2_stripe_10.gemfile.lock new file mode 100644 index 00000000000..6a8a388c89c --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_10.gemfile.lock @@ -0,0 +1,136 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + ruby-debug-base (0.11.0-java) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (10.15.0) + strscan (3.1.0-java) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-1.8 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 10) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.2_stripe_11.gemfile b/gemfiles/jruby_9.2_stripe_11.gemfile new file mode 100644 index 00000000000..b1c0a45aaa7 --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_11.gemfile @@ -0,0 +1,39 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.2_stripe_11.gemfile.lock b/gemfiles/jruby_9.2_stripe_11.gemfile.lock new file mode 100644 index 00000000000..d24f4449bc4 --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_11.gemfile.lock @@ -0,0 +1,136 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + ruby-debug-base (0.11.0-java) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (11.7.0) + strscan (3.1.0-java) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-1.8 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 11) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.2_stripe_12.gemfile b/gemfiles/jruby_9.2_stripe_12.gemfile new file mode 100644 index 00000000000..be5056baa9d --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_12.gemfile @@ -0,0 +1,39 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 12" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.2_stripe_12.gemfile.lock b/gemfiles/jruby_9.2_stripe_12.gemfile.lock new file mode 100644 index 00000000000..268116cc909 --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_12.gemfile.lock @@ -0,0 +1,136 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + ruby-debug-base (0.11.0-java) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (12.5.0) + strscan (3.1.0-java) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-1.8 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 12) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.2_stripe_7.gemfile b/gemfiles/jruby_9.2_stripe_7.gemfile new file mode 100644 index 00000000000..d70db2a8804 --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_7.gemfile @@ -0,0 +1,39 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 7" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.2_stripe_7.gemfile.lock b/gemfiles/jruby_9.2_stripe_7.gemfile.lock new file mode 100644 index 00000000000..7c2197ddba2 --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_7.gemfile.lock @@ -0,0 +1,136 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + ruby-debug-base (0.11.0-java) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (7.1.0) + strscan (3.1.0-java) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-1.8 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 7) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.2_stripe_8.gemfile b/gemfiles/jruby_9.2_stripe_8.gemfile new file mode 100644 index 00000000000..6f813413974 --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_8.gemfile @@ -0,0 +1,39 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 8" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.2_stripe_8.gemfile.lock b/gemfiles/jruby_9.2_stripe_8.gemfile.lock new file mode 100644 index 00000000000..1410136bf43 --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_8.gemfile.lock @@ -0,0 +1,136 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + ruby-debug-base (0.11.0-java) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (8.7.0) + strscan (3.1.0-java) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-1.8 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 8) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.2_stripe_9.gemfile b/gemfiles/jruby_9.2_stripe_9.gemfile new file mode 100644 index 00000000000..ec516796e51 --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_9.gemfile @@ -0,0 +1,39 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 9" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.2_stripe_9.gemfile.lock b/gemfiles/jruby_9.2_stripe_9.gemfile.lock new file mode 100644 index 00000000000..7b7f94e27f3 --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_9.gemfile.lock @@ -0,0 +1,136 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + ruby-debug-base (0.11.0-java) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (9.4.0) + strscan (3.1.0-java) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-1.8 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 9) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.2_stripe_latest.gemfile b/gemfiles/jruby_9.2_stripe_latest.gemfile new file mode 100644 index 00000000000..6eb8d85f229 --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_latest.gemfile @@ -0,0 +1,39 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.2_stripe_latest.gemfile.lock b/gemfiles/jruby_9.2_stripe_latest.gemfile.lock new file mode 100644 index 00000000000..328d238248f --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_latest.gemfile.lock @@ -0,0 +1,134 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + ruby-debug-base (0.11.0-java) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (13.0.1) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-1.8 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.2_stripe_min.gemfile b/gemfiles/jruby_9.2_stripe_min.gemfile new file mode 100644 index 00000000000..4ac41575e1c --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_min.gemfile @@ -0,0 +1,39 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "= 5.15.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.2_stripe_min.gemfile.lock b/gemfiles/jruby_9.2_stripe_min.gemfile.lock new file mode 100644 index 00000000000..4b109a2bea7 --- /dev/null +++ b/gemfiles/jruby_9.2_stripe_min.gemfile.lock @@ -0,0 +1,134 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + ruby-debug-base (0.11.0-java) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (5.15.0) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-1.8 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (= 5.15.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.3_activesupport.gemfile b/gemfiles/jruby_9.3_activesupport.gemfile index 63b2ec1ad03..cafccaec9f7 100644 --- a/gemfiles/jruby_9.3_activesupport.gemfile +++ b/gemfiles/jruby_9.3_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_activesupport.gemfile.lock b/gemfiles/jruby_9.3_activesupport.gemfile.lock index 8365f4e7c39..b769f49f19b 100644 --- a/gemfiles/jruby_9.3_activesupport.gemfile.lock +++ b/gemfiles/jruby_9.3_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -64,7 +64,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) @@ -105,7 +105,7 @@ GEM addressable (>= 2.4) jsonapi-renderer (0.2.2) king_konf (1.0.1) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.13.0) @@ -238,7 +238,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) zeitwerk (2.6.11) PLATFORMS @@ -252,7 +251,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -283,7 +281,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_aws.gemfile b/gemfiles/jruby_9.3_aws.gemfile index 88aba983272..b3b4d1216e1 100644 --- a/gemfiles/jruby_9.3_aws.gemfile +++ b/gemfiles/jruby_9.3_aws.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", "= 3.2.6" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_aws.gemfile.lock b/gemfiles/jruby_9.3_aws.gemfile.lock index 6d58487ef20..29d2547ca7e 100644 --- a/gemfiles/jruby_9.3_aws.gemfile.lock +++ b/gemfiles/jruby_9.3_aws.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -1450,13 +1450,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.0) @@ -1466,7 +1465,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -1553,7 +1552,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-11 @@ -1563,7 +1561,6 @@ DEPENDENCIES aws-sdk benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -1591,7 +1588,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_contrib.gemfile b/gemfiles/jruby_9.3_contrib.gemfile index 57fa1dda951..d4987898023 100644 --- a/gemfiles/jruby_9.3_contrib.gemfile +++ b/gemfiles/jruby_9.3_contrib.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_contrib.gemfile.lock b/gemfiles/jruby_9.3_contrib.gemfile.lock index fa6f35d33e4..3f9b0324abd 100644 --- a/gemfiles/jruby_9.3_contrib.gemfile.lock +++ b/gemfiles/jruby_9.3_contrib.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,7 +31,6 @@ GEM benchmark-memory (0.1.2) memory_profiler (~> 0.9) bson (4.15.0-java) - builder (3.2.4) bunny (2.20.2) amq-protocol (~> 2.3, >= 2.3.1) sorted_set (~> 1, >= 1.0.2) @@ -42,7 +41,7 @@ GEM crack (0.4.5) rexml dalli (3.2.3) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -51,7 +50,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -183,9 +182,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -194,7 +190,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (>= 3.0.0) @@ -232,7 +227,6 @@ DEPENDENCIES sucker_punch warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_contrib_old.gemfile b/gemfiles/jruby_9.3_contrib_old.gemfile index e655e277513..96031b3dc94 100644 --- a/gemfiles/jruby_9.3_contrib_old.gemfile +++ b/gemfiles/jruby_9.3_contrib_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_contrib_old.gemfile.lock b/gemfiles/jruby_9.3_contrib_old.gemfile.lock index 6a4fe25a2f0..632cdc08a55 100644 --- a/gemfiles/jruby_9.3_contrib_old.gemfile.lock +++ b/gemfiles/jruby_9.3_contrib_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,14 +29,13 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml dalli (2.7.11) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -49,7 +48,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -142,9 +141,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -153,7 +149,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (< 3.0.0) @@ -185,7 +180,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_core_old.gemfile b/gemfiles/jruby_9.3_core_old.gemfile index e58550f5526..ef4a2369ded 100644 --- a/gemfiles/jruby_9.3_core_old.gemfile +++ b/gemfiles/jruby_9.3_core_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_core_old.gemfile.lock b/gemfiles/jruby_9.3_core_old.gemfile.lock index c8ef10f6853..e57ce91c2fc 100644 --- a/gemfiles/jruby_9.3_core_old.gemfile.lock +++ b/gemfiles/jruby_9.3_core_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (4.8.3) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -129,9 +128,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -140,7 +136,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -167,7 +162,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_elasticsearch_7.gemfile b/gemfiles/jruby_9.3_elasticsearch_7.gemfile index da29f61b9f8..79d269613b6 100644 --- a/gemfiles/jruby_9.3_elasticsearch_7.gemfile +++ b/gemfiles/jruby_9.3_elasticsearch_7.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_elasticsearch_7.gemfile.lock b/gemfiles/jruby_9.3_elasticsearch_7.gemfile.lock index 0252f2785be..2f8e05c9ede 100644 --- a/gemfiles/jruby_9.3_elasticsearch_7.gemfile.lock +++ b/gemfiles/jruby_9.3_elasticsearch_7.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,13 +30,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -76,7 +75,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -165,7 +164,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-11 @@ -174,7 +172,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -202,7 +199,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_elasticsearch_8.gemfile b/gemfiles/jruby_9.3_elasticsearch_8.gemfile index 9d635f9500b..18ec3d626b8 100644 --- a/gemfiles/jruby_9.3_elasticsearch_8.gemfile +++ b/gemfiles/jruby_9.3_elasticsearch_8.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_elasticsearch_8.gemfile.lock b/gemfiles/jruby_9.3_elasticsearch_8.gemfile.lock index 3e4605129d4..1e360d8c694 100644 --- a/gemfiles/jruby_9.3_elasticsearch_8.gemfile.lock +++ b/gemfiles/jruby_9.3_elasticsearch_8.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -59,7 +58,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -147,7 +146,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-11 @@ -156,7 +154,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -184,7 +181,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_elasticsearch_latest.gemfile b/gemfiles/jruby_9.3_elasticsearch_latest.gemfile new file mode 100644 index 00000000000..2f9eae90cdf --- /dev/null +++ b/gemfiles/jruby_9.3_elasticsearch_latest.gemfile @@ -0,0 +1,43 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "elasticsearch" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.3_elasticsearch_latest.gemfile.lock b/gemfiles/jruby_9.3_elasticsearch_latest.gemfile.lock new file mode 100644 index 00000000000..6da9e4739c5 --- /dev/null +++ b/gemfiles/jruby_9.3_elasticsearch_latest.gemfile.lock @@ -0,0 +1,186 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + elastic-transport (8.3.5) + faraday (< 3) + multi_json + elasticsearch (8.15.0) + elastic-transport (~> 8.3) + elasticsearch-api (= 8.15.0) + elasticsearch-api (8.15.0) + multi_json + faraday (2.8.1) + base64 + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + multi_json (1.15.0) + os (1.1.4) + parallel (1.24.0) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (5.1.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + elasticsearch + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.3_graphql_1.13.gemfile b/gemfiles/jruby_9.3_graphql_1.13.gemfile index 3c21a468247..051a3f929e9 100644 --- a/gemfiles/jruby_9.3_graphql_1.13.gemfile +++ b/gemfiles/jruby_9.3_graphql_1.13.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,14 +24,16 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 1.13.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/jruby_9.3_graphql_1.13.gemfile.lock b/gemfiles/jruby_9.3_graphql_1.13.gemfile.lock index 4c71d842b7f..7d49a1b126b 100644 --- a/gemfiles/jruby_9.3_graphql_1.13.gemfile.lock +++ b/gemfiles/jruby_9.3_graphql_1.13.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -36,22 +96,57 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4-java) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) ffi (1.16.3-java) + globalid (1.2.1) + activesupport (>= 6.1) graphql (1.13.21) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2-java) + net-imap (0.3.7) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3-java) + nokogiri (1.13.10-java) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -67,11 +162,43 @@ GEM ruby-debug-base (>= 0.10.4, < 0.12) public_suffix (5.0.4) racc (1.7.3-java) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.5.0) + loofah (~> 2.19, >= 2.19.1) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -124,15 +251,29 @@ GEM simplecov_json_formatter (0.1.4) spoon (0.0.6) ffi + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0-java) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) + websocket-driver (0.7.6-java) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS universal-java-11 @@ -141,7 +282,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -149,11 +289,13 @@ DEPENDENCIES ffi (~> 1.16.3) graphql (~> 1.13.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-debugger-jruby + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -167,9 +309,9 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_graphql_2.0.gemfile b/gemfiles/jruby_9.3_graphql_2.0.gemfile index baf36b0c248..5fb65557343 100644 --- a/gemfiles/jruby_9.3_graphql_2.0.gemfile +++ b/gemfiles/jruby_9.3_graphql_2.0.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,14 +24,16 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.0.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/jruby_9.3_graphql_2.0.gemfile.lock b/gemfiles/jruby_9.3_graphql_2.0.gemfile.lock index 2dbe586cd59..804b085650f 100644 --- a/gemfiles/jruby_9.3_graphql_2.0.gemfile.lock +++ b/gemfiles/jruby_9.3_graphql_2.0.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -36,22 +96,57 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4-java) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) ffi (1.16.3-java) + globalid (1.2.1) + activesupport (>= 6.1) graphql (2.0.28) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2-java) + net-imap (0.3.7) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3-java) + nokogiri (1.13.10-java) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -67,11 +162,43 @@ GEM ruby-debug-base (>= 0.10.4, < 0.12) public_suffix (5.0.4) racc (1.7.3-java) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.5.0) + loofah (~> 2.19, >= 2.19.1) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -124,15 +251,29 @@ GEM simplecov_json_formatter (0.1.4) spoon (0.0.6) ffi + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0-java) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) + websocket-driver (0.7.6-java) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS universal-java-11 @@ -141,7 +282,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -149,11 +289,13 @@ DEPENDENCIES ffi (~> 1.16.3) graphql (~> 2.0.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-debugger-jruby + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -167,9 +309,9 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_http.gemfile b/gemfiles/jruby_9.3_http.gemfile index 884d70466b7..520d163ecab 100644 --- a/gemfiles/jruby_9.3_http.gemfile +++ b/gemfiles/jruby_9.3_http.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -38,7 +36,6 @@ gem "faraday" gem "http", "~> 4" gem "httpclient" gem "rest-client" -gem "stripe", "~> 8.0" gem "typhoeus" group :check do diff --git a/gemfiles/jruby_9.3_http.gemfile.lock b/gemfiles/jruby_9.3_http.gemfile.lock index 9f5fa0b60e1..d701e8405a7 100644 --- a/gemfiles/jruby_9.3_http.gemfile.lock +++ b/gemfiles/jruby_9.3_http.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -68,7 +67,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -155,7 +154,6 @@ GEM simplecov_json_formatter (0.1.4) spoon (0.0.6) ffi - stripe (8.7.0) strscan (3.1.0-java) thor (1.2.2) typhoeus (1.4.0) @@ -167,7 +165,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-11 @@ -176,7 +173,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -207,11 +203,9 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) - stripe (~> 8.0) typhoeus warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_opensearch_2.gemfile b/gemfiles/jruby_9.3_opensearch_2.gemfile index ac8163499fc..a76f341727f 100644 --- a/gemfiles/jruby_9.3_opensearch_2.gemfile +++ b/gemfiles/jruby_9.3_opensearch_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_opensearch_2.gemfile.lock b/gemfiles/jruby_9.3_opensearch_2.gemfile.lock index 07e22b4f020..1f9c57e9f72 100644 --- a/gemfiles/jruby_9.3_opensearch_2.gemfile.lock +++ b/gemfiles/jruby_9.3_opensearch_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -51,7 +50,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -147,7 +146,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-11 @@ -156,7 +154,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -184,7 +181,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_opensearch_3.gemfile b/gemfiles/jruby_9.3_opensearch_3.gemfile index cc3ffc91590..f97a9820ceb 100644 --- a/gemfiles/jruby_9.3_opensearch_3.gemfile +++ b/gemfiles/jruby_9.3_opensearch_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_opensearch_3.gemfile.lock b/gemfiles/jruby_9.3_opensearch_3.gemfile.lock index 1dae04d7f00..e98e5e07fe4 100644 --- a/gemfiles/jruby_9.3_opensearch_3.gemfile.lock +++ b/gemfiles/jruby_9.3_opensearch_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -51,7 +50,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -142,7 +141,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-11 @@ -151,7 +149,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -179,7 +176,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_opensearch_latest.gemfile b/gemfiles/jruby_9.3_opensearch_latest.gemfile new file mode 100644 index 00000000000..f37dad71930 --- /dev/null +++ b/gemfiles/jruby_9.3_opensearch_latest.gemfile @@ -0,0 +1,43 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "opensearch-ruby" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.3_opensearch_latest.gemfile.lock b/gemfiles/jruby_9.3_opensearch_latest.gemfile.lock new file mode 100644 index 00000000000..3b93a2698f5 --- /dev/null +++ b/gemfiles/jruby_9.3_opensearch_latest.gemfile.lock @@ -0,0 +1,181 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + faraday (2.8.1) + base64 + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + multi_json (1.15.0) + opensearch-ruby (3.4.0) + faraday (>= 1.0, < 3) + multi_json (>= 1.0) + os (1.1.4) + parallel (1.24.0) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (5.1.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + opensearch-ruby + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.3_rack_1.gemfile b/gemfiles/jruby_9.3_rack_1.gemfile index 77e6427031d..e9870ee336a 100644 --- a/gemfiles/jruby_9.3_rack_1.gemfile +++ b/gemfiles/jruby_9.3_rack_1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rack_1.gemfile.lock b/gemfiles/jruby_9.3_rack_1.gemfile.lock index a8a269e0189..7268815a706 100644 --- a/gemfiles/jruby_9.3_rack_1.gemfile.lock +++ b/gemfiles/jruby_9.3_rack_1.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -134,7 +133,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-11 @@ -143,7 +141,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -173,7 +170,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rack_2.gemfile b/gemfiles/jruby_9.3_rack_2.gemfile index e8e59b39ba9..2eb25db6bb1 100644 --- a/gemfiles/jruby_9.3_rack_2.gemfile +++ b/gemfiles/jruby_9.3_rack_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rack_2.gemfile.lock b/gemfiles/jruby_9.3_rack_2.gemfile.lock index 1e3c27af128..e81b9324dc5 100644 --- a/gemfiles/jruby_9.3_rack_2.gemfile.lock +++ b/gemfiles/jruby_9.3_rack_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -134,7 +133,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-11 @@ -143,7 +141,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -173,7 +170,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rack_3.gemfile b/gemfiles/jruby_9.3_rack_3.gemfile index a2b8e4014be..27b760c2477 100644 --- a/gemfiles/jruby_9.3_rack_3.gemfile +++ b/gemfiles/jruby_9.3_rack_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rack_3.gemfile.lock b/gemfiles/jruby_9.3_rack_3.gemfile.lock index 3b025f3036b..947697a52d1 100644 --- a/gemfiles/jruby_9.3_rack_3.gemfile.lock +++ b/gemfiles/jruby_9.3_rack_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -134,7 +133,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS universal-java-11 @@ -143,7 +141,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -173,7 +170,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rack_latest.gemfile b/gemfiles/jruby_9.3_rack_latest.gemfile new file mode 100644 index 00000000000..e3838912307 --- /dev/null +++ b/gemfiles/jruby_9.3_rack_latest.gemfile @@ -0,0 +1,45 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "rack" +gem "rack-contrib" +gem "rack-test" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.3_rack_latest.gemfile.lock b/gemfiles/jruby_9.3_rack_latest.gemfile.lock new file mode 100644 index 00000000000..269366d1bdf --- /dev/null +++ b/gemfiles/jruby_9.3_rack_latest.gemfile.lock @@ -0,0 +1,177 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.2) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.24.0) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (5.1.1) + racc (1.8.1-java) + rack (3.1.8) + rack-contrib (2.5.0) + rack (< 4) + rack-test (2.1.0) + rack (>= 1.3) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rack + rack-contrib + rack-test + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails5_mysql2.gemfile b/gemfiles/jruby_9.3_rails5_mysql2.gemfile index ff269da2823..b6d664613f6 100644 --- a/gemfiles/jruby_9.3_rails5_mysql2.gemfile +++ b/gemfiles/jruby_9.3_rails5_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails5_mysql2.gemfile.lock b/gemfiles/jruby_9.3_rails5_mysql2.gemfile.lock index 902b22b0675..92c9045ad95 100644 --- a/gemfiles/jruby_9.3_rails5_mysql2.gemfile.lock +++ b/gemfiles/jruby_9.3_rails5_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -83,8 +83,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -99,7 +99,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -252,12 +252,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -267,7 +264,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -297,7 +293,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails5_postgres.gemfile b/gemfiles/jruby_9.3_rails5_postgres.gemfile index 3ef3b30e108..0e3222789a2 100644 --- a/gemfiles/jruby_9.3_rails5_postgres.gemfile +++ b/gemfiles/jruby_9.3_rails5_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails5_postgres.gemfile.lock b/gemfiles/jruby_9.3_rails5_postgres.gemfile.lock index 70862332e62..1913cd71b1f 100644 --- a/gemfiles/jruby_9.3_rails5_postgres.gemfile.lock +++ b/gemfiles/jruby_9.3_rails5_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -83,8 +83,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -99,7 +99,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -252,12 +252,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -267,7 +264,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -297,7 +293,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails5_postgres_redis.gemfile b/gemfiles/jruby_9.3_rails5_postgres_redis.gemfile index 2318e54a70d..a99386a8133 100644 --- a/gemfiles/jruby_9.3_rails5_postgres_redis.gemfile +++ b/gemfiles/jruby_9.3_rails5_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails5_postgres_redis.gemfile.lock b/gemfiles/jruby_9.3_rails5_postgres_redis.gemfile.lock index a58f05169a2..75e939212b3 100644 --- a/gemfiles/jruby_9.3_rails5_postgres_redis.gemfile.lock +++ b/gemfiles/jruby_9.3_rails5_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -83,8 +83,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -99,7 +99,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -253,12 +253,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -268,7 +265,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -299,7 +295,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails5_postgres_redis_activesupport.gemfile b/gemfiles/jruby_9.3_rails5_postgres_redis_activesupport.gemfile index 3f9e06ff9b7..74a33441e48 100644 --- a/gemfiles/jruby_9.3_rails5_postgres_redis_activesupport.gemfile +++ b/gemfiles/jruby_9.3_rails5_postgres_redis_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails5_postgres_redis_activesupport.gemfile.lock b/gemfiles/jruby_9.3_rails5_postgres_redis_activesupport.gemfile.lock index de40665b9c5..9520b0c0e6d 100644 --- a/gemfiles/jruby_9.3_rails5_postgres_redis_activesupport.gemfile.lock +++ b/gemfiles/jruby_9.3_rails5_postgres_redis_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -83,8 +83,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -99,7 +99,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -269,12 +269,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -284,7 +281,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -317,7 +313,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails5_postgres_sidekiq.gemfile b/gemfiles/jruby_9.3_rails5_postgres_sidekiq.gemfile index fda2e35d4ff..5f54b603cd4 100644 --- a/gemfiles/jruby_9.3_rails5_postgres_sidekiq.gemfile +++ b/gemfiles/jruby_9.3_rails5_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails5_postgres_sidekiq.gemfile.lock b/gemfiles/jruby_9.3_rails5_postgres_sidekiq.gemfile.lock index 09b61a77bd1..4c1494daafb 100644 --- a/gemfiles/jruby_9.3_rails5_postgres_sidekiq.gemfile.lock +++ b/gemfiles/jruby_9.3_rails5_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -84,8 +84,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -100,7 +100,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -258,12 +258,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -274,7 +271,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -305,7 +301,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails5_semantic_logger.gemfile b/gemfiles/jruby_9.3_rails5_semantic_logger.gemfile index c966f90c992..7bdcadbe603 100644 --- a/gemfiles/jruby_9.3_rails5_semantic_logger.gemfile +++ b/gemfiles/jruby_9.3_rails5_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails5_semantic_logger.gemfile.lock b/gemfiles/jruby_9.3_rails5_semantic_logger.gemfile.lock index 8b989d70db9..b6ad57cb906 100644 --- a/gemfiles/jruby_9.3_rails5_semantic_logger.gemfile.lock +++ b/gemfiles/jruby_9.3_rails5_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -83,8 +83,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -99,7 +99,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) loofah (2.21.3) @@ -251,12 +251,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -266,7 +263,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -296,7 +292,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails61_mysql2.gemfile b/gemfiles/jruby_9.3_rails61_mysql2.gemfile index 04069a1aa5a..f3f5fd0e2bf 100644 --- a/gemfiles/jruby_9.3_rails61_mysql2.gemfile +++ b/gemfiles/jruby_9.3_rails61_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails61_mysql2.gemfile.lock b/gemfiles/jruby_9.3_rails61_mysql2.gemfile.lock index 9bc41576ef0..9346b3c0678 100644 --- a/gemfiles/jruby_9.3_rails61_mysql2.gemfile.lock +++ b/gemfiles/jruby_9.3_rails61_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -100,8 +100,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -116,7 +116,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -270,12 +270,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -286,7 +283,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -316,7 +312,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails61_postgres.gemfile b/gemfiles/jruby_9.3_rails61_postgres.gemfile index 1f03ff4a9e1..de905f5aecf 100644 --- a/gemfiles/jruby_9.3_rails61_postgres.gemfile +++ b/gemfiles/jruby_9.3_rails61_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails61_postgres.gemfile.lock b/gemfiles/jruby_9.3_rails61_postgres.gemfile.lock index b5be993d009..932f5587e8f 100644 --- a/gemfiles/jruby_9.3_rails61_postgres.gemfile.lock +++ b/gemfiles/jruby_9.3_rails61_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -100,8 +100,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -116,7 +116,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -270,12 +270,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -286,7 +283,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -316,7 +312,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails61_postgres_redis.gemfile b/gemfiles/jruby_9.3_rails61_postgres_redis.gemfile index f7f4075a52d..0fc1aa61e6c 100644 --- a/gemfiles/jruby_9.3_rails61_postgres_redis.gemfile +++ b/gemfiles/jruby_9.3_rails61_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails61_postgres_redis.gemfile.lock b/gemfiles/jruby_9.3_rails61_postgres_redis.gemfile.lock index e457dcd6f6a..936e36c277c 100644 --- a/gemfiles/jruby_9.3_rails61_postgres_redis.gemfile.lock +++ b/gemfiles/jruby_9.3_rails61_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -100,8 +100,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -116,7 +116,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -271,12 +271,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -287,7 +284,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -318,7 +314,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails61_postgres_sidekiq.gemfile b/gemfiles/jruby_9.3_rails61_postgres_sidekiq.gemfile index 65a57429ee9..f661730b1aa 100644 --- a/gemfiles/jruby_9.3_rails61_postgres_sidekiq.gemfile +++ b/gemfiles/jruby_9.3_rails61_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails61_postgres_sidekiq.gemfile.lock b/gemfiles/jruby_9.3_rails61_postgres_sidekiq.gemfile.lock index c4fef6d7dc8..a5816aacd14 100644 --- a/gemfiles/jruby_9.3_rails61_postgres_sidekiq.gemfile.lock +++ b/gemfiles/jruby_9.3_rails61_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -101,8 +101,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -117,7 +117,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -276,12 +276,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -292,7 +289,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -323,7 +319,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails61_semantic_logger.gemfile b/gemfiles/jruby_9.3_rails61_semantic_logger.gemfile index 7420ecaea63..7e1dbfed400 100644 --- a/gemfiles/jruby_9.3_rails61_semantic_logger.gemfile +++ b/gemfiles/jruby_9.3_rails61_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails61_semantic_logger.gemfile.lock b/gemfiles/jruby_9.3_rails61_semantic_logger.gemfile.lock index 69ab722e577..28523a24139 100644 --- a/gemfiles/jruby_9.3_rails61_semantic_logger.gemfile.lock +++ b/gemfiles/jruby_9.3_rails61_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -100,8 +100,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -116,7 +116,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) loofah (2.21.3) @@ -269,12 +269,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -285,7 +282,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -315,7 +311,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails6_mysql2.gemfile b/gemfiles/jruby_9.3_rails6_mysql2.gemfile index 146d40d9db3..11307ccbfd9 100644 --- a/gemfiles/jruby_9.3_rails6_mysql2.gemfile +++ b/gemfiles/jruby_9.3_rails6_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails6_mysql2.gemfile.lock b/gemfiles/jruby_9.3_rails6_mysql2.gemfile.lock index dd1c572442b..6d4fd27d13d 100644 --- a/gemfiles/jruby_9.3_rails6_mysql2.gemfile.lock +++ b/gemfiles/jruby_9.3_rails6_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -96,8 +96,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -112,7 +112,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -267,12 +267,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -283,7 +280,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -313,7 +309,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails6_postgres.gemfile b/gemfiles/jruby_9.3_rails6_postgres.gemfile index 8d261fe5e2c..836b5355022 100644 --- a/gemfiles/jruby_9.3_rails6_postgres.gemfile +++ b/gemfiles/jruby_9.3_rails6_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails6_postgres.gemfile.lock b/gemfiles/jruby_9.3_rails6_postgres.gemfile.lock index ce5a6f9cd6f..8c935a562a2 100644 --- a/gemfiles/jruby_9.3_rails6_postgres.gemfile.lock +++ b/gemfiles/jruby_9.3_rails6_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -96,8 +96,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -112,7 +112,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -267,12 +267,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -283,7 +280,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -313,7 +309,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails6_postgres_redis.gemfile b/gemfiles/jruby_9.3_rails6_postgres_redis.gemfile index 6528390051a..f1e5a465ce8 100644 --- a/gemfiles/jruby_9.3_rails6_postgres_redis.gemfile +++ b/gemfiles/jruby_9.3_rails6_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails6_postgres_redis.gemfile.lock b/gemfiles/jruby_9.3_rails6_postgres_redis.gemfile.lock index 0657382ce3a..20d93d3c222 100644 --- a/gemfiles/jruby_9.3_rails6_postgres_redis.gemfile.lock +++ b/gemfiles/jruby_9.3_rails6_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -96,8 +96,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -112,7 +112,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -268,12 +268,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -284,7 +281,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -315,7 +311,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails6_postgres_redis_activesupport.gemfile b/gemfiles/jruby_9.3_rails6_postgres_redis_activesupport.gemfile index b75b4fa9bea..41428ac7e53 100644 --- a/gemfiles/jruby_9.3_rails6_postgres_redis_activesupport.gemfile +++ b/gemfiles/jruby_9.3_rails6_postgres_redis_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails6_postgres_redis_activesupport.gemfile.lock b/gemfiles/jruby_9.3_rails6_postgres_redis_activesupport.gemfile.lock index 5dda339884c..bddfa63a99b 100644 --- a/gemfiles/jruby_9.3_rails6_postgres_redis_activesupport.gemfile.lock +++ b/gemfiles/jruby_9.3_rails6_postgres_redis_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -96,8 +96,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -112,7 +112,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -284,12 +284,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -300,7 +297,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -333,7 +329,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails6_postgres_sidekiq.gemfile b/gemfiles/jruby_9.3_rails6_postgres_sidekiq.gemfile index e22fa02d74a..7894f37f942 100644 --- a/gemfiles/jruby_9.3_rails6_postgres_sidekiq.gemfile +++ b/gemfiles/jruby_9.3_rails6_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails6_postgres_sidekiq.gemfile.lock b/gemfiles/jruby_9.3_rails6_postgres_sidekiq.gemfile.lock index be03b69fa71..ed7f692b578 100644 --- a/gemfiles/jruby_9.3_rails6_postgres_sidekiq.gemfile.lock +++ b/gemfiles/jruby_9.3_rails6_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -97,8 +97,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -113,7 +113,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -273,12 +273,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -290,7 +287,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -321,7 +317,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_rails6_semantic_logger.gemfile b/gemfiles/jruby_9.3_rails6_semantic_logger.gemfile index 580c2752ed8..135d2157a48 100644 --- a/gemfiles/jruby_9.3_rails6_semantic_logger.gemfile +++ b/gemfiles/jruby_9.3_rails6_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_rails6_semantic_logger.gemfile.lock b/gemfiles/jruby_9.3_rails6_semantic_logger.gemfile.lock index 384ec79eb9a..876d4f15f02 100644 --- a/gemfiles/jruby_9.3_rails6_semantic_logger.gemfile.lock +++ b/gemfiles/jruby_9.3_rails6_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -96,8 +96,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -112,7 +112,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) loofah (2.21.3) @@ -266,12 +266,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -282,7 +279,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -312,7 +308,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_redis_3.gemfile b/gemfiles/jruby_9.3_redis_3.gemfile index 2391fd35bb6..18cb8492f77 100644 --- a/gemfiles/jruby_9.3_redis_3.gemfile +++ b/gemfiles/jruby_9.3_redis_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_redis_3.gemfile.lock b/gemfiles/jruby_9.3_redis_3.gemfile.lock index 25e6e934083..b8804f6e74d 100644 --- a/gemfiles/jruby_9.3_redis_3.gemfile.lock +++ b/gemfiles/jruby_9.3_redis_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -130,9 +129,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -141,7 +137,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -169,7 +164,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_redis_4.gemfile b/gemfiles/jruby_9.3_redis_4.gemfile index 811195fe304..e50be113cf0 100644 --- a/gemfiles/jruby_9.3_redis_4.gemfile +++ b/gemfiles/jruby_9.3_redis_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_redis_4.gemfile.lock b/gemfiles/jruby_9.3_redis_4.gemfile.lock index 621cdad5cd4..a169f466747 100644 --- a/gemfiles/jruby_9.3_redis_4.gemfile.lock +++ b/gemfiles/jruby_9.3_redis_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -130,9 +129,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -141,7 +137,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -169,7 +164,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_redis_5.gemfile b/gemfiles/jruby_9.3_redis_5.gemfile index 34251908eb7..2ec2c611ebd 100644 --- a/gemfiles/jruby_9.3_redis_5.gemfile +++ b/gemfiles/jruby_9.3_redis_5.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_redis_5.gemfile.lock b/gemfiles/jruby_9.3_redis_5.gemfile.lock index c35fe43a4b2..49db970dcb1 100644 --- a/gemfiles/jruby_9.3_redis_5.gemfile.lock +++ b/gemfiles/jruby_9.3_redis_5.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,14 +29,13 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -45,7 +44,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -134,9 +133,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -145,7 +141,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -173,7 +168,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_relational_db.gemfile b/gemfiles/jruby_9.3_relational_db.gemfile index 3bdcae323ab..1efcb0dcd87 100644 --- a/gemfiles/jruby_9.3_relational_db.gemfile +++ b/gemfiles/jruby_9.3_relational_db.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -38,7 +36,7 @@ gem "delayed_job_active_record" gem "makara" gem "activerecord-jdbcmysql-adapter", platform: :jruby gem "activerecord-jdbcpostgresql-adapter", platform: :jruby -gem "sequel", "~> 5.54.0" +gem "sequel" gem "jdbc-sqlite3", ">= 3.28", platform: :jruby group :check do diff --git a/gemfiles/jruby_9.3_relational_db.gemfile.lock b/gemfiles/jruby_9.3_relational_db.gemfile.lock index 061ff71d3d4..6ae3237ddf6 100644 --- a/gemfiles/jruby_9.3_relational_db.gemfile.lock +++ b/gemfiles/jruby_9.3_relational_db.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -48,13 +48,13 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) + bigdecimal (3.1.8-java) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) delayed_job (4.1.11) activesupport (>= 3.0, < 8.0) delayed_job_active_record (4.1.7) @@ -73,7 +73,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) makara (0.5.1) @@ -146,7 +146,8 @@ GEM rubocop-capybara (~> 2.17) ruby-debug-base (0.11.0-java) ruby-progressbar (1.13.0) - sequel (5.54.0) + sequel (5.83.1) + bigdecimal simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -165,7 +166,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) zeitwerk (2.6.11) PLATFORMS @@ -178,7 +178,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -205,12 +204,11 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) - sequel (~> 5.54.0) + sequel simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_resque2_redis3.gemfile b/gemfiles/jruby_9.3_resque2_redis3.gemfile index 45915081752..6f42d012fc1 100644 --- a/gemfiles/jruby_9.3_resque2_redis3.gemfile +++ b/gemfiles/jruby_9.3_resque2_redis3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_resque2_redis3.gemfile.lock b/gemfiles/jruby_9.3_resque2_redis3.gemfile.lock index 090e11b89d0..a665f96e9e4 100644 --- a/gemfiles/jruby_9.3_resque2_redis3.gemfile.lock +++ b/gemfiles/jruby_9.3_resque2_redis3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -151,9 +150,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -162,7 +158,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -191,7 +186,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_resque2_redis4.gemfile b/gemfiles/jruby_9.3_resque2_redis4.gemfile index 8f05b27c629..475741bda63 100644 --- a/gemfiles/jruby_9.3_resque2_redis4.gemfile +++ b/gemfiles/jruby_9.3_resque2_redis4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_resque2_redis4.gemfile.lock b/gemfiles/jruby_9.3_resque2_redis4.gemfile.lock index 70fe9a927c8..9540612debb 100644 --- a/gemfiles/jruby_9.3_resque2_redis4.gemfile.lock +++ b/gemfiles/jruby_9.3_resque2_redis4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -151,9 +150,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -162,7 +158,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -191,7 +186,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_sinatra_2.gemfile b/gemfiles/jruby_9.3_sinatra_2.gemfile index c27a6cc3341..26c487c6e76 100644 --- a/gemfiles/jruby_9.3_sinatra_2.gemfile +++ b/gemfiles/jruby_9.3_sinatra_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_sinatra_2.gemfile.lock b/gemfiles/jruby_9.3_sinatra_2.gemfile.lock index 267755670f8..191ac883986 100644 --- a/gemfiles/jruby_9.3_sinatra_2.gemfile.lock +++ b/gemfiles/jruby_9.3_sinatra_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM benchmark-memory (0.1.2) memory_profiler (~> 0.9) bigdecimal (3.1.7-java) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.1) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -47,7 +46,7 @@ GEM json (2.7.2-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -149,7 +148,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.36) PLATFORMS universal-java-11 @@ -158,7 +156,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -188,7 +185,6 @@ DEPENDENCIES sinatra (~> 2) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_sinatra_3.gemfile b/gemfiles/jruby_9.3_sinatra_3.gemfile index 86656d0d561..afb48d708d2 100644 --- a/gemfiles/jruby_9.3_sinatra_3.gemfile +++ b/gemfiles/jruby_9.3_sinatra_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -25,7 +24,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.3_sinatra_3.gemfile.lock b/gemfiles/jruby_9.3_sinatra_3.gemfile.lock index 4325b9efd49..4994e22e116 100644 --- a/gemfiles/jruby_9.3_sinatra_3.gemfile.lock +++ b/gemfiles/jruby_9.3_sinatra_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -32,14 +32,13 @@ GEM benchmark-memory (0.1.2) memory_profiler (~> 0.9) bigdecimal (3.1.7-java) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.1) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -48,7 +47,7 @@ GEM json (2.7.2-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -151,7 +150,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.36) PLATFORMS universal-java-11 @@ -160,7 +158,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -190,7 +187,6 @@ DEPENDENCIES sinatra (~> 3) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.3_stripe_10.gemfile b/gemfiles/jruby_9.3_stripe_10.gemfile new file mode 100644 index 00000000000..03615a4c7b2 --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_10.gemfile @@ -0,0 +1,43 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 10" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.3_stripe_10.gemfile.lock b/gemfiles/jruby_9.3_stripe_10.gemfile.lock new file mode 100644 index 00000000000..9974936112f --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_10.gemfile.lock @@ -0,0 +1,173 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.24.0) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (5.1.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (10.15.0) + strscan (3.1.0-java) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 10) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.3_stripe_11.gemfile b/gemfiles/jruby_9.3_stripe_11.gemfile new file mode 100644 index 00000000000..a7fe9232a4b --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_11.gemfile @@ -0,0 +1,43 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.3_stripe_11.gemfile.lock b/gemfiles/jruby_9.3_stripe_11.gemfile.lock new file mode 100644 index 00000000000..f1014953588 --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_11.gemfile.lock @@ -0,0 +1,173 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.24.0) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (5.1.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (11.7.0) + strscan (3.1.0-java) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 11) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.3_stripe_12.gemfile b/gemfiles/jruby_9.3_stripe_12.gemfile new file mode 100644 index 00000000000..05a894f2c67 --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_12.gemfile @@ -0,0 +1,43 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 12" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.3_stripe_12.gemfile.lock b/gemfiles/jruby_9.3_stripe_12.gemfile.lock new file mode 100644 index 00000000000..19a39b31e85 --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_12.gemfile.lock @@ -0,0 +1,173 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.24.0) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (5.1.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (12.5.0) + strscan (3.1.0-java) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 12) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.3_stripe_7.gemfile b/gemfiles/jruby_9.3_stripe_7.gemfile new file mode 100644 index 00000000000..357f7352f72 --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_7.gemfile @@ -0,0 +1,43 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 7" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.3_stripe_7.gemfile.lock b/gemfiles/jruby_9.3_stripe_7.gemfile.lock new file mode 100644 index 00000000000..c2f67b174c9 --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_7.gemfile.lock @@ -0,0 +1,173 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.24.0) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (5.1.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (7.1.0) + strscan (3.1.0-java) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 7) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.3_stripe_8.gemfile b/gemfiles/jruby_9.3_stripe_8.gemfile new file mode 100644 index 00000000000..bac5e2974f0 --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_8.gemfile @@ -0,0 +1,43 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 8" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.3_stripe_8.gemfile.lock b/gemfiles/jruby_9.3_stripe_8.gemfile.lock new file mode 100644 index 00000000000..70e9df7771d --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_8.gemfile.lock @@ -0,0 +1,173 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.24.0) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (5.1.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (8.7.0) + strscan (3.1.0-java) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 8) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.3_stripe_9.gemfile b/gemfiles/jruby_9.3_stripe_9.gemfile new file mode 100644 index 00000000000..20d976eb90b --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_9.gemfile @@ -0,0 +1,43 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 9" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.3_stripe_9.gemfile.lock b/gemfiles/jruby_9.3_stripe_9.gemfile.lock new file mode 100644 index 00000000000..8993169d248 --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_9.gemfile.lock @@ -0,0 +1,173 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.24.0) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (5.1.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (9.4.0) + strscan (3.1.0-java) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 9) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.3_stripe_latest.gemfile b/gemfiles/jruby_9.3_stripe_latest.gemfile new file mode 100644 index 00000000000..af459c3c41a --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_latest.gemfile @@ -0,0 +1,43 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.3_stripe_latest.gemfile.lock b/gemfiles/jruby_9.3_stripe_latest.gemfile.lock new file mode 100644 index 00000000000..583e8fda4e1 --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_latest.gemfile.lock @@ -0,0 +1,171 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.24.0) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (5.1.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (13.0.1) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.3_stripe_min.gemfile b/gemfiles/jruby_9.3_stripe_min.gemfile new file mode 100644 index 00000000000..16011d357d5 --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_min.gemfile @@ -0,0 +1,43 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "= 5.15.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.3_stripe_min.gemfile.lock b/gemfiles/jruby_9.3_stripe_min.gemfile.lock new file mode 100644 index 00000000000..9182087e53c --- /dev/null +++ b/gemfiles/jruby_9.3_stripe_min.gemfile.lock @@ -0,0 +1,171 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.24.0) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (5.1.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (5.15.0) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (= 5.15.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.4_activesupport.gemfile b/gemfiles/jruby_9.4_activesupport.gemfile index 2caa6f2b0e2..da9b8ba7cc7 100644 --- a/gemfiles/jruby_9.4_activesupport.gemfile +++ b/gemfiles/jruby_9.4_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_activesupport.gemfile.lock b/gemfiles/jruby_9.4_activesupport.gemfile.lock index 143c1854818..d0cb21b970c 100644 --- a/gemfiles/jruby_9.4_activesupport.gemfile.lock +++ b/gemfiles/jruby_9.4_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -63,7 +63,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) @@ -100,7 +100,7 @@ GEM addressable (>= 2.4) jsonapi-renderer (0.2.2) king_konf (1.0.1) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.13.0) @@ -235,7 +235,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) zeitwerk (2.6.11) PLATFORMS @@ -249,7 +248,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -281,7 +279,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_aws.gemfile b/gemfiles/jruby_9.4_aws.gemfile index 0e4158fe99c..9f041eca21a 100644 --- a/gemfiles/jruby_9.4_aws.gemfile +++ b/gemfiles/jruby_9.4_aws.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_aws.gemfile.lock b/gemfiles/jruby_9.4_aws.gemfile.lock index 3bacfff7c2a..586731505be 100644 --- a/gemfiles/jruby_9.4_aws.gemfile.lock +++ b/gemfiles/jruby_9.4_aws.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -1450,13 +1450,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.0) @@ -1466,7 +1465,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -1556,7 +1555,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS universal-java-11 @@ -1566,7 +1564,6 @@ DEPENDENCIES aws-sdk benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -1595,7 +1592,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_contrib.gemfile b/gemfiles/jruby_9.4_contrib.gemfile index 4bd2308677c..7ab2cbadf6e 100644 --- a/gemfiles/jruby_9.4_contrib.gemfile +++ b/gemfiles/jruby_9.4_contrib.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_contrib.gemfile.lock b/gemfiles/jruby_9.4_contrib.gemfile.lock index 692f383ddbb..b356e9440d0 100644 --- a/gemfiles/jruby_9.4_contrib.gemfile.lock +++ b/gemfiles/jruby_9.4_contrib.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,7 +31,6 @@ GEM benchmark-memory (0.1.2) memory_profiler (~> 0.9) bson (4.15.0-java) - builder (3.2.4) bunny (2.20.2) amq-protocol (~> 2.3, >= 2.3.1) sorted_set (~> 1, >= 1.0.2) @@ -42,7 +41,7 @@ GEM crack (0.4.5) rexml dalli (3.2.3) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -51,7 +50,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -187,8 +186,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -197,7 +194,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (>= 3.0.0) @@ -235,7 +231,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_contrib_old.gemfile b/gemfiles/jruby_9.4_contrib_old.gemfile index 877352b9321..5619cce5d34 100644 --- a/gemfiles/jruby_9.4_contrib_old.gemfile +++ b/gemfiles/jruby_9.4_contrib_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_contrib_old.gemfile.lock b/gemfiles/jruby_9.4_contrib_old.gemfile.lock index f70fcde739b..881bb0bfdae 100644 --- a/gemfiles/jruby_9.4_contrib_old.gemfile.lock +++ b/gemfiles/jruby_9.4_contrib_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,14 +29,13 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.1.10) crack (0.4.5) rexml dalli (2.7.11) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -49,7 +48,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -143,8 +142,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -153,7 +150,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (< 3.0.0) @@ -185,7 +181,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_core_old.gemfile b/gemfiles/jruby_9.4_core_old.gemfile index 5c8a6b5e711..46ed8937e33 100644 --- a/gemfiles/jruby_9.4_core_old.gemfile +++ b/gemfiles/jruby_9.4_core_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_core_old.gemfile.lock b/gemfiles/jruby_9.4_core_old.gemfile.lock index acb7cfa3553..75efd61c526 100644 --- a/gemfiles/jruby_9.4_core_old.gemfile.lock +++ b/gemfiles/jruby_9.4_core_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.1.10) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (4.8.3) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -130,8 +129,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -140,7 +137,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -168,7 +164,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_elasticsearch_7.gemfile b/gemfiles/jruby_9.4_elasticsearch_7.gemfile index 375721da00b..15bc24eeae9 100644 --- a/gemfiles/jruby_9.4_elasticsearch_7.gemfile +++ b/gemfiles/jruby_9.4_elasticsearch_7.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_elasticsearch_7.gemfile.lock b/gemfiles/jruby_9.4_elasticsearch_7.gemfile.lock index 2f334563ea7..4c6ed744fb5 100644 --- a/gemfiles/jruby_9.4_elasticsearch_7.gemfile.lock +++ b/gemfiles/jruby_9.4_elasticsearch_7.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,13 +30,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -76,7 +75,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -166,7 +165,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS universal-java-11 @@ -175,7 +173,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -204,7 +201,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_elasticsearch_8.gemfile b/gemfiles/jruby_9.4_elasticsearch_8.gemfile index b0592ae5ca1..7f8e9389215 100644 --- a/gemfiles/jruby_9.4_elasticsearch_8.gemfile +++ b/gemfiles/jruby_9.4_elasticsearch_8.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_elasticsearch_8.gemfile.lock b/gemfiles/jruby_9.4_elasticsearch_8.gemfile.lock index 22fe82ce2c5..3138d872744 100644 --- a/gemfiles/jruby_9.4_elasticsearch_8.gemfile.lock +++ b/gemfiles/jruby_9.4_elasticsearch_8.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -59,7 +58,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -148,7 +147,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS universal-java-11 @@ -157,7 +155,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -186,7 +183,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_elasticsearch_latest.gemfile b/gemfiles/jruby_9.4_elasticsearch_latest.gemfile new file mode 100644 index 00000000000..8c1d194b2be --- /dev/null +++ b/gemfiles/jruby_9.4_elasticsearch_latest.gemfile @@ -0,0 +1,44 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "elasticsearch" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.4_elasticsearch_latest.gemfile.lock b/gemfiles/jruby_9.4_elasticsearch_latest.gemfile.lock new file mode 100644 index 00000000000..1513ff8a02b --- /dev/null +++ b/gemfiles/jruby_9.4_elasticsearch_latest.gemfile.lock @@ -0,0 +1,191 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + elastic-transport (8.3.5) + faraday (< 3) + multi_json + elasticsearch (8.15.0) + elastic-transport (~> 8.3) + elasticsearch-api (= 8.15.0) + elasticsearch-api (8.15.0) + multi_json + faraday (2.12.0) + faraday-net_http (>= 2.0, < 3.4) + json + logger + faraday-net_http (3.3.0) + net-http + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + logger (1.6.1) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + multi_json (1.15.0) + net-http (0.4.1) + uri + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (6.0.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + thor (1.3.2) + unicode-display_width (2.6.0) + uri (0.13.1) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + elasticsearch + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.4_graphql_1.13.gemfile b/gemfiles/jruby_9.4_graphql_1.13.gemfile index f7f0cd910f2..942788797c0 100644 --- a/gemfiles/jruby_9.4_graphql_1.13.gemfile +++ b/gemfiles/jruby_9.4_graphql_1.13.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,14 +25,16 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 1.13.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/jruby_9.4_graphql_1.13.gemfile.lock b/gemfiles/jruby_9.4_graphql_1.13.gemfile.lock index e5411350470..610aeae575d 100644 --- a/gemfiles/jruby_9.4_graphql_1.13.gemfile.lock +++ b/gemfiles/jruby_9.4_graphql_1.13.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -36,22 +96,57 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4-java) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) ffi (1.16.3-java) + globalid (1.2.1) + activesupport (>= 6.1) graphql (1.13.21) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2-java) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3-java) + nokogiri (1.16.6-java) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -67,11 +162,44 @@ GEM ruby-debug-base (>= 0.10.4, < 0.12) public_suffix (5.0.4) racc (1.7.3-java) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -124,8 +252,19 @@ GEM simplecov_json_formatter (0.1.4) spoon (0.0.6) ffi + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0-java) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -133,7 +272,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6-java) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS universal-java-11 @@ -142,7 +284,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -150,11 +291,13 @@ DEPENDENCIES ffi (~> 1.16.3) graphql (~> 1.13.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-debugger-jruby + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -168,10 +311,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_graphql_2.0.gemfile b/gemfiles/jruby_9.4_graphql_2.0.gemfile index d73094199ab..ca6274435f1 100644 --- a/gemfiles/jruby_9.4_graphql_2.0.gemfile +++ b/gemfiles/jruby_9.4_graphql_2.0.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,14 +25,16 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.0.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/jruby_9.4_graphql_2.0.gemfile.lock b/gemfiles/jruby_9.4_graphql_2.0.gemfile.lock index 25d3465a099..019aef97d72 100644 --- a/gemfiles/jruby_9.4_graphql_2.0.gemfile.lock +++ b/gemfiles/jruby_9.4_graphql_2.0.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -36,22 +96,57 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4-java) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) ffi (1.16.3-java) + globalid (1.2.1) + activesupport (>= 6.1) graphql (2.0.28) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2-java) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3-java) + nokogiri (1.16.6-java) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -67,11 +162,44 @@ GEM ruby-debug-base (>= 0.10.4, < 0.12) public_suffix (5.0.4) racc (1.7.3-java) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -124,8 +252,19 @@ GEM simplecov_json_formatter (0.1.4) spoon (0.0.6) ffi + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0-java) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -133,7 +272,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6-java) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS universal-java-11 @@ -142,7 +284,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -150,11 +291,13 @@ DEPENDENCIES ffi (~> 1.16.3) graphql (~> 2.0.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-debugger-jruby + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -168,10 +311,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_graphql_2.1.gemfile b/gemfiles/jruby_9.4_graphql_2.1.gemfile index 573ca3f5bfa..cafb2531fd9 100644 --- a/gemfiles/jruby_9.4_graphql_2.1.gemfile +++ b/gemfiles/jruby_9.4_graphql_2.1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,14 +25,16 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.1.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/jruby_9.4_graphql_2.1.gemfile.lock b/gemfiles/jruby_9.4_graphql_2.1.gemfile.lock index 70e52cd2129..cd981368388 100644 --- a/gemfiles/jruby_9.4_graphql_2.1.gemfile.lock +++ b/gemfiles/jruby_9.4_graphql_2.1.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -36,23 +96,58 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4-java) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) ffi (1.16.3-java) + globalid (1.2.1) + activesupport (>= 6.1) graphql (2.1.11) racc (~> 1.4) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2-java) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3-java) + nokogiri (1.16.6-java) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -68,11 +163,44 @@ GEM ruby-debug-base (>= 0.10.4, < 0.12) public_suffix (5.0.4) racc (1.7.3-java) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -125,8 +253,19 @@ GEM simplecov_json_formatter (0.1.4) spoon (0.0.6) ffi + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0-java) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -134,7 +273,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6-java) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS universal-java-11 @@ -143,7 +285,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -151,11 +292,13 @@ DEPENDENCIES ffi (~> 1.16.3) graphql (~> 2.1.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-debugger-jruby + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -169,10 +312,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_graphql_2.2.gemfile b/gemfiles/jruby_9.4_graphql_2.2.gemfile index e3a712786ed..413eeecc184 100644 --- a/gemfiles/jruby_9.4_graphql_2.2.gemfile +++ b/gemfiles/jruby_9.4_graphql_2.2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,14 +25,16 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.2.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/jruby_9.4_graphql_2.2.gemfile.lock b/gemfiles/jruby_9.4_graphql_2.2.gemfile.lock index 1489ad0776f..a62c88d1a07 100644 --- a/gemfiles/jruby_9.4_graphql_2.2.gemfile.lock +++ b/gemfiles/jruby_9.4_graphql_2.2.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -36,23 +96,58 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4-java) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) ffi (1.16.3-java) + globalid (1.2.1) + activesupport (>= 6.1) graphql (2.2.6) racc (~> 1.4) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2-java) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3-java) + nokogiri (1.16.6-java) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -68,11 +163,44 @@ GEM ruby-debug-base (>= 0.10.4, < 0.12) public_suffix (5.0.4) racc (1.7.3-java) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -125,8 +253,19 @@ GEM simplecov_json_formatter (0.1.4) spoon (0.0.6) ffi + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0-java) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -134,7 +273,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6-java) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS universal-java-11 @@ -143,7 +285,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -151,11 +292,13 @@ DEPENDENCIES ffi (~> 1.16.3) graphql (~> 2.2.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-debugger-jruby + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -169,10 +312,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_graphql_2.3.gemfile b/gemfiles/jruby_9.4_graphql_2.3.gemfile new file mode 100644 index 00000000000..d81a79b351a --- /dev/null +++ b/gemfiles/jruby_9.4_graphql_2.3.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" +gem "graphql", "~> 2.3.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.4_graphql_2.3.gemfile.lock b/gemfiles/jruby_9.4_graphql_2.3.gemfile.lock new file mode 100644 index 00000000000..948c53128d5 --- /dev/null +++ b/gemfiles/jruby_9.4_graphql_2.3.gemfile.lock @@ -0,0 +1,323 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.3) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4-java) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + ffi (1.16.3-java) + globalid (1.2.1) + activesupport (>= 6.1) + graphql (2.3.6) + base64 + hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.24.0) + msgpack (1.7.2-java) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3-java) + nokogiri (1.16.6-java) + racc (~> 1.4) + os (1.1.4) + parallel (1.25.1) + parser (3.3.3.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (6.0.0) + racc (1.8.0-java) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + request_store (1.7.0) + rack (>= 1.4) + rexml (3.3.1) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) + strscan (3.1.0-java) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6-java) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + graphql (~> 2.3.0) + json-schema (< 3) + lograge (~> 0.11) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rails (~> 6.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + sprockets (< 4) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.4_http.gemfile b/gemfiles/jruby_9.4_http.gemfile index 912b2d80bbd..0abd5c3c234 100644 --- a/gemfiles/jruby_9.4_http.gemfile +++ b/gemfiles/jruby_9.4_http.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -39,7 +37,6 @@ gem "faraday" gem "http", "~> 4" gem "httpclient" gem "rest-client" -gem "stripe" gem "typhoeus" group :check do diff --git a/gemfiles/jruby_9.4_http.gemfile.lock b/gemfiles/jruby_9.4_http.gemfile.lock index 79bc0ea5f51..57bf41ae970 100644 --- a/gemfiles/jruby_9.4_http.gemfile.lock +++ b/gemfiles/jruby_9.4_http.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -68,7 +67,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -155,7 +154,6 @@ GEM simplecov_json_formatter (0.1.4) spoon (0.0.6) ffi - stripe (9.2.0) strscan (3.1.0-java) thor (1.2.2) typhoeus (1.4.0) @@ -168,7 +166,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS universal-java-11 @@ -177,7 +174,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -208,12 +204,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) - stripe typhoeus warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_opensearch_2.gemfile b/gemfiles/jruby_9.4_opensearch_2.gemfile index 9f82ebc779a..612d69adb0f 100644 --- a/gemfiles/jruby_9.4_opensearch_2.gemfile +++ b/gemfiles/jruby_9.4_opensearch_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_opensearch_2.gemfile.lock b/gemfiles/jruby_9.4_opensearch_2.gemfile.lock index dca4e40aab2..b5e5b1804d8 100644 --- a/gemfiles/jruby_9.4_opensearch_2.gemfile.lock +++ b/gemfiles/jruby_9.4_opensearch_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -51,7 +50,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -148,7 +147,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS universal-java-11 @@ -157,7 +155,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -186,7 +183,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_opensearch_3.gemfile b/gemfiles/jruby_9.4_opensearch_3.gemfile index c53e854be7e..4ee4dceb375 100644 --- a/gemfiles/jruby_9.4_opensearch_3.gemfile +++ b/gemfiles/jruby_9.4_opensearch_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_opensearch_3.gemfile.lock b/gemfiles/jruby_9.4_opensearch_3.gemfile.lock index 6e15a9bced8..58beb3440dc 100644 --- a/gemfiles/jruby_9.4_opensearch_3.gemfile.lock +++ b/gemfiles/jruby_9.4_opensearch_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -51,7 +50,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -143,7 +142,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS universal-java-11 @@ -152,7 +150,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -181,7 +178,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_opensearch_latest.gemfile b/gemfiles/jruby_9.4_opensearch_latest.gemfile new file mode 100644 index 00000000000..bbf7ba6e441 --- /dev/null +++ b/gemfiles/jruby_9.4_opensearch_latest.gemfile @@ -0,0 +1,44 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "opensearch-ruby" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.4_opensearch_latest.gemfile.lock b/gemfiles/jruby_9.4_opensearch_latest.gemfile.lock new file mode 100644 index 00000000000..f80c7d7edea --- /dev/null +++ b/gemfiles/jruby_9.4_opensearch_latest.gemfile.lock @@ -0,0 +1,186 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + faraday (2.12.0) + faraday-net_http (>= 2.0, < 3.4) + json + logger + faraday-net_http (3.3.0) + net-http + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + logger (1.6.1) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + multi_json (1.15.0) + net-http (0.4.1) + uri + opensearch-ruby (3.4.0) + faraday (>= 1.0, < 3) + multi_json (>= 1.0) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (6.0.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + thor (1.3.2) + unicode-display_width (2.6.0) + uri (0.13.1) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + opensearch-ruby + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.4_rack_1.gemfile b/gemfiles/jruby_9.4_rack_1.gemfile index 903e8c5364c..ddd59609979 100644 --- a/gemfiles/jruby_9.4_rack_1.gemfile +++ b/gemfiles/jruby_9.4_rack_1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_rack_1.gemfile.lock b/gemfiles/jruby_9.4_rack_1.gemfile.lock index ae94a09ef3c..71c4ea385f8 100644 --- a/gemfiles/jruby_9.4_rack_1.gemfile.lock +++ b/gemfiles/jruby_9.4_rack_1.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -135,7 +134,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS universal-java-11 @@ -144,7 +142,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -175,7 +172,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_rack_2.gemfile b/gemfiles/jruby_9.4_rack_2.gemfile index cccf38a5fed..ebccb2a0bb1 100644 --- a/gemfiles/jruby_9.4_rack_2.gemfile +++ b/gemfiles/jruby_9.4_rack_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_rack_2.gemfile.lock b/gemfiles/jruby_9.4_rack_2.gemfile.lock index d651a988867..d077d17ddcd 100644 --- a/gemfiles/jruby_9.4_rack_2.gemfile.lock +++ b/gemfiles/jruby_9.4_rack_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -135,7 +134,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS universal-java-11 @@ -144,7 +142,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -175,7 +172,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_rack_3.gemfile b/gemfiles/jruby_9.4_rack_3.gemfile index bdc00cee1e8..0e53c80127a 100644 --- a/gemfiles/jruby_9.4_rack_3.gemfile +++ b/gemfiles/jruby_9.4_rack_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_rack_3.gemfile.lock b/gemfiles/jruby_9.4_rack_3.gemfile.lock index 07fbb86973f..7bf3f134bb7 100644 --- a/gemfiles/jruby_9.4_rack_3.gemfile.lock +++ b/gemfiles/jruby_9.4_rack_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -135,7 +134,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS universal-java-11 @@ -144,7 +142,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -175,7 +172,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_rack_latest.gemfile b/gemfiles/jruby_9.4_rack_latest.gemfile new file mode 100644 index 00000000000..a58c90a6ff2 --- /dev/null +++ b/gemfiles/jruby_9.4_rack_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "rack" +gem "rack-contrib" +gem "rack-test" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.4_rack_latest.gemfile.lock b/gemfiles/jruby_9.4_rack_latest.gemfile.lock new file mode 100644 index 00000000000..118cec27828 --- /dev/null +++ b/gemfiles/jruby_9.4_rack_latest.gemfile.lock @@ -0,0 +1,179 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.2) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (6.0.1) + racc (1.8.1-java) + rack (3.1.8) + rack-contrib (2.5.0) + rack (< 4) + rack-test (2.1.0) + rack (>= 1.3) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.2) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rack + rack-contrib + rack-test + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.4_rails61_mysql2.gemfile b/gemfiles/jruby_9.4_rails61_mysql2.gemfile index 7d959ebfbad..bc7a18a2a9a 100644 --- a/gemfiles/jruby_9.4_rails61_mysql2.gemfile +++ b/gemfiles/jruby_9.4_rails61_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_rails61_mysql2.gemfile.lock b/gemfiles/jruby_9.4_rails61_mysql2.gemfile.lock index c1c8d12dc5f..ac428381935 100644 --- a/gemfiles/jruby_9.4_rails61_mysql2.gemfile.lock +++ b/gemfiles/jruby_9.4_rails61_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -104,8 +104,8 @@ GEM bigdecimal rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.4-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.1) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -120,7 +120,7 @@ GEM json (2.7.2-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.14.0) @@ -282,7 +282,6 @@ GEM websocket-driver (0.7.6-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.36) zeitwerk (2.6.16) PLATFORMS @@ -293,7 +292,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -325,7 +323,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_rails61_postgres.gemfile b/gemfiles/jruby_9.4_rails61_postgres.gemfile index 00f7bbfc929..13fe8943681 100644 --- a/gemfiles/jruby_9.4_rails61_postgres.gemfile +++ b/gemfiles/jruby_9.4_rails61_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_rails61_postgres.gemfile.lock b/gemfiles/jruby_9.4_rails61_postgres.gemfile.lock index d92ba173dba..9bb29265e99 100644 --- a/gemfiles/jruby_9.4_rails61_postgres.gemfile.lock +++ b/gemfiles/jruby_9.4_rails61_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -100,8 +100,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -116,7 +116,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -274,8 +274,6 @@ GEM websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -286,7 +284,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -318,7 +315,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_rails61_postgres_redis.gemfile b/gemfiles/jruby_9.4_rails61_postgres_redis.gemfile index fb201fa4b8b..bf7b2e5ff67 100644 --- a/gemfiles/jruby_9.4_rails61_postgres_redis.gemfile +++ b/gemfiles/jruby_9.4_rails61_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_rails61_postgres_redis.gemfile.lock b/gemfiles/jruby_9.4_rails61_postgres_redis.gemfile.lock index 403a27fa361..80c0bee6e3f 100644 --- a/gemfiles/jruby_9.4_rails61_postgres_redis.gemfile.lock +++ b/gemfiles/jruby_9.4_rails61_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -100,8 +100,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -116,7 +116,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -275,8 +275,6 @@ GEM websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -287,7 +285,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -320,7 +317,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_rails61_postgres_sidekiq.gemfile b/gemfiles/jruby_9.4_rails61_postgres_sidekiq.gemfile index 340b3000e09..20abeecc134 100644 --- a/gemfiles/jruby_9.4_rails61_postgres_sidekiq.gemfile +++ b/gemfiles/jruby_9.4_rails61_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_rails61_postgres_sidekiq.gemfile.lock b/gemfiles/jruby_9.4_rails61_postgres_sidekiq.gemfile.lock index 869aa7ae2d6..992a772bc04 100644 --- a/gemfiles/jruby_9.4_rails61_postgres_sidekiq.gemfile.lock +++ b/gemfiles/jruby_9.4_rails61_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -101,8 +101,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -117,7 +117,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) lograge (0.12.0) @@ -288,8 +288,6 @@ GEM websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -300,7 +298,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -334,7 +331,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_rails61_semantic_logger.gemfile b/gemfiles/jruby_9.4_rails61_semantic_logger.gemfile index 6cc19e7cb2f..511b945ec31 100644 --- a/gemfiles/jruby_9.4_rails61_semantic_logger.gemfile +++ b/gemfiles/jruby_9.4_rails61_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_rails61_semantic_logger.gemfile.lock b/gemfiles/jruby_9.4_rails61_semantic_logger.gemfile.lock index 8e8dba9c8a6..0edfce3fcd2 100644 --- a/gemfiles/jruby_9.4_rails61_semantic_logger.gemfile.lock +++ b/gemfiles/jruby_9.4_rails61_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -100,8 +100,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3-java) - debase-ruby_core_source (3.3.1) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -116,7 +116,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) loofah (2.19.1) @@ -273,8 +273,6 @@ GEM websocket-driver (0.7.5-java) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.6) PLATFORMS @@ -285,7 +283,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -317,7 +314,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_redis_3.gemfile b/gemfiles/jruby_9.4_redis_3.gemfile index 7bda9a9ea5d..db129c044a4 100644 --- a/gemfiles/jruby_9.4_redis_3.gemfile +++ b/gemfiles/jruby_9.4_redis_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_redis_3.gemfile.lock b/gemfiles/jruby_9.4_redis_3.gemfile.lock index 455a1715e3f..21981bb9fe6 100644 --- a/gemfiles/jruby_9.4_redis_3.gemfile.lock +++ b/gemfiles/jruby_9.4_redis_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.1.10) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -131,8 +130,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -141,7 +138,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -170,7 +166,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_redis_4.gemfile b/gemfiles/jruby_9.4_redis_4.gemfile index a83285a1860..d2526237926 100644 --- a/gemfiles/jruby_9.4_redis_4.gemfile +++ b/gemfiles/jruby_9.4_redis_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_redis_4.gemfile.lock b/gemfiles/jruby_9.4_redis_4.gemfile.lock index 8e322b5e07a..3ebbec9dca9 100644 --- a/gemfiles/jruby_9.4_redis_4.gemfile.lock +++ b/gemfiles/jruby_9.4_redis_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.1.10) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -131,8 +130,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -141,7 +138,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -170,7 +166,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_redis_5.gemfile b/gemfiles/jruby_9.4_redis_5.gemfile index 5a227423c46..e4ed97439a3 100644 --- a/gemfiles/jruby_9.4_redis_5.gemfile +++ b/gemfiles/jruby_9.4_redis_5.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_redis_5.gemfile.lock b/gemfiles/jruby_9.4_redis_5.gemfile.lock index d6ae21a322b..0700454af68 100644 --- a/gemfiles/jruby_9.4_redis_5.gemfile.lock +++ b/gemfiles/jruby_9.4_redis_5.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,14 +29,13 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.1.10) connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -45,7 +44,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -135,8 +134,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -145,7 +142,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -174,7 +170,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_relational_db.gemfile b/gemfiles/jruby_9.4_relational_db.gemfile index 21eb7d33d4d..4b723ddb771 100644 --- a/gemfiles/jruby_9.4_relational_db.gemfile +++ b/gemfiles/jruby_9.4_relational_db.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -39,7 +37,7 @@ gem "delayed_job_active_record" gem "makara", ">= 0.6.0.pre" gem "activerecord-jdbcmysql-adapter", "~> 61.0", platform: :jruby gem "activerecord-jdbcpostgresql-adapter", "~> 61.0", platform: :jruby -gem "sequel", "~> 5.54.0" +gem "sequel" gem "jdbc-sqlite3", ">= 3.28", platform: :jruby group :check do diff --git a/gemfiles/jruby_9.4_relational_db.gemfile.lock b/gemfiles/jruby_9.4_relational_db.gemfile.lock index 280ed2ba938..4560ffb746d 100644 --- a/gemfiles/jruby_9.4_relational_db.gemfile.lock +++ b/gemfiles/jruby_9.4_relational_db.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -50,14 +50,13 @@ GEM benchmark-memory (0.1.2) memory_profiler (~> 0.9) bigdecimal (3.1.8-java) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) delayed_job (4.1.11) activesupport (>= 3.0, < 8.0) delayed_job_active_record (4.1.8) @@ -76,7 +75,7 @@ GEM json (2.7.2-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) makara (0.6.0.pre) @@ -150,7 +149,8 @@ GEM rubocop-capybara (~> 2.17) ruby-debug-base (0.11.0-java) ruby-progressbar (1.13.0) - sequel (5.54.0) + sequel (5.83.1) + bigdecimal simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -169,7 +169,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) zeitwerk (2.6.16) PLATFORMS @@ -182,7 +181,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -209,13 +207,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) - sequel (~> 5.54.0) + sequel simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_resque2_redis3.gemfile b/gemfiles/jruby_9.4_resque2_redis3.gemfile index 46f74df1949..3bd930457ff 100644 --- a/gemfiles/jruby_9.4_resque2_redis3.gemfile +++ b/gemfiles/jruby_9.4_resque2_redis3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_resque2_redis3.gemfile.lock b/gemfiles/jruby_9.4_resque2_redis3.gemfile.lock index 646979c1f64..d67fca4359b 100644 --- a/gemfiles/jruby_9.4_resque2_redis3.gemfile.lock +++ b/gemfiles/jruby_9.4_resque2_redis3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,13 +29,12 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.1.10) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -44,7 +43,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -152,8 +151,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -162,7 +159,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -192,7 +188,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_resque2_redis4.gemfile b/gemfiles/jruby_9.4_resque2_redis4.gemfile index 08c1c663652..d544a6f82ba 100644 --- a/gemfiles/jruby_9.4_resque2_redis4.gemfile +++ b/gemfiles/jruby_9.4_resque2_redis4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_resque2_redis4.gemfile.lock b/gemfiles/jruby_9.4_resque2_redis4.gemfile.lock index f4c6b64c5a4..16b3087b9fc 100644 --- a/gemfiles/jruby_9.4_resque2_redis4.gemfile.lock +++ b/gemfiles/jruby_9.4_resque2_redis4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -29,14 +29,13 @@ GEM benchmark-ips (2.10.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.1.10) connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.5.0) @@ -45,7 +44,7 @@ GEM json (2.6.3-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -156,8 +155,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS universal-java-11 @@ -166,7 +163,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -196,7 +192,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_sinatra_2.gemfile b/gemfiles/jruby_9.4_sinatra_2.gemfile index 8ae561adb83..fa02fd5db9c 100644 --- a/gemfiles/jruby_9.4_sinatra_2.gemfile +++ b/gemfiles/jruby_9.4_sinatra_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_sinatra_2.gemfile.lock b/gemfiles/jruby_9.4_sinatra_2.gemfile.lock index 47833cc33d9..d9a19470fcc 100644 --- a/gemfiles/jruby_9.4_sinatra_2.gemfile.lock +++ b/gemfiles/jruby_9.4_sinatra_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM benchmark-memory (0.1.2) memory_profiler (~> 0.9) bigdecimal (3.1.7-java) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.1) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -47,7 +46,7 @@ GEM json (2.7.2-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -150,7 +149,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS universal-java-11 @@ -159,7 +157,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -190,7 +187,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_sinatra_3.gemfile b/gemfiles/jruby_9.4_sinatra_3.gemfile index d975c76e550..0ebde61b105 100644 --- a/gemfiles/jruby_9.4_sinatra_3.gemfile +++ b/gemfiles/jruby_9.4_sinatra_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_sinatra_3.gemfile.lock b/gemfiles/jruby_9.4_sinatra_3.gemfile.lock index c42879d94aa..b8e99a5e363 100644 --- a/gemfiles/jruby_9.4_sinatra_3.gemfile.lock +++ b/gemfiles/jruby_9.4_sinatra_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -32,14 +32,13 @@ GEM benchmark-memory (0.1.2) memory_profiler (~> 0.9) bigdecimal (3.1.7-java) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.1) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -48,7 +47,7 @@ GEM json (2.7.2-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -152,7 +151,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS universal-java-11 @@ -161,7 +159,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -192,7 +189,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_sinatra_4.gemfile b/gemfiles/jruby_9.4_sinatra_4.gemfile index 4b48170e5d0..03bfe7f84bf 100644 --- a/gemfiles/jruby_9.4_sinatra_4.gemfile +++ b/gemfiles/jruby_9.4_sinatra_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "json-schema", "< 3" @@ -26,7 +25,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/jruby_9.4_sinatra_4.gemfile.lock b/gemfiles/jruby_9.4_sinatra_4.gemfile.lock index 81e1843b52e..1ec002d6cb2 100644 --- a/gemfiles/jruby_9.4_sinatra_4.gemfile.lock +++ b/gemfiles/jruby_9.4_sinatra_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -32,14 +32,13 @@ GEM benchmark-memory (0.1.2) memory_profiler (~> 0.9) bigdecimal (3.1.7-java) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) diff-lcs (1.5.1) docile (1.4.0) dogstatsd-ruby (5.6.1) @@ -48,7 +47,7 @@ GEM json (2.7.2-java) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) + libdatadog (13.1.0.1.0) libddwaf (1.14.0.0.0-java) ffi (~> 1.0) memory_profiler (0.9.14) @@ -155,7 +154,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS universal-java-11 @@ -164,7 +162,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -195,7 +192,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH - 2.3.27 + 2.3.26 diff --git a/gemfiles/jruby_9.4_stripe_10.gemfile b/gemfiles/jruby_9.4_stripe_10.gemfile new file mode 100644 index 00000000000..c5f2d10d7db --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_10.gemfile @@ -0,0 +1,44 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 10" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.4_stripe_10.gemfile.lock b/gemfiles/jruby_9.4_stripe_10.gemfile.lock new file mode 100644 index 00000000000..2f156477197 --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_10.gemfile.lock @@ -0,0 +1,175 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (6.0.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (10.15.0) + strscan (3.1.0-java) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 10) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.4_stripe_11.gemfile b/gemfiles/jruby_9.4_stripe_11.gemfile new file mode 100644 index 00000000000..0a1717ca8e9 --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_11.gemfile @@ -0,0 +1,44 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.4_stripe_11.gemfile.lock b/gemfiles/jruby_9.4_stripe_11.gemfile.lock new file mode 100644 index 00000000000..f927ef7867b --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_11.gemfile.lock @@ -0,0 +1,175 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (6.0.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (11.7.0) + strscan (3.1.0-java) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 11) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.4_stripe_12.gemfile b/gemfiles/jruby_9.4_stripe_12.gemfile new file mode 100644 index 00000000000..325dc42c903 --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_12.gemfile @@ -0,0 +1,44 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 12" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.4_stripe_12.gemfile.lock b/gemfiles/jruby_9.4_stripe_12.gemfile.lock new file mode 100644 index 00000000000..212b5c119c7 --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_12.gemfile.lock @@ -0,0 +1,175 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (6.0.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (12.5.0) + strscan (3.1.0-java) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 12) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.4_stripe_7.gemfile b/gemfiles/jruby_9.4_stripe_7.gemfile new file mode 100644 index 00000000000..2d36e93044f --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_7.gemfile @@ -0,0 +1,44 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 7" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.4_stripe_7.gemfile.lock b/gemfiles/jruby_9.4_stripe_7.gemfile.lock new file mode 100644 index 00000000000..c5423e846de --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_7.gemfile.lock @@ -0,0 +1,175 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (6.0.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (7.1.0) + strscan (3.1.0-java) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 7) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.4_stripe_8.gemfile b/gemfiles/jruby_9.4_stripe_8.gemfile new file mode 100644 index 00000000000..86d3bff9f71 --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_8.gemfile @@ -0,0 +1,44 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 8" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.4_stripe_8.gemfile.lock b/gemfiles/jruby_9.4_stripe_8.gemfile.lock new file mode 100644 index 00000000000..f83255a1697 --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_8.gemfile.lock @@ -0,0 +1,175 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (6.0.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (8.7.0) + strscan (3.1.0-java) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 8) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.4_stripe_9.gemfile b/gemfiles/jruby_9.4_stripe_9.gemfile new file mode 100644 index 00000000000..d561e076060 --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_9.gemfile @@ -0,0 +1,44 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 9" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.4_stripe_9.gemfile.lock b/gemfiles/jruby_9.4_stripe_9.gemfile.lock new file mode 100644 index 00000000000..659ec1fed05 --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_9.gemfile.lock @@ -0,0 +1,175 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (6.0.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (9.4.0) + strscan (3.1.0-java) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 9) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.4_stripe_latest.gemfile b/gemfiles/jruby_9.4_stripe_latest.gemfile new file mode 100644 index 00000000000..5861854f182 --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_latest.gemfile @@ -0,0 +1,44 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.4_stripe_latest.gemfile.lock b/gemfiles/jruby_9.4_stripe_latest.gemfile.lock new file mode 100644 index 00000000000..e3715a363ca --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_latest.gemfile.lock @@ -0,0 +1,173 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (6.0.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (13.0.1) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.4_stripe_min.gemfile b/gemfiles/jruby_9.4_stripe_min.gemfile new file mode 100644 index 00000000000..6b3662e63e1 --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_min.gemfile @@ -0,0 +1,44 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "= 5.15.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.4_stripe_min.gemfile.lock b/gemfiles/jruby_9.4_stripe_min.gemfile.lock new file mode 100644 index 00000000000..12b2e69cc53 --- /dev/null +++ b/gemfiles/jruby_9.4_stripe_min.gemfile.lock @@ -0,0 +1,173 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8-java) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + ffi (1.16.3-java) + hashdiff (1.1.1) + json (2.7.2-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2-java) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (6.0.1) + racc (1.8.1-java) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + spoon (0.0.6) + ffi + stripe (5.15.0) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + ffi (~> 1.16.3) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (= 5.15.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.5_activesupport.gemfile b/gemfiles/ruby_2.5_activesupport.gemfile index 8df9c3d7fd7..2a7f6093805 100644 --- a/gemfiles/ruby_2.5_activesupport.gemfile +++ b/gemfiles/ruby_2.5_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_activesupport.gemfile.lock b/gemfiles/ruby_2.5_activesupport.gemfile.lock index 832ba0e7616..a6908d1e10b 100644 --- a/gemfiles/ruby_2.5_activesupport.gemfile.lock +++ b/gemfiles/ruby_2.5_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -64,7 +64,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest-crc (0.6.5) @@ -108,8 +108,8 @@ GEM addressable (>= 2.4) jsonapi-renderer (0.2.2) king_konf (1.0.1) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -215,7 +215,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -229,7 +228,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -259,7 +257,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_aws.gemfile b/gemfiles/ruby_2.5_aws.gemfile index 9e721e7aa47..740509a6dfe 100644 --- a/gemfiles/ruby_2.5_aws.gemfile +++ b/gemfiles/ruby_2.5_aws.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_aws.gemfile.lock b/gemfiles/ruby_2.5_aws.gemfile.lock index 74ec9831b0e..39cb93cec77 100644 --- a/gemfiles/ruby_2.5_aws.gemfile.lock +++ b/gemfiles/ruby_2.5_aws.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -1451,13 +1451,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -1470,8 +1469,8 @@ GEM jmespath (1.6.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -1529,7 +1528,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -1540,7 +1538,6 @@ DEPENDENCIES aws-sdk benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -1567,7 +1564,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_contrib.gemfile b/gemfiles/ruby_2.5_contrib.gemfile index c1e08432ac9..b722637b329 100644 --- a/gemfiles/ruby_2.5_contrib.gemfile +++ b/gemfiles/ruby_2.5_contrib.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_contrib.gemfile.lock b/gemfiles/ruby_2.5_contrib.gemfile.lock index e1caff2807d..7f40b2bfcae 100644 --- a/gemfiles/ruby_2.5_contrib.gemfile.lock +++ b/gemfiles/ruby_2.5_contrib.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -32,7 +32,6 @@ GEM binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) bson (4.15.0) - builder (3.2.4) bunny (2.19.0) amq-protocol (~> 2.3, >= 2.3.1) sorted_set (~> 1, >= 1.0.2) @@ -43,7 +42,7 @@ GEM crack (0.4.5) rexml dalli (3.2.0) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -63,8 +62,8 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -169,9 +168,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -181,7 +177,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder bunny (~> 2.19.0) climate_control (~> 0.2.0) concurrent-ruby @@ -219,7 +214,6 @@ DEPENDENCIES sucker_punch warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_contrib_old.gemfile b/gemfiles/ruby_2.5_contrib_old.gemfile index 76f9c81331c..73abd2db618 100644 --- a/gemfiles/ruby_2.5_contrib_old.gemfile +++ b/gemfiles/ruby_2.5_contrib_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_contrib_old.gemfile.lock b/gemfiles/ruby_2.5_contrib_old.gemfile.lock index a0d68880124..42779108dfd 100644 --- a/gemfiles/ruby_2.5_contrib_old.gemfile.lock +++ b/gemfiles/ruby_2.5_contrib_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,7 +33,6 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) @@ -41,7 +40,7 @@ GEM rexml daemons (1.4.1) dalli (2.7.11) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -59,8 +58,8 @@ GEM hitimes (1.3.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -156,9 +155,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -168,7 +164,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (< 3.0.0) @@ -198,7 +193,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_core_old.gemfile b/gemfiles/ruby_2.5_core_old.gemfile index aff378cc1a1..561a0ca81d5 100644 --- a/gemfiles/ruby_2.5_core_old.gemfile +++ b/gemfiles/ruby_2.5_core_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", "~> 4" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_core_old.gemfile.lock b/gemfiles/ruby_2.5_core_old.gemfile.lock index 7760c980a82..aafd0d891a1 100644 --- a/gemfiles/ruby_2.5_core_old.gemfile.lock +++ b/gemfiles/ruby_2.5_core_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,13 +30,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -48,8 +47,8 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -103,9 +102,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -115,7 +111,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -141,7 +136,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_elasticsearch_7.gemfile b/gemfiles/ruby_2.5_elasticsearch_7.gemfile index 5b1fe9d9fbe..3a6c92000b8 100644 --- a/gemfiles/ruby_2.5_elasticsearch_7.gemfile +++ b/gemfiles/ruby_2.5_elasticsearch_7.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_elasticsearch_7.gemfile.lock b/gemfiles/ruby_2.5_elasticsearch_7.gemfile.lock index 3c6ecb69e5b..f792253633f 100644 --- a/gemfiles/ruby_2.5_elasticsearch_7.gemfile.lock +++ b/gemfiles/ruby_2.5_elasticsearch_7.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -80,8 +79,8 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -139,7 +138,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -149,7 +147,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -176,7 +173,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_elasticsearch_8.gemfile b/gemfiles/ruby_2.5_elasticsearch_8.gemfile index 1a592c2e8f1..3458485ecf1 100644 --- a/gemfiles/ruby_2.5_elasticsearch_8.gemfile +++ b/gemfiles/ruby_2.5_elasticsearch_8.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_elasticsearch_8.gemfile.lock b/gemfiles/ruby_2.5_elasticsearch_8.gemfile.lock index 017d70a9b80..23a3f0386b1 100644 --- a/gemfiles/ruby_2.5_elasticsearch_8.gemfile.lock +++ b/gemfiles/ruby_2.5_elasticsearch_8.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -80,8 +79,8 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -139,7 +138,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -149,7 +147,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -176,7 +173,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_elasticsearch_latest.gemfile b/gemfiles/ruby_2.5_elasticsearch_latest.gemfile new file mode 100644 index 00000000000..052608e6eb3 --- /dev/null +++ b/gemfiles/ruby_2.5_elasticsearch_latest.gemfile @@ -0,0 +1,42 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-nav" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "elasticsearch" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.5_elasticsearch_latest.gemfile.lock b/gemfiles/ruby_2.5_elasticsearch_latest.gemfile.lock new file mode 100644 index 00000000000..b07e16284cb --- /dev/null +++ b/gemfiles/ruby_2.5_elasticsearch_latest.gemfile.lock @@ -0,0 +1,178 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (0.8.0) + debug_inspector (>= 0.0.1) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + elastic-transport (8.3.5) + faraday (< 3) + multi_json + elasticsearch (8.15.0) + elastic-transport (~> 8.3) + elasticsearch-api (= 8.15.0) + elasticsearch-api (8.15.0) + multi_json + extlz4 (0.3.4) + faraday (1.10.4) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.2) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + multi_json (1.15.0) + multipart-post (2.4.1) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-nav (1.0.0) + pry (>= 0.9.10, < 0.15) + pry-stack_explorer (0.4.13) + binding_of_caller (~> 0.7) + pry (~> 0.13) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + elasticsearch + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-nav + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.5_graphql_2.0.gemfile b/gemfiles/ruby_2.5_graphql_2.0.gemfile index 4fce45fb7fe..854bdec5b9a 100644 --- a/gemfiles/ruby_2.5_graphql_2.0.gemfile +++ b/gemfiles/ruby_2.5_graphql_2.0.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,11 +26,13 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.0.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_2.5_graphql_2.0.gemfile.lock b/gemfiles/ruby_2.5_graphql_2.0.gemfile.lock index 38d245341fc..4645974908e 100644 --- a/gemfiles/ruby_2.5_graphql_2.0.gemfile.lock +++ b/gemfiles/ruby_2.5_graphql_2.0.gemfile.lock @@ -11,21 +11,81 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) bundler rake thor (>= 0.14.0) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -37,28 +97,72 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.0) + digest (3.1.1) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.19.1) google-protobuf (3.19.1-x86_64-linux) graphql (2.0.28) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + io-wait (0.3.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.2) + mini_portile2 (2.6.1) + minitest (5.15.0) msgpack (1.7.2) + net-imap (0.2.2) + digest + net-protocol + strscan + net-pop (0.1.2) + net-protocol + net-protocol (0.1.2) + io-wait + timeout + net-smtp (0.3.0) + digest + net-protocol + timeout + nio4r (2.7.3) + nokogiri (1.12.5) + mini_portile2 (~> 2.6.1) + racc (~> 1.4) + nokogiri (1.12.5-x86_64-linux) + racc (~> 1.4) os (1.1.4) pimpmychangelog (0.1.3) pry (0.14.2) @@ -70,9 +174,42 @@ GEM binding_of_caller (~> 0.7) pry (~> 0.13) public_suffix (4.0.7) + racc (1.8.0) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.5.0) + loofah (~> 2.19, >= 2.19.1) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rake (13.1.0) rake-compiler (1.2.6) rake + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -99,14 +236,28 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.2.2) + timeout (0.4.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) warning (1.3.0) webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -116,7 +267,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -126,12 +276,14 @@ DEPENDENCIES google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) graphql (~> 2.0.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-nav pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -141,9 +293,9 @@ DEPENDENCIES rspec_junit_formatter (>= 0.5.1) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_hanami_1.gemfile b/gemfiles/ruby_2.5_hanami_1.gemfile index cc31a133e8b..1940ebc7122 100644 --- a/gemfiles/ruby_2.5_hanami_1.gemfile +++ b/gemfiles/ruby_2.5_hanami_1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_hanami_1.gemfile.lock b/gemfiles/ruby_2.5_hanami_1.gemfile.lock index 6ddd7c13eb4..290e57c5c23 100644 --- a/gemfiles/ruby_2.5_hanami_1.gemfile.lock +++ b/gemfiles/ruby_2.5_hanami_1.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,13 +30,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -124,8 +123,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -206,9 +205,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -218,7 +214,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -247,7 +242,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_http.gemfile b/gemfiles/ruby_2.5_http.gemfile index 91ce2949d52..c2f7234a1f2 100644 --- a/gemfiles/ruby_2.5_http.gemfile +++ b/gemfiles/ruby_2.5_http.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false @@ -37,7 +35,6 @@ gem "faraday" gem "http" gem "httpclient" gem "rest-client" -gem "stripe", "~> 7.0" gem "typhoeus" group :check do diff --git a/gemfiles/ruby_2.5_http.gemfile.lock b/gemfiles/ruby_2.5_http.gemfile.lock index a2a374db575..0a5d12a87cb 100644 --- a/gemfiles/ruby_2.5_http.gemfile.lock +++ b/gemfiles/ruby_2.5_http.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,13 +30,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -89,8 +88,8 @@ GEM httpclient (2.8.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -151,7 +150,6 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) - stripe (7.1.0) strscan (3.1.0) thor (1.2.2) typhoeus (1.4.0) @@ -164,7 +162,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -174,7 +171,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -204,11 +200,9 @@ DEPENDENCIES rspec_junit_formatter (>= 0.5.1) simplecov! simplecov-cobertura (~> 2.1.0) - stripe (~> 7.0) typhoeus warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_opensearch_2.gemfile b/gemfiles/ruby_2.5_opensearch_2.gemfile index 353c2b60923..ff6cd2ce647 100644 --- a/gemfiles/ruby_2.5_opensearch_2.gemfile +++ b/gemfiles/ruby_2.5_opensearch_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_opensearch_2.gemfile.lock b/gemfiles/ruby_2.5_opensearch_2.gemfile.lock index cce358bd0db..1fcbaf95351 100644 --- a/gemfiles/ruby_2.5_opensearch_2.gemfile.lock +++ b/gemfiles/ruby_2.5_opensearch_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -72,8 +71,8 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -139,7 +138,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -149,7 +147,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -176,7 +173,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_opensearch_3.gemfile b/gemfiles/ruby_2.5_opensearch_3.gemfile index 6af31aa4ec3..58c62008b9d 100644 --- a/gemfiles/ruby_2.5_opensearch_3.gemfile +++ b/gemfiles/ruby_2.5_opensearch_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_opensearch_3.gemfile.lock b/gemfiles/ruby_2.5_opensearch_3.gemfile.lock index 8b3343ae1cd..36f199b27a8 100644 --- a/gemfiles/ruby_2.5_opensearch_3.gemfile.lock +++ b/gemfiles/ruby_2.5_opensearch_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -72,8 +71,8 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -134,7 +133,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -144,7 +142,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -171,7 +168,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_opensearch_latest.gemfile b/gemfiles/ruby_2.5_opensearch_latest.gemfile new file mode 100644 index 00000000000..a688ebacb4f --- /dev/null +++ b/gemfiles/ruby_2.5_opensearch_latest.gemfile @@ -0,0 +1,42 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-nav" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "opensearch-ruby" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.5_opensearch_latest.gemfile.lock b/gemfiles/ruby_2.5_opensearch_latest.gemfile.lock new file mode 100644 index 00000000000..e4c229fb776 --- /dev/null +++ b/gemfiles/ruby_2.5_opensearch_latest.gemfile.lock @@ -0,0 +1,173 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (0.8.0) + debug_inspector (>= 0.0.1) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + faraday (1.10.4) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.2) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + multi_json (1.15.0) + multipart-post (2.4.1) + opensearch-ruby (3.4.0) + faraday (>= 1.0, < 3) + multi_json (>= 1.0) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-nav (1.0.0) + pry (>= 0.9.10, < 0.15) + pry-stack_explorer (0.4.13) + binding_of_caller (~> 0.7) + pry (~> 0.13) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opensearch-ruby + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-nav + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.5_rack_1.gemfile b/gemfiles/ruby_2.5_rack_1.gemfile index f18d278c57e..7dd2a6dc08a 100644 --- a/gemfiles/ruby_2.5_rack_1.gemfile +++ b/gemfiles/ruby_2.5_rack_1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rack_1.gemfile.lock b/gemfiles/ruby_2.5_rack_1.gemfile.lock index 3ebebe1dfb3..4bbc7a431f2 100644 --- a/gemfiles/ruby_2.5_rack_1.gemfile.lock +++ b/gemfiles/ruby_2.5_rack_1.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,13 +30,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -48,8 +47,8 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -108,7 +107,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -118,7 +116,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -147,7 +144,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rack_2.gemfile b/gemfiles/ruby_2.5_rack_2.gemfile index a1beceb9129..22d81805cb3 100644 --- a/gemfiles/ruby_2.5_rack_2.gemfile +++ b/gemfiles/ruby_2.5_rack_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rack_2.gemfile.lock b/gemfiles/ruby_2.5_rack_2.gemfile.lock index 35bf80ce106..33c9842ef9c 100644 --- a/gemfiles/ruby_2.5_rack_2.gemfile.lock +++ b/gemfiles/ruby_2.5_rack_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,13 +30,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -48,8 +47,8 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -108,7 +107,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -118,7 +116,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -147,7 +144,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rack_3.gemfile b/gemfiles/ruby_2.5_rack_3.gemfile index ebd6abb2642..d5a7f8fea9b 100644 --- a/gemfiles/ruby_2.5_rack_3.gemfile +++ b/gemfiles/ruby_2.5_rack_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rack_3.gemfile.lock b/gemfiles/ruby_2.5_rack_3.gemfile.lock index cb0b8d0b81a..3b85dbc0a39 100644 --- a/gemfiles/ruby_2.5_rack_3.gemfile.lock +++ b/gemfiles/ruby_2.5_rack_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,13 +30,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -48,8 +47,8 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -108,7 +107,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -118,7 +116,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -147,7 +144,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rack_latest.gemfile b/gemfiles/ruby_2.5_rack_latest.gemfile new file mode 100644 index 00000000000..a40988eefe1 --- /dev/null +++ b/gemfiles/ruby_2.5_rack_latest.gemfile @@ -0,0 +1,44 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-nav" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "rack" +gem "rack-contrib" +gem "rack-test" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.5_rack_latest.gemfile.lock b/gemfiles/ruby_2.5_rack_latest.gemfile.lock new file mode 100644 index 00000000000..49e1988b6b9 --- /dev/null +++ b/gemfiles/ruby_2.5_rack_latest.gemfile.lock @@ -0,0 +1,151 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (0.8.0) + debug_inspector (>= 0.0.1) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.2) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-nav (1.0.0) + pry (>= 0.9.10, < 0.15) + pry-stack_explorer (0.4.13) + binding_of_caller (~> 0.7) + pry (~> 0.13) + public_suffix (4.0.7) + rack (3.1.8) + rack-contrib (2.5.0) + rack (< 4) + rack-test (2.1.0) + rack (>= 1.3) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-nav + pry-stack_explorer + rack + rack-contrib + rack-test + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.5_rails4_mysql2.gemfile b/gemfiles/ruby_2.5_rails4_mysql2.gemfile index 3f482a2d5bb..6cb3b6c1767 100644 --- a/gemfiles/ruby_2.5_rails4_mysql2.gemfile +++ b/gemfiles/ruby_2.5_rails4_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails4_mysql2.gemfile.lock b/gemfiles/ruby_2.5_rails4_mysql2.gemfile.lock index 0ebc6a370fb..4abff63580a 100644 --- a/gemfiles/ruby_2.5_rails4_mysql2.gemfile.lock +++ b/gemfiles/ruby_2.5_rails4_mysql2.gemfile.lock @@ -67,9 +67,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -95,7 +95,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.0) digest (3.1.1) @@ -114,8 +114,8 @@ GEM io-wait (0.3.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -230,7 +230,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -240,7 +239,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -270,7 +268,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails4_postgres.gemfile b/gemfiles/ruby_2.5_rails4_postgres.gemfile index d1476fa1ce7..17a9cb58fd1 100644 --- a/gemfiles/ruby_2.5_rails4_postgres.gemfile +++ b/gemfiles/ruby_2.5_rails4_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails4_postgres.gemfile.lock b/gemfiles/ruby_2.5_rails4_postgres.gemfile.lock index 5842a4bbb98..73133f6590a 100644 --- a/gemfiles/ruby_2.5_rails4_postgres.gemfile.lock +++ b/gemfiles/ruby_2.5_rails4_postgres.gemfile.lock @@ -67,9 +67,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -95,7 +95,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.0) digest (3.1.1) @@ -114,8 +114,8 @@ GEM io-wait (0.3.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -230,7 +230,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -240,7 +239,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -270,7 +268,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails4_postgres_redis.gemfile b/gemfiles/ruby_2.5_rails4_postgres_redis.gemfile index 7ae60dd76d3..32a88d2f444 100644 --- a/gemfiles/ruby_2.5_rails4_postgres_redis.gemfile +++ b/gemfiles/ruby_2.5_rails4_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails4_postgres_redis.gemfile.lock b/gemfiles/ruby_2.5_rails4_postgres_redis.gemfile.lock index bfff61c1cb7..d6d44d45c15 100644 --- a/gemfiles/ruby_2.5_rails4_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_2.5_rails4_postgres_redis.gemfile.lock @@ -67,9 +67,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -95,7 +95,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.0) digest (3.1.1) @@ -114,8 +114,8 @@ GEM io-wait (0.3.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -247,7 +247,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -257,7 +256,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -289,7 +287,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails4_postgres_sidekiq.gemfile b/gemfiles/ruby_2.5_rails4_postgres_sidekiq.gemfile index a887e4621b4..3ee123130ca 100644 --- a/gemfiles/ruby_2.5_rails4_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_2.5_rails4_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails4_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_2.5_rails4_postgres_sidekiq.gemfile.lock index 84883951849..a5b289284cd 100644 --- a/gemfiles/ruby_2.5_rails4_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_2.5_rails4_postgres_sidekiq.gemfile.lock @@ -64,9 +64,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -96,7 +96,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.0) digest (3.1.1) @@ -115,8 +115,8 @@ GEM io-wait (0.3.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -239,7 +239,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -250,7 +249,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -281,7 +279,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails4_semantic_logger.gemfile b/gemfiles/ruby_2.5_rails4_semantic_logger.gemfile index 498a998ec6e..f87daa5ea66 100644 --- a/gemfiles/ruby_2.5_rails4_semantic_logger.gemfile +++ b/gemfiles/ruby_2.5_rails4_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails4_semantic_logger.gemfile.lock b/gemfiles/ruby_2.5_rails4_semantic_logger.gemfile.lock index b107a8bc51a..0c885474fd1 100644 --- a/gemfiles/ruby_2.5_rails4_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_2.5_rails4_semantic_logger.gemfile.lock @@ -67,9 +67,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -95,7 +95,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.0) digest (3.1.1) @@ -114,8 +114,8 @@ GEM io-wait (0.3.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -229,7 +229,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -239,7 +238,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -269,7 +267,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails5_mysql2.gemfile b/gemfiles/ruby_2.5_rails5_mysql2.gemfile index d16af6510d4..02a121e9fa8 100644 --- a/gemfiles/ruby_2.5_rails5_mysql2.gemfile +++ b/gemfiles/ruby_2.5_rails5_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails5_mysql2.gemfile.lock b/gemfiles/ruby_2.5_rails5_mysql2.gemfile.lock index fd0718369ce..5ffbe7986e9 100644 --- a/gemfiles/ruby_2.5_rails5_mysql2.gemfile.lock +++ b/gemfiles/ruby_2.5_rails5_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -79,7 +79,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -96,8 +96,8 @@ GEM concurrent-ruby (~> 1.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -212,12 +212,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -227,7 +224,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -258,7 +254,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails5_postgres.gemfile b/gemfiles/ruby_2.5_rails5_postgres.gemfile index d92069ef8c4..7f13f5aeee6 100644 --- a/gemfiles/ruby_2.5_rails5_postgres.gemfile +++ b/gemfiles/ruby_2.5_rails5_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails5_postgres.gemfile.lock b/gemfiles/ruby_2.5_rails5_postgres.gemfile.lock index 07a3d3eec9d..be93b2f648f 100644 --- a/gemfiles/ruby_2.5_rails5_postgres.gemfile.lock +++ b/gemfiles/ruby_2.5_rails5_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -79,7 +79,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -98,8 +98,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -231,12 +231,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -246,7 +243,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -276,7 +272,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails5_postgres_redis.gemfile b/gemfiles/ruby_2.5_rails5_postgres_redis.gemfile index 5f781910624..5e7ae55c751 100644 --- a/gemfiles/ruby_2.5_rails5_postgres_redis.gemfile +++ b/gemfiles/ruby_2.5_rails5_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails5_postgres_redis.gemfile.lock b/gemfiles/ruby_2.5_rails5_postgres_redis.gemfile.lock index a27b41bb7a0..550d21da0a6 100644 --- a/gemfiles/ruby_2.5_rails5_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_2.5_rails5_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -80,7 +80,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -99,8 +99,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -236,12 +236,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -251,7 +248,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -282,7 +278,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails5_postgres_redis_activesupport.gemfile b/gemfiles/ruby_2.5_rails5_postgres_redis_activesupport.gemfile index f4e260c9692..3a852a09a7b 100644 --- a/gemfiles/ruby_2.5_rails5_postgres_redis_activesupport.gemfile +++ b/gemfiles/ruby_2.5_rails5_postgres_redis_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails5_postgres_redis_activesupport.gemfile.lock b/gemfiles/ruby_2.5_rails5_postgres_redis_activesupport.gemfile.lock index 8604a563148..abdae4a5183 100644 --- a/gemfiles/ruby_2.5_rails5_postgres_redis_activesupport.gemfile.lock +++ b/gemfiles/ruby_2.5_rails5_postgres_redis_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -79,7 +79,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -98,8 +98,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -248,12 +248,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -263,7 +260,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -296,7 +292,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails5_postgres_sidekiq.gemfile b/gemfiles/ruby_2.5_rails5_postgres_sidekiq.gemfile index 2cbf890d800..d5a13eed302 100644 --- a/gemfiles/ruby_2.5_rails5_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_2.5_rails5_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails5_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_2.5_rails5_postgres_sidekiq.gemfile.lock index c39b2e2ea55..9d7bc2d74c9 100644 --- a/gemfiles/ruby_2.5_rails5_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_2.5_rails5_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -80,7 +80,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -99,8 +99,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -237,12 +237,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -253,7 +250,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -284,7 +280,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails5_semantic_logger.gemfile b/gemfiles/ruby_2.5_rails5_semantic_logger.gemfile index 9f990f4147c..77d9c1d451c 100644 --- a/gemfiles/ruby_2.5_rails5_semantic_logger.gemfile +++ b/gemfiles/ruby_2.5_rails5_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails5_semantic_logger.gemfile.lock b/gemfiles/ruby_2.5_rails5_semantic_logger.gemfile.lock index 0ebf4956226..c7a40ee7977 100644 --- a/gemfiles/ruby_2.5_rails5_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_2.5_rails5_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -79,7 +79,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -98,8 +98,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -230,12 +230,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -245,7 +242,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -275,7 +271,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails61_mysql2.gemfile b/gemfiles/ruby_2.5_rails61_mysql2.gemfile index a507a4b07db..9fd2acbc92e 100644 --- a/gemfiles/ruby_2.5_rails61_mysql2.gemfile +++ b/gemfiles/ruby_2.5_rails61_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails61_mysql2.gemfile.lock b/gemfiles/ruby_2.5_rails61_mysql2.gemfile.lock index 611706f87ff..c3e2f558de7 100644 --- a/gemfiles/ruby_2.5_rails61_mysql2.gemfile.lock +++ b/gemfiles/ruby_2.5_rails61_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -96,7 +96,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -113,8 +113,8 @@ GEM concurrent-ruby (~> 1.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -230,12 +230,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -246,7 +243,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -277,7 +273,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails61_postgres.gemfile b/gemfiles/ruby_2.5_rails61_postgres.gemfile index 48285f6e06b..10ca817471a 100644 --- a/gemfiles/ruby_2.5_rails61_postgres.gemfile +++ b/gemfiles/ruby_2.5_rails61_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails61_postgres.gemfile.lock b/gemfiles/ruby_2.5_rails61_postgres.gemfile.lock index 6b369448160..71857553466 100644 --- a/gemfiles/ruby_2.5_rails61_postgres.gemfile.lock +++ b/gemfiles/ruby_2.5_rails61_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -96,7 +96,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -115,8 +115,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -249,12 +249,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -265,7 +262,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -295,7 +291,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails61_postgres_redis.gemfile b/gemfiles/ruby_2.5_rails61_postgres_redis.gemfile index 4c5f3760caa..a371515efd2 100644 --- a/gemfiles/ruby_2.5_rails61_postgres_redis.gemfile +++ b/gemfiles/ruby_2.5_rails61_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails61_postgres_redis.gemfile.lock b/gemfiles/ruby_2.5_rails61_postgres_redis.gemfile.lock index 22a09c3be3a..470695d214a 100644 --- a/gemfiles/ruby_2.5_rails61_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_2.5_rails61_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -97,7 +97,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -116,8 +116,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -254,12 +254,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -270,7 +267,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -301,7 +297,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails61_postgres_sidekiq.gemfile b/gemfiles/ruby_2.5_rails61_postgres_sidekiq.gemfile index ef936fe1b7f..974608cead6 100644 --- a/gemfiles/ruby_2.5_rails61_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_2.5_rails61_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails61_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_2.5_rails61_postgres_sidekiq.gemfile.lock index dc5ee375c48..5386dee862d 100644 --- a/gemfiles/ruby_2.5_rails61_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_2.5_rails61_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -97,7 +97,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -116,8 +116,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -255,12 +255,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -271,7 +268,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -302,7 +298,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails61_semantic_logger.gemfile b/gemfiles/ruby_2.5_rails61_semantic_logger.gemfile index e4ba84c9d14..9f062ca5b9a 100644 --- a/gemfiles/ruby_2.5_rails61_semantic_logger.gemfile +++ b/gemfiles/ruby_2.5_rails61_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails61_semantic_logger.gemfile.lock b/gemfiles/ruby_2.5_rails61_semantic_logger.gemfile.lock index b8abae84158..facd4e1c93b 100644 --- a/gemfiles/ruby_2.5_rails61_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_2.5_rails61_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -96,7 +96,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -115,8 +115,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -248,12 +248,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -264,7 +261,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -294,7 +290,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails6_mysql2.gemfile b/gemfiles/ruby_2.5_rails6_mysql2.gemfile index d50ffeeeb29..dbbb1fa919a 100644 --- a/gemfiles/ruby_2.5_rails6_mysql2.gemfile +++ b/gemfiles/ruby_2.5_rails6_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails6_mysql2.gemfile.lock b/gemfiles/ruby_2.5_rails6_mysql2.gemfile.lock index 8c53d969aee..a625ab38795 100644 --- a/gemfiles/ruby_2.5_rails6_mysql2.gemfile.lock +++ b/gemfiles/ruby_2.5_rails6_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -92,7 +92,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -109,8 +109,8 @@ GEM concurrent-ruby (~> 1.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -227,12 +227,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -243,7 +240,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -274,7 +270,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails6_postgres.gemfile b/gemfiles/ruby_2.5_rails6_postgres.gemfile index f66c4c25e8f..e2e3a810fc1 100644 --- a/gemfiles/ruby_2.5_rails6_postgres.gemfile +++ b/gemfiles/ruby_2.5_rails6_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails6_postgres.gemfile.lock b/gemfiles/ruby_2.5_rails6_postgres.gemfile.lock index 1f441b8d341..7776e57ad65 100644 --- a/gemfiles/ruby_2.5_rails6_postgres.gemfile.lock +++ b/gemfiles/ruby_2.5_rails6_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -92,7 +92,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -111,8 +111,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -246,12 +246,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -262,7 +259,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -292,7 +288,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails6_postgres_redis.gemfile b/gemfiles/ruby_2.5_rails6_postgres_redis.gemfile index aa14e371a6d..f5b5eeee45e 100644 --- a/gemfiles/ruby_2.5_rails6_postgres_redis.gemfile +++ b/gemfiles/ruby_2.5_rails6_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails6_postgres_redis.gemfile.lock b/gemfiles/ruby_2.5_rails6_postgres_redis.gemfile.lock index 57d3e7a9a05..f224447680e 100644 --- a/gemfiles/ruby_2.5_rails6_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_2.5_rails6_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -93,7 +93,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -112,8 +112,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -251,12 +251,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -267,7 +264,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -298,7 +294,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails6_postgres_redis_activesupport.gemfile b/gemfiles/ruby_2.5_rails6_postgres_redis_activesupport.gemfile index af8328d1ce2..231c394853e 100644 --- a/gemfiles/ruby_2.5_rails6_postgres_redis_activesupport.gemfile +++ b/gemfiles/ruby_2.5_rails6_postgres_redis_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails6_postgres_redis_activesupport.gemfile.lock b/gemfiles/ruby_2.5_rails6_postgres_redis_activesupport.gemfile.lock index edffef91399..3713f536a94 100644 --- a/gemfiles/ruby_2.5_rails6_postgres_redis_activesupport.gemfile.lock +++ b/gemfiles/ruby_2.5_rails6_postgres_redis_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -92,7 +92,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -111,8 +111,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -263,12 +263,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -279,7 +276,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -312,7 +308,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails6_postgres_sidekiq.gemfile b/gemfiles/ruby_2.5_rails6_postgres_sidekiq.gemfile index 243d0b36c94..2e32d475e0a 100644 --- a/gemfiles/ruby_2.5_rails6_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_2.5_rails6_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails6_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_2.5_rails6_postgres_sidekiq.gemfile.lock index d774049a56b..14d38b75636 100644 --- a/gemfiles/ruby_2.5_rails6_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_2.5_rails6_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -93,7 +93,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -112,8 +112,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -252,12 +252,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -269,7 +266,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -300,7 +296,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_rails6_semantic_logger.gemfile b/gemfiles/ruby_2.5_rails6_semantic_logger.gemfile index 095ed7ebb7c..6589e611bc7 100644 --- a/gemfiles/ruby_2.5_rails6_semantic_logger.gemfile +++ b/gemfiles/ruby_2.5_rails6_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_rails6_semantic_logger.gemfile.lock b/gemfiles/ruby_2.5_rails6_semantic_logger.gemfile.lock index 24ea1c3a523..ff225f1c26a 100644 --- a/gemfiles/ruby_2.5_rails6_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_2.5_rails6_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -92,7 +92,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest (3.1.1) @@ -111,8 +111,8 @@ GEM io-wait (0.3.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -245,12 +245,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -261,7 +258,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -291,7 +287,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_redis_3.gemfile b/gemfiles/ruby_2.5_redis_3.gemfile index 0870da8e1cd..b30ff0b81d7 100644 --- a/gemfiles/ruby_2.5_redis_3.gemfile +++ b/gemfiles/ruby_2.5_redis_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_redis_3.gemfile.lock b/gemfiles/ruby_2.5_redis_3.gemfile.lock index 6f900cbe04c..386c64e2e29 100644 --- a/gemfiles/ruby_2.5_redis_3.gemfile.lock +++ b/gemfiles/ruby_2.5_redis_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,13 +30,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -48,8 +47,8 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -104,9 +103,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -116,7 +112,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -143,7 +138,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_redis_4.gemfile b/gemfiles/ruby_2.5_redis_4.gemfile index 219bb5fb059..323026cd631 100644 --- a/gemfiles/ruby_2.5_redis_4.gemfile +++ b/gemfiles/ruby_2.5_redis_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_redis_4.gemfile.lock b/gemfiles/ruby_2.5_redis_4.gemfile.lock index bf3832484fc..e2919fde24d 100644 --- a/gemfiles/ruby_2.5_redis_4.gemfile.lock +++ b/gemfiles/ruby_2.5_redis_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,13 +30,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -48,8 +47,8 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -104,9 +103,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -116,7 +112,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -143,7 +138,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_redis_5.gemfile b/gemfiles/ruby_2.5_redis_5.gemfile index 5153f24ce71..24cce091ec9 100644 --- a/gemfiles/ruby_2.5_redis_5.gemfile +++ b/gemfiles/ruby_2.5_redis_5.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_redis_5.gemfile.lock b/gemfiles/ruby_2.5_redis_5.gemfile.lock index cdda1f26173..2141f9358b0 100644 --- a/gemfiles/ruby_2.5_redis_5.gemfile.lock +++ b/gemfiles/ruby_2.5_redis_5.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,14 +30,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -49,8 +48,8 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -108,9 +107,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -120,7 +116,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -147,7 +142,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_relational_db.gemfile b/gemfiles/ruby_2.5_relational_db.gemfile index dbce95fb6f2..69e4e7e1d79 100644 --- a/gemfiles/ruby_2.5_relational_db.gemfile +++ b/gemfiles/ruby_2.5_relational_db.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false @@ -37,7 +35,7 @@ gem "delayed_job_active_record" gem "makara" gem "mysql2", "< 1", platform: :ruby gem "pg", ">= 0.18.4", platform: :ruby -gem "sequel", "~> 5.54.0" +gem "sequel" gem "sqlite3", "~> 1.4.1", platform: :ruby group :check do diff --git a/gemfiles/ruby_2.5_relational_db.gemfile.lock b/gemfiles/ruby_2.5_relational_db.gemfile.lock index c8a2925b195..5e9d1138f5e 100644 --- a/gemfiles/ruby_2.5_relational_db.gemfile.lock +++ b/gemfiles/ruby_2.5_relational_db.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -40,15 +40,15 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) + bigdecimal (3.1.8) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) delayed_job (4.1.11) activesupport (>= 3.0, < 8.0) @@ -67,8 +67,8 @@ GEM concurrent-ruby (~> 1.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -115,7 +115,8 @@ GEM rspec (>= 3, < 4) rspec_junit_formatter (0.6.0) rspec-core (>= 2, < 4, != 2.12.0) - sequel (5.54.0) + sequel (5.83.1) + bigdecimal simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -132,7 +133,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -143,7 +143,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -170,13 +169,12 @@ DEPENDENCIES rspec-collection_matchers (~> 1.1) rspec-wait (~> 0) rspec_junit_formatter (>= 0.5.1) - sequel (~> 5.54.0) + sequel simplecov! simplecov-cobertura (~> 2.1.0) sqlite3 (~> 1.4.1) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_resque2_redis3.gemfile b/gemfiles/ruby_2.5_resque2_redis3.gemfile index 2d167df40b7..fde74df0e0b 100644 --- a/gemfiles/ruby_2.5_resque2_redis3.gemfile +++ b/gemfiles/ruby_2.5_resque2_redis3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_resque2_redis3.gemfile.lock b/gemfiles/ruby_2.5_resque2_redis3.gemfile.lock index 60822391d25..5907044aba1 100644 --- a/gemfiles/ruby_2.5_resque2_redis3.gemfile.lock +++ b/gemfiles/ruby_2.5_resque2_redis3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,13 +30,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -48,8 +47,8 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -125,9 +124,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -137,7 +133,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -165,7 +160,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_resque2_redis4.gemfile b/gemfiles/ruby_2.5_resque2_redis4.gemfile index c9e61b23ef9..d181c1a8e83 100644 --- a/gemfiles/ruby_2.5_resque2_redis4.gemfile +++ b/gemfiles/ruby_2.5_resque2_redis4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_resque2_redis4.gemfile.lock b/gemfiles/ruby_2.5_resque2_redis4.gemfile.lock index 3f9dbc41b93..5665117a366 100644 --- a/gemfiles/ruby_2.5_resque2_redis4.gemfile.lock +++ b/gemfiles/ruby_2.5_resque2_redis4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -30,14 +30,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -49,8 +48,8 @@ GEM hashdiff (1.0.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -129,9 +128,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -141,7 +137,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -169,7 +164,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_sinatra_2.gemfile b/gemfiles/ruby_2.5_sinatra_2.gemfile index 20109b7847c..33251495609 100644 --- a/gemfiles/ruby_2.5_sinatra_2.gemfile +++ b/gemfiles/ruby_2.5_sinatra_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false diff --git a/gemfiles/ruby_2.5_sinatra_2.gemfile.lock b/gemfiles/ruby_2.5_sinatra_2.gemfile.lock index 4f1ef6d49e6..43e52646a86 100644 --- a/gemfiles/ruby_2.5_sinatra_2.gemfile.lock +++ b/gemfiles/ruby_2.5_sinatra_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -32,14 +32,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -51,8 +50,8 @@ GEM hashdiff (1.1.0) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -123,7 +122,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.36) PLATFORMS aarch64-linux @@ -133,7 +131,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -162,7 +159,6 @@ DEPENDENCIES sinatra (~> 2) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.5_stripe_10.gemfile b/gemfiles/ruby_2.5_stripe_10.gemfile new file mode 100644 index 00000000000..59ee078f917 --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_10.gemfile @@ -0,0 +1,42 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-nav" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 10" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.5_stripe_10.gemfile.lock b/gemfiles/ruby_2.5_stripe_10.gemfile.lock new file mode 100644 index 00000000000..b766cacebea --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_10.gemfile.lock @@ -0,0 +1,147 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (0.8.0) + debug_inspector (>= 0.0.1) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-nav (1.0.0) + pry (>= 0.9.10, < 0.15) + pry-stack_explorer (0.4.13) + binding_of_caller (~> 0.7) + pry (~> 0.13) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (10.15.0) + strscan (3.1.0) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-nav + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 10) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.5_stripe_11.gemfile b/gemfiles/ruby_2.5_stripe_11.gemfile new file mode 100644 index 00000000000..abc342f898e --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_11.gemfile @@ -0,0 +1,42 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-nav" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.5_stripe_11.gemfile.lock b/gemfiles/ruby_2.5_stripe_11.gemfile.lock new file mode 100644 index 00000000000..11e0b64b5be --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_11.gemfile.lock @@ -0,0 +1,147 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (0.8.0) + debug_inspector (>= 0.0.1) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-nav (1.0.0) + pry (>= 0.9.10, < 0.15) + pry-stack_explorer (0.4.13) + binding_of_caller (~> 0.7) + pry (~> 0.13) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (11.7.0) + strscan (3.1.0) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-nav + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 11) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.5_stripe_12.gemfile b/gemfiles/ruby_2.5_stripe_12.gemfile new file mode 100644 index 00000000000..1738130fa8a --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_12.gemfile @@ -0,0 +1,42 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-nav" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 12" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.5_stripe_12.gemfile.lock b/gemfiles/ruby_2.5_stripe_12.gemfile.lock new file mode 100644 index 00000000000..40d0da1093e --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_12.gemfile.lock @@ -0,0 +1,147 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (0.8.0) + debug_inspector (>= 0.0.1) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-nav (1.0.0) + pry (>= 0.9.10, < 0.15) + pry-stack_explorer (0.4.13) + binding_of_caller (~> 0.7) + pry (~> 0.13) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (12.5.0) + strscan (3.1.0) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-nav + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 12) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.5_stripe_7.gemfile b/gemfiles/ruby_2.5_stripe_7.gemfile new file mode 100644 index 00000000000..badbd8c6b2a --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_7.gemfile @@ -0,0 +1,42 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-nav" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 7" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.5_stripe_7.gemfile.lock b/gemfiles/ruby_2.5_stripe_7.gemfile.lock new file mode 100644 index 00000000000..ddc97736189 --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_7.gemfile.lock @@ -0,0 +1,147 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (0.8.0) + debug_inspector (>= 0.0.1) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-nav (1.0.0) + pry (>= 0.9.10, < 0.15) + pry-stack_explorer (0.4.13) + binding_of_caller (~> 0.7) + pry (~> 0.13) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (7.1.0) + strscan (3.1.0) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-nav + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 7) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.5_stripe_8.gemfile b/gemfiles/ruby_2.5_stripe_8.gemfile new file mode 100644 index 00000000000..8e2c74e2291 --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_8.gemfile @@ -0,0 +1,42 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-nav" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 8" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.5_stripe_8.gemfile.lock b/gemfiles/ruby_2.5_stripe_8.gemfile.lock new file mode 100644 index 00000000000..b48d056524b --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_8.gemfile.lock @@ -0,0 +1,147 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (0.8.0) + debug_inspector (>= 0.0.1) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-nav (1.0.0) + pry (>= 0.9.10, < 0.15) + pry-stack_explorer (0.4.13) + binding_of_caller (~> 0.7) + pry (~> 0.13) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (8.7.0) + strscan (3.1.0) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-nav + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 8) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.5_stripe_9.gemfile b/gemfiles/ruby_2.5_stripe_9.gemfile new file mode 100644 index 00000000000..4193fb6030e --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_9.gemfile @@ -0,0 +1,42 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-nav" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 9" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.5_stripe_9.gemfile.lock b/gemfiles/ruby_2.5_stripe_9.gemfile.lock new file mode 100644 index 00000000000..16ba36bf97e --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_9.gemfile.lock @@ -0,0 +1,147 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (0.8.0) + debug_inspector (>= 0.0.1) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-nav (1.0.0) + pry (>= 0.9.10, < 0.15) + pry-stack_explorer (0.4.13) + binding_of_caller (~> 0.7) + pry (~> 0.13) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (9.4.0) + strscan (3.1.0) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-nav + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 9) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.5_stripe_latest.gemfile b/gemfiles/ruby_2.5_stripe_latest.gemfile new file mode 100644 index 00000000000..c9749e0a8b9 --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_latest.gemfile @@ -0,0 +1,42 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-nav" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.5_stripe_latest.gemfile.lock b/gemfiles/ruby_2.5_stripe_latest.gemfile.lock new file mode 100644 index 00000000000..c0aec5d79be --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_latest.gemfile.lock @@ -0,0 +1,145 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (0.8.0) + debug_inspector (>= 0.0.1) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-nav (1.0.0) + pry (>= 0.9.10, < 0.15) + pry-stack_explorer (0.4.13) + binding_of_caller (~> 0.7) + pry (~> 0.13) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (13.0.1) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-nav + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.5_stripe_min.gemfile b/gemfiles/ruby_2.5_stripe_min.gemfile new file mode 100644 index 00000000000..29311ec826a --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_min.gemfile @@ -0,0 +1,42 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-nav" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "= 5.15.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.5_stripe_min.gemfile.lock b/gemfiles/ruby_2.5_stripe_min.gemfile.lock new file mode 100644 index 00000000000..1fc408eb359 --- /dev/null +++ b/gemfiles/ruby_2.5_stripe_min.gemfile.lock @@ -0,0 +1,145 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (0.8.0) + debug_inspector (>= 0.0.1) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-nav (1.0.0) + pry (>= 0.9.10, < 0.15) + pry-stack_explorer (0.4.13) + binding_of_caller (~> 0.7) + pry (~> 0.13) + public_suffix (4.0.7) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (5.15.0) + thor (1.2.2) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-nav + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (= 5.15.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.6_activesupport.gemfile b/gemfiles/ruby_2.6_activesupport.gemfile index cdd40ce9e56..12ae3271fdf 100644 --- a/gemfiles/ruby_2.6_activesupport.gemfile +++ b/gemfiles/ruby_2.6_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_activesupport.gemfile.lock b/gemfiles/ruby_2.6_activesupport.gemfile.lock index 2b3d445c64b..d5ea7fbaae9 100644 --- a/gemfiles/ruby_2.6_activesupport.gemfile.lock +++ b/gemfiles/ruby_2.6_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -67,7 +67,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest-crc (0.6.5) @@ -112,8 +112,8 @@ GEM addressable (>= 2.4) jsonapi-renderer (0.2.2) king_konf (1.0.1) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -249,7 +249,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) zeitwerk (2.6.11) PLATFORMS @@ -264,7 +263,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -298,7 +296,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_aws.gemfile b/gemfiles/ruby_2.6_aws.gemfile index 9e7eb2badbe..ee3ab126770 100644 --- a/gemfiles/ruby_2.6_aws.gemfile +++ b/gemfiles/ruby_2.6_aws.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_aws.gemfile.lock b/gemfiles/ruby_2.6_aws.gemfile.lock index 64abda8443f..d323f505635 100644 --- a/gemfiles/ruby_2.6_aws.gemfile.lock +++ b/gemfiles/ruby_2.6_aws.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -1452,14 +1452,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -1473,8 +1472,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -1564,7 +1563,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -1575,7 +1573,6 @@ DEPENDENCIES aws-sdk benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -1606,7 +1603,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_contrib.gemfile b/gemfiles/ruby_2.6_contrib.gemfile index 3c1f5b97ac8..cc63dcfb51d 100644 --- a/gemfiles/ruby_2.6_contrib.gemfile +++ b/gemfiles/ruby_2.6_contrib.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_contrib.gemfile.lock b/gemfiles/ruby_2.6_contrib.gemfile.lock index 720e1be6adf..e5e7422c9d5 100644 --- a/gemfiles/ruby_2.6_contrib.gemfile.lock +++ b/gemfiles/ruby_2.6_contrib.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,7 +33,6 @@ GEM binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) bson (4.15.0) - builder (3.2.4) bunny (2.20.3) amq-protocol (~> 2.3, >= 2.3.1) sorted_set (~> 1, >= 1.0.2) @@ -45,7 +44,7 @@ GEM crack (0.4.5) rexml dalli (3.2.4) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -66,8 +65,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -202,9 +201,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -214,7 +210,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (>= 3.0.0) @@ -256,7 +251,6 @@ DEPENDENCIES sucker_punch warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_contrib_old.gemfile b/gemfiles/ruby_2.6_contrib_old.gemfile index a999ac914f4..ce6d13135ff 100644 --- a/gemfiles/ruby_2.6_contrib_old.gemfile +++ b/gemfiles/ruby_2.6_contrib_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_contrib_old.gemfile.lock b/gemfiles/ruby_2.6_contrib_old.gemfile.lock index a0d3500cdcf..1c94d689149 100644 --- a/gemfiles/ruby_2.6_contrib_old.gemfile.lock +++ b/gemfiles/ruby_2.6_contrib_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,7 +34,6 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -43,7 +42,7 @@ GEM rexml daemons (1.4.1) dalli (2.7.11) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -62,8 +61,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -189,9 +188,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -201,7 +197,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (< 3.0.0) @@ -235,7 +230,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_core_old.gemfile b/gemfiles/ruby_2.6_core_old.gemfile index 48d299ffdaf..aa95a9e34f8 100644 --- a/gemfiles/ruby_2.6_core_old.gemfile +++ b/gemfiles/ruby_2.6_core_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_core_old.gemfile.lock b/gemfiles/ruby_2.6_core_old.gemfile.lock index e71a6dcffd2..6188a9b898e 100644 --- a/gemfiles/ruby_2.6_core_old.gemfile.lock +++ b/gemfiles/ruby_2.6_core_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -136,9 +135,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -148,7 +144,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -178,7 +173,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_elasticsearch_7.gemfile b/gemfiles/ruby_2.6_elasticsearch_7.gemfile index 1d58bd96636..c3204a0e79c 100644 --- a/gemfiles/ruby_2.6_elasticsearch_7.gemfile +++ b/gemfiles/ruby_2.6_elasticsearch_7.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_elasticsearch_7.gemfile.lock b/gemfiles/ruby_2.6_elasticsearch_7.gemfile.lock index 59868edcb79..9a81f56f016 100644 --- a/gemfiles/ruby_2.6_elasticsearch_7.gemfile.lock +++ b/gemfiles/ruby_2.6_elasticsearch_7.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -32,14 +32,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -83,8 +82,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -174,7 +173,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -184,7 +182,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -215,7 +212,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_elasticsearch_8.gemfile b/gemfiles/ruby_2.6_elasticsearch_8.gemfile index 64b04551ec3..aba56b05809 100644 --- a/gemfiles/ruby_2.6_elasticsearch_8.gemfile +++ b/gemfiles/ruby_2.6_elasticsearch_8.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_elasticsearch_8.gemfile.lock b/gemfiles/ruby_2.6_elasticsearch_8.gemfile.lock index 74d5da2bdec..568cd09b88a 100644 --- a/gemfiles/ruby_2.6_elasticsearch_8.gemfile.lock +++ b/gemfiles/ruby_2.6_elasticsearch_8.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +33,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -66,8 +65,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -156,7 +155,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -166,7 +164,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -197,7 +194,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_elasticsearch_latest.gemfile b/gemfiles/ruby_2.6_elasticsearch_latest.gemfile new file mode 100644 index 00000000000..c81a5e83beb --- /dev/null +++ b/gemfiles/ruby_2.6_elasticsearch_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "elasticsearch" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.6_elasticsearch_latest.gemfile.lock b/gemfiles/ruby_2.6_elasticsearch_latest.gemfile.lock new file mode 100644 index 00000000000..7af1f266ed2 --- /dev/null +++ b/gemfiles/ruby_2.6_elasticsearch_latest.gemfile.lock @@ -0,0 +1,199 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + elastic-transport (8.3.5) + faraday (< 3) + multi_json + elasticsearch (8.15.0) + elastic-transport (~> 8.3) + elasticsearch-api (= 8.15.0) + elasticsearch-api (8.15.0) + multi_json + extlz4 (0.3.4) + faraday (2.8.1) + base64 + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + multi_json (1.15.0) + os (1.1.4) + parallel (1.24.0) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.8.0) + byebug (~> 11.0) + pry (~> 0.10) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + elasticsearch + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.6_graphql_1.13.gemfile b/gemfiles/ruby_2.6_graphql_1.13.gemfile index 1dc69e61ca9..9d7ececcb36 100644 --- a/gemfiles/ruby_2.6_graphql_1.13.gemfile +++ b/gemfiles/ruby_2.6_graphql_1.13.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,7 +33,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 1.13.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_2.6_graphql_1.13.gemfile.lock b/gemfiles/ruby_2.6_graphql_1.13.gemfile.lock index 4b9bf67632a..65525cdbc60 100644 --- a/gemfiles/ruby_2.6_graphql_1.13.gemfile.lock +++ b/gemfiles/ruby_2.6_graphql_1.13.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -39,29 +99,66 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.19.1) google-protobuf (3.19.1-x86_64-linux) graphql (1.13.21) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.3.7) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.13.10-aarch64-linux) + racc (~> 1.4) + nokogiri (1.13.10-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -79,11 +176,43 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.5.0) + loofah (~> 2.19, >= 2.19.1) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -133,15 +262,29 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -151,7 +294,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -161,12 +303,14 @@ DEPENDENCIES google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) graphql (~> 1.13.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-byebug pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -180,9 +324,9 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_graphql_2.0.gemfile b/gemfiles/ruby_2.6_graphql_2.0.gemfile index 7bbc314d2b0..6dd66c98f46 100644 --- a/gemfiles/ruby_2.6_graphql_2.0.gemfile +++ b/gemfiles/ruby_2.6_graphql_2.0.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,7 +33,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.0.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_2.6_graphql_2.0.gemfile.lock b/gemfiles/ruby_2.6_graphql_2.0.gemfile.lock index fc17f37b5c0..aceee240207 100644 --- a/gemfiles/ruby_2.6_graphql_2.0.gemfile.lock +++ b/gemfiles/ruby_2.6_graphql_2.0.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -39,29 +99,66 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.19.1) google-protobuf (3.19.1-x86_64-linux) graphql (2.0.28) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.3.7) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.13.10-aarch64-linux) + racc (~> 1.4) + nokogiri (1.13.10-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -79,11 +176,43 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.5.0) + loofah (~> 2.19, >= 2.19.1) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -133,15 +262,29 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -151,7 +294,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -161,12 +303,14 @@ DEPENDENCIES google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) graphql (~> 2.0.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-byebug pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -180,9 +324,9 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_hanami_1.gemfile b/gemfiles/ruby_2.6_hanami_1.gemfile index 8e71ae1e8f2..d9e6a976434 100644 --- a/gemfiles/ruby_2.6_hanami_1.gemfile +++ b/gemfiles/ruby_2.6_hanami_1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_hanami_1.gemfile.lock b/gemfiles/ruby_2.6_hanami_1.gemfile.lock index f6d170bd2f1..3c96370b65c 100644 --- a/gemfiles/ruby_2.6_hanami_1.gemfile.lock +++ b/gemfiles/ruby_2.6_hanami_1.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,15 +31,14 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -126,8 +125,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -234,9 +233,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -246,7 +242,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -279,7 +274,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_http.gemfile b/gemfiles/ruby_2.6_http.gemfile index aa4fdafef39..606ea6b6fc7 100644 --- a/gemfiles/ruby_2.6_http.gemfile +++ b/gemfiles/ruby_2.6_http.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -41,7 +39,6 @@ gem "faraday" gem "http" gem "httpclient" gem "rest-client" -gem "stripe", "~> 8.0" gem "typhoeus" group :check do diff --git a/gemfiles/ruby_2.6_http.gemfile.lock b/gemfiles/ruby_2.6_http.gemfile.lock index 0dd1a2a5fb8..1eee30e37b4 100644 --- a/gemfiles/ruby_2.6_http.gemfile.lock +++ b/gemfiles/ruby_2.6_http.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -73,8 +72,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -165,7 +164,6 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) - stripe (8.7.0) strscan (3.1.0) thor (1.2.2) typhoeus (1.4.0) @@ -179,7 +177,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -189,7 +186,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -223,11 +219,9 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) - stripe (~> 8.0) typhoeus warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_opensearch_2.gemfile b/gemfiles/ruby_2.6_opensearch_2.gemfile index 6d51979da7b..36912a9d9df 100644 --- a/gemfiles/ruby_2.6_opensearch_2.gemfile +++ b/gemfiles/ruby_2.6_opensearch_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_opensearch_2.gemfile.lock b/gemfiles/ruby_2.6_opensearch_2.gemfile.lock index b2d102b8da4..7585dc5a7ec 100644 --- a/gemfiles/ruby_2.6_opensearch_2.gemfile.lock +++ b/gemfiles/ruby_2.6_opensearch_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +33,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -58,8 +57,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -156,7 +155,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -166,7 +164,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -197,7 +194,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_opensearch_3.gemfile b/gemfiles/ruby_2.6_opensearch_3.gemfile index 89c9f5c8087..0cc2d62c801 100644 --- a/gemfiles/ruby_2.6_opensearch_3.gemfile +++ b/gemfiles/ruby_2.6_opensearch_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_opensearch_3.gemfile.lock b/gemfiles/ruby_2.6_opensearch_3.gemfile.lock index 75ec4231e1e..de8a22ac13f 100644 --- a/gemfiles/ruby_2.6_opensearch_3.gemfile.lock +++ b/gemfiles/ruby_2.6_opensearch_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +33,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -58,8 +57,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -151,7 +150,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -161,7 +159,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -192,7 +189,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_opensearch_latest.gemfile b/gemfiles/ruby_2.6_opensearch_latest.gemfile new file mode 100644 index 00000000000..ffe97a76e3d --- /dev/null +++ b/gemfiles/ruby_2.6_opensearch_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "opensearch-ruby" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.6_opensearch_latest.gemfile.lock b/gemfiles/ruby_2.6_opensearch_latest.gemfile.lock new file mode 100644 index 00000000000..38c30a88eee --- /dev/null +++ b/gemfiles/ruby_2.6_opensearch_latest.gemfile.lock @@ -0,0 +1,194 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + faraday (2.8.1) + base64 + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + multi_json (1.15.0) + opensearch-ruby (3.4.0) + faraday (>= 1.0, < 3) + multi_json (>= 1.0) + os (1.1.4) + parallel (1.24.0) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.8.0) + byebug (~> 11.0) + pry (~> 0.10) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opensearch-ruby + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.6_opentelemetry.gemfile b/gemfiles/ruby_2.6_opentelemetry.gemfile index 2e08d4dbaab..27205de6af0 100644 --- a/gemfiles/ruby_2.6_opentelemetry.gemfile +++ b/gemfiles/ruby_2.6_opentelemetry.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_opentelemetry.gemfile.lock b/gemfiles/ruby_2.6_opentelemetry.gemfile.lock index 47c2654db7c..1c5d5adb45a 100755 --- a/gemfiles/ruby_2.6_opentelemetry.gemfile.lock +++ b/gemfiles/ruby_2.6_opentelemetry.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -148,9 +147,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -160,7 +156,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -191,7 +186,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_opentelemetry_otlp.gemfile b/gemfiles/ruby_2.6_opentelemetry_otlp.gemfile new file mode 100644 index 00000000000..c4cd5b11d94 --- /dev/null +++ b/gemfiles/ruby_2.6_opentelemetry_otlp.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "opentelemetry-sdk", "~> 1.1" +gem "opentelemetry-exporter-otlp" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.6_opentelemetry_otlp.gemfile.lock b/gemfiles/ruby_2.6_opentelemetry_otlp.gemfile.lock new file mode 100644 index 00000000000..e4fa7124b84 --- /dev/null +++ b/gemfiles/ruby_2.6_opentelemetry_otlp.gemfile.lock @@ -0,0 +1,205 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6) + binding_of_caller (1.0.0) + debug_inspector (>= 0.0.1) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.2.3) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + googleapis-common-protos-types (1.12.0) + google-protobuf (~> 3.18) + hashdiff (1.1.0) + json (2.7.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.0.0) + msgpack (1.7.3) + opentelemetry-api (1.1.0) + opentelemetry-common (0.19.7) + opentelemetry-api (~> 1.0) + opentelemetry-exporter-otlp (0.24.2) + google-protobuf (~> 3.19) + googleapis-common-protos-types (~> 1.3) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.19.6) + opentelemetry-sdk (~> 1.2) + opentelemetry-semantic_conventions + opentelemetry-registry (0.2.0) + opentelemetry-api (~> 1.1) + opentelemetry-sdk (1.2.1) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.19.3) + opentelemetry-registry (~> 0.2) + opentelemetry-semantic_conventions + opentelemetry-semantic_conventions (1.10.0) + opentelemetry-api (~> 1.0) + os (1.1.4) + parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.8.0) + byebug (~> 11.0) + pry (~> 0.10) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.0.4) + racc (1.7.3) + rainbow (3.1.1) + rake (13.1.0) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.0) + rexml (3.3.8) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + thor (1.3.1) + unicode-display_width (2.5.0) + warning (1.3.0) + webmock (3.23.0) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opentelemetry-exporter-otlp + opentelemetry-sdk (~> 1.1) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.6_rack_1.gemfile b/gemfiles/ruby_2.6_rack_1.gemfile index 532dbd54712..77c09de7979 100644 --- a/gemfiles/ruby_2.6_rack_1.gemfile +++ b/gemfiles/ruby_2.6_rack_1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rack_1.gemfile.lock b/gemfiles/ruby_2.6_rack_1.gemfile.lock index 4e0504664d2..f80d048be5b 100644 --- a/gemfiles/ruby_2.6_rack_1.gemfile.lock +++ b/gemfiles/ruby_2.6_rack_1.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -143,7 +142,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -153,7 +151,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -186,7 +183,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rack_2.gemfile b/gemfiles/ruby_2.6_rack_2.gemfile index 059751c5418..c339677aea0 100644 --- a/gemfiles/ruby_2.6_rack_2.gemfile +++ b/gemfiles/ruby_2.6_rack_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rack_2.gemfile.lock b/gemfiles/ruby_2.6_rack_2.gemfile.lock index 5a16b841028..5773a4ed703 100644 --- a/gemfiles/ruby_2.6_rack_2.gemfile.lock +++ b/gemfiles/ruby_2.6_rack_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -143,7 +142,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -153,7 +151,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -186,7 +183,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rack_3.gemfile b/gemfiles/ruby_2.6_rack_3.gemfile index 0350d07e282..3e35cc21fb0 100644 --- a/gemfiles/ruby_2.6_rack_3.gemfile +++ b/gemfiles/ruby_2.6_rack_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rack_3.gemfile.lock b/gemfiles/ruby_2.6_rack_3.gemfile.lock index 367e24c7ef5..095e7d7f3d0 100644 --- a/gemfiles/ruby_2.6_rack_3.gemfile.lock +++ b/gemfiles/ruby_2.6_rack_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -143,7 +142,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -153,7 +151,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -186,7 +183,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rack_latest.gemfile b/gemfiles/ruby_2.6_rack_latest.gemfile new file mode 100644 index 00000000000..667d3ef25a8 --- /dev/null +++ b/gemfiles/ruby_2.6_rack_latest.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "rack" +gem "rack-contrib" +gem "rack-test" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.6_rack_latest.gemfile.lock b/gemfiles/ruby_2.6_rack_latest.gemfile.lock new file mode 100644 index 00000000000..b8726fb7994 --- /dev/null +++ b/gemfiles/ruby_2.6_rack_latest.gemfile.lock @@ -0,0 +1,190 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.2) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.24.0) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.8.0) + byebug (~> 11.0) + pry (~> 0.10) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rack (3.1.8) + rack-contrib (2.5.0) + rack (< 4) + rack-test (2.1.0) + rack (>= 1.3) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rack + rack-contrib + rack-test + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.6_rails5_mysql2.gemfile b/gemfiles/ruby_2.6_rails5_mysql2.gemfile index f96aece4a55..1b98291bb91 100644 --- a/gemfiles/ruby_2.6_rails5_mysql2.gemfile +++ b/gemfiles/ruby_2.6_rails5_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails5_mysql2.gemfile.lock b/gemfiles/ruby_2.6_rails5_mysql2.gemfile.lock index 860a476b72a..dbcdc0c46a9 100644 --- a/gemfiles/ruby_2.6_rails5_mysql2.gemfile.lock +++ b/gemfiles/ruby_2.6_rails5_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -81,8 +81,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -100,8 +100,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -257,12 +257,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -272,7 +269,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -306,7 +302,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails5_postgres.gemfile b/gemfiles/ruby_2.6_rails5_postgres.gemfile index 5f06e963c36..d0cc6d1f390 100644 --- a/gemfiles/ruby_2.6_rails5_postgres.gemfile +++ b/gemfiles/ruby_2.6_rails5_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails5_postgres.gemfile.lock b/gemfiles/ruby_2.6_rails5_postgres.gemfile.lock index 44d91eb189c..e24908954a7 100644 --- a/gemfiles/ruby_2.6_rails5_postgres.gemfile.lock +++ b/gemfiles/ruby_2.6_rails5_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -81,8 +81,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -100,8 +100,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -257,12 +257,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -272,7 +269,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -306,7 +302,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails5_postgres_redis.gemfile b/gemfiles/ruby_2.6_rails5_postgres_redis.gemfile index df2251e438e..0c26db957f3 100644 --- a/gemfiles/ruby_2.6_rails5_postgres_redis.gemfile +++ b/gemfiles/ruby_2.6_rails5_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails5_postgres_redis.gemfile.lock b/gemfiles/ruby_2.6_rails5_postgres_redis.gemfile.lock index 6d9fec2b032..9870290a2f0 100644 --- a/gemfiles/ruby_2.6_rails5_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_2.6_rails5_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -81,8 +81,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -100,8 +100,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -258,12 +258,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -273,7 +270,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -308,7 +304,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails5_postgres_redis_activesupport.gemfile b/gemfiles/ruby_2.6_rails5_postgres_redis_activesupport.gemfile index c7dfa273431..95f23784b31 100644 --- a/gemfiles/ruby_2.6_rails5_postgres_redis_activesupport.gemfile +++ b/gemfiles/ruby_2.6_rails5_postgres_redis_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails5_postgres_redis_activesupport.gemfile.lock b/gemfiles/ruby_2.6_rails5_postgres_redis_activesupport.gemfile.lock index c0c7cf2ca90..fee32c68492 100644 --- a/gemfiles/ruby_2.6_rails5_postgres_redis_activesupport.gemfile.lock +++ b/gemfiles/ruby_2.6_rails5_postgres_redis_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -81,8 +81,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -100,8 +100,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -274,12 +274,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -289,7 +286,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -326,7 +322,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails5_postgres_sidekiq.gemfile b/gemfiles/ruby_2.6_rails5_postgres_sidekiq.gemfile index 394a765d5b4..4e12886ac17 100644 --- a/gemfiles/ruby_2.6_rails5_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_2.6_rails5_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails5_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_2.6_rails5_postgres_sidekiq.gemfile.lock index 536f9466862..1f25febd6af 100644 --- a/gemfiles/ruby_2.6_rails5_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_2.6_rails5_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -82,8 +82,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -101,8 +101,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -263,12 +263,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -279,7 +276,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -314,7 +310,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails5_semantic_logger.gemfile b/gemfiles/ruby_2.6_rails5_semantic_logger.gemfile index 86a4a1c2698..0ff3c5e4d58 100644 --- a/gemfiles/ruby_2.6_rails5_semantic_logger.gemfile +++ b/gemfiles/ruby_2.6_rails5_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails5_semantic_logger.gemfile.lock b/gemfiles/ruby_2.6_rails5_semantic_logger.gemfile.lock index 274b5f61d88..91b4b4452d9 100644 --- a/gemfiles/ruby_2.6_rails5_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_2.6_rails5_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -81,8 +81,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -100,8 +100,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -256,12 +256,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -271,7 +268,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -305,7 +301,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails61_mysql2.gemfile b/gemfiles/ruby_2.6_rails61_mysql2.gemfile index c99fb26582d..b388c01b189 100644 --- a/gemfiles/ruby_2.6_rails61_mysql2.gemfile +++ b/gemfiles/ruby_2.6_rails61_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails61_mysql2.gemfile.lock b/gemfiles/ruby_2.6_rails61_mysql2.gemfile.lock index 78d8cffc9dd..25c16c7ed04 100644 --- a/gemfiles/ruby_2.6_rails61_mysql2.gemfile.lock +++ b/gemfiles/ruby_2.6_rails61_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -275,12 +275,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -291,7 +288,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -325,7 +321,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails61_postgres.gemfile b/gemfiles/ruby_2.6_rails61_postgres.gemfile index 54d15975c20..b56078b83be 100644 --- a/gemfiles/ruby_2.6_rails61_postgres.gemfile +++ b/gemfiles/ruby_2.6_rails61_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails61_postgres.gemfile.lock b/gemfiles/ruby_2.6_rails61_postgres.gemfile.lock index 7647f021d7f..d9ea3df3f83 100644 --- a/gemfiles/ruby_2.6_rails61_postgres.gemfile.lock +++ b/gemfiles/ruby_2.6_rails61_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -275,12 +275,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -291,7 +288,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -325,7 +321,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails61_postgres_redis.gemfile b/gemfiles/ruby_2.6_rails61_postgres_redis.gemfile index ddca622d107..5a7b422c5f1 100644 --- a/gemfiles/ruby_2.6_rails61_postgres_redis.gemfile +++ b/gemfiles/ruby_2.6_rails61_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails61_postgres_redis.gemfile.lock b/gemfiles/ruby_2.6_rails61_postgres_redis.gemfile.lock index 7b0d87764b3..03caa04767e 100644 --- a/gemfiles/ruby_2.6_rails61_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_2.6_rails61_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -276,12 +276,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -292,7 +289,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -327,7 +323,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails61_postgres_sidekiq.gemfile b/gemfiles/ruby_2.6_rails61_postgres_sidekiq.gemfile index 669c8e7e5ce..e4e36b1e4cd 100644 --- a/gemfiles/ruby_2.6_rails61_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_2.6_rails61_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails61_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_2.6_rails61_postgres_sidekiq.gemfile.lock index 9c6444979b5..0f23cf3729f 100644 --- a/gemfiles/ruby_2.6_rails61_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_2.6_rails61_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -99,8 +99,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -118,8 +118,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -281,12 +281,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -297,7 +294,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -332,7 +328,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails61_semantic_logger.gemfile b/gemfiles/ruby_2.6_rails61_semantic_logger.gemfile index 85055dfdf28..d8113fd2c58 100644 --- a/gemfiles/ruby_2.6_rails61_semantic_logger.gemfile +++ b/gemfiles/ruby_2.6_rails61_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails61_semantic_logger.gemfile.lock b/gemfiles/ruby_2.6_rails61_semantic_logger.gemfile.lock index f02a6ae494a..1b2c49524c7 100644 --- a/gemfiles/ruby_2.6_rails61_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_2.6_rails61_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -274,12 +274,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -290,7 +287,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -324,7 +320,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails6_mysql2.gemfile b/gemfiles/ruby_2.6_rails6_mysql2.gemfile index 27f29d0ae3f..5b93603d70b 100644 --- a/gemfiles/ruby_2.6_rails6_mysql2.gemfile +++ b/gemfiles/ruby_2.6_rails6_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails6_mysql2.gemfile.lock b/gemfiles/ruby_2.6_rails6_mysql2.gemfile.lock index b2462743983..8248e296118 100644 --- a/gemfiles/ruby_2.6_rails6_mysql2.gemfile.lock +++ b/gemfiles/ruby_2.6_rails6_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -94,8 +94,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -113,8 +113,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -272,12 +272,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -288,7 +285,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -322,7 +318,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails6_postgres.gemfile b/gemfiles/ruby_2.6_rails6_postgres.gemfile index 5f9ce614ab2..7fa36a5665e 100644 --- a/gemfiles/ruby_2.6_rails6_postgres.gemfile +++ b/gemfiles/ruby_2.6_rails6_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails6_postgres.gemfile.lock b/gemfiles/ruby_2.6_rails6_postgres.gemfile.lock index a8b8aaef625..8f0916efb96 100644 --- a/gemfiles/ruby_2.6_rails6_postgres.gemfile.lock +++ b/gemfiles/ruby_2.6_rails6_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -94,8 +94,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -113,8 +113,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -272,12 +272,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -288,7 +285,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -322,7 +318,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails6_postgres_redis.gemfile b/gemfiles/ruby_2.6_rails6_postgres_redis.gemfile index db867cb4b93..18495d38871 100644 --- a/gemfiles/ruby_2.6_rails6_postgres_redis.gemfile +++ b/gemfiles/ruby_2.6_rails6_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails6_postgres_redis.gemfile.lock b/gemfiles/ruby_2.6_rails6_postgres_redis.gemfile.lock index 9ccef4e36bc..186fedf171c 100644 --- a/gemfiles/ruby_2.6_rails6_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_2.6_rails6_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -94,8 +94,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -113,8 +113,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -273,12 +273,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -289,7 +286,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -324,7 +320,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails6_postgres_redis_activesupport.gemfile b/gemfiles/ruby_2.6_rails6_postgres_redis_activesupport.gemfile index f7360e919b3..ef4fd4e064e 100644 --- a/gemfiles/ruby_2.6_rails6_postgres_redis_activesupport.gemfile +++ b/gemfiles/ruby_2.6_rails6_postgres_redis_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails6_postgres_redis_activesupport.gemfile.lock b/gemfiles/ruby_2.6_rails6_postgres_redis_activesupport.gemfile.lock index a6679215f74..8b9eb920797 100644 --- a/gemfiles/ruby_2.6_rails6_postgres_redis_activesupport.gemfile.lock +++ b/gemfiles/ruby_2.6_rails6_postgres_redis_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -94,8 +94,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -113,8 +113,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -289,12 +289,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -305,7 +302,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -342,7 +338,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails6_postgres_sidekiq.gemfile b/gemfiles/ruby_2.6_rails6_postgres_sidekiq.gemfile index 3e964cf115d..482ebd33ec6 100644 --- a/gemfiles/ruby_2.6_rails6_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_2.6_rails6_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails6_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_2.6_rails6_postgres_sidekiq.gemfile.lock index d56411603a1..b0a7d7d4795 100644 --- a/gemfiles/ruby_2.6_rails6_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_2.6_rails6_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -95,8 +95,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -114,8 +114,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -278,12 +278,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -295,7 +292,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -330,7 +326,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_rails6_semantic_logger.gemfile b/gemfiles/ruby_2.6_rails6_semantic_logger.gemfile index 9bfdc66672c..f4150fce391 100644 --- a/gemfiles/ruby_2.6_rails6_semantic_logger.gemfile +++ b/gemfiles/ruby_2.6_rails6_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_rails6_semantic_logger.gemfile.lock b/gemfiles/ruby_2.6_rails6_semantic_logger.gemfile.lock index 91e933feb02..cd0be8f765b 100644 --- a/gemfiles/ruby_2.6_rails6_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_2.6_rails6_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -94,8 +94,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -113,8 +113,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -271,12 +271,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -287,7 +284,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -321,7 +317,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_redis_3.gemfile b/gemfiles/ruby_2.6_redis_3.gemfile index a1d7c224917..4a0f2456b3a 100644 --- a/gemfiles/ruby_2.6_redis_3.gemfile +++ b/gemfiles/ruby_2.6_redis_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_redis_3.gemfile.lock b/gemfiles/ruby_2.6_redis_3.gemfile.lock index 09d04f6073e..b6a4ceecef4 100644 --- a/gemfiles/ruby_2.6_redis_3.gemfile.lock +++ b/gemfiles/ruby_2.6_redis_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -137,9 +136,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -149,7 +145,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -180,7 +175,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_redis_4.gemfile b/gemfiles/ruby_2.6_redis_4.gemfile index f7a658938f1..036f17437ab 100644 --- a/gemfiles/ruby_2.6_redis_4.gemfile +++ b/gemfiles/ruby_2.6_redis_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_redis_4.gemfile.lock b/gemfiles/ruby_2.6_redis_4.gemfile.lock index a99bae672e5..f540387eeac 100644 --- a/gemfiles/ruby_2.6_redis_4.gemfile.lock +++ b/gemfiles/ruby_2.6_redis_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -137,9 +136,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -149,7 +145,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -180,7 +175,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_redis_5.gemfile b/gemfiles/ruby_2.6_redis_5.gemfile index 6cbe3d024e6..66b8b658618 100644 --- a/gemfiles/ruby_2.6_redis_5.gemfile +++ b/gemfiles/ruby_2.6_redis_5.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_redis_5.gemfile.lock b/gemfiles/ruby_2.6_redis_5.gemfile.lock index d682fb8e404..559b66958d2 100644 --- a/gemfiles/ruby_2.6_redis_5.gemfile.lock +++ b/gemfiles/ruby_2.6_redis_5.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,7 +31,6 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -39,7 +38,7 @@ GEM connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -52,8 +51,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -141,9 +140,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -153,7 +149,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -184,7 +179,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_relational_db.gemfile b/gemfiles/ruby_2.6_relational_db.gemfile index 5cb15ac8339..268863b2503 100644 --- a/gemfiles/ruby_2.6_relational_db.gemfile +++ b/gemfiles/ruby_2.6_relational_db.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -41,7 +39,7 @@ gem "delayed_job_active_record" gem "makara" gem "mysql2", "< 1", platform: :ruby gem "pg", ">= 0.18.4", platform: :ruby -gem "sequel", "~> 5.54.0" +gem "sequel" gem "sqlite3", "~> 1.4.1", platform: :ruby group :check do diff --git a/gemfiles/ruby_2.6_relational_db.gemfile.lock b/gemfiles/ruby_2.6_relational_db.gemfile.lock index f2a0187ed4c..6944db799d1 100644 --- a/gemfiles/ruby_2.6_relational_db.gemfile.lock +++ b/gemfiles/ruby_2.6_relational_db.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -40,16 +40,16 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) + bigdecimal (3.1.8) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) delayed_job (4.1.11) activesupport (>= 3.0, < 8.0) @@ -69,8 +69,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -148,7 +148,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) - sequel (5.54.0) + sequel (5.83.1) + bigdecimal simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -166,7 +167,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) zeitwerk (2.6.11) PLATFORMS @@ -178,7 +178,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -209,13 +208,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) - sequel (~> 5.54.0) + sequel simplecov! simplecov-cobertura (~> 2.1.0) sqlite3 (~> 1.4.1) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_resque2_redis3.gemfile b/gemfiles/ruby_2.6_resque2_redis3.gemfile index d6dfcc052f6..165c824d654 100644 --- a/gemfiles/ruby_2.6_resque2_redis3.gemfile +++ b/gemfiles/ruby_2.6_resque2_redis3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_resque2_redis3.gemfile.lock b/gemfiles/ruby_2.6_resque2_redis3.gemfile.lock index bf5a50fc19b..6624239e618 100644 --- a/gemfiles/ruby_2.6_resque2_redis3.gemfile.lock +++ b/gemfiles/ruby_2.6_resque2_redis3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -158,9 +157,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -170,7 +166,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -202,7 +197,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_resque2_redis4.gemfile b/gemfiles/ruby_2.6_resque2_redis4.gemfile index 75ebd03b8e4..e465904edba 100644 --- a/gemfiles/ruby_2.6_resque2_redis4.gemfile +++ b/gemfiles/ruby_2.6_resque2_redis4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_resque2_redis4.gemfile.lock b/gemfiles/ruby_2.6_resque2_redis4.gemfile.lock index fc78b9c403c..4cff6776068 100644 --- a/gemfiles/ruby_2.6_resque2_redis4.gemfile.lock +++ b/gemfiles/ruby_2.6_resque2_redis4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -158,9 +157,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -170,7 +166,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -202,7 +197,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_sinatra_2.gemfile b/gemfiles/ruby_2.6_sinatra_2.gemfile index 2e529cbfc0e..e6fa0b59c14 100644 --- a/gemfiles/ruby_2.6_sinatra_2.gemfile +++ b/gemfiles/ruby_2.6_sinatra_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_sinatra_2.gemfile.lock b/gemfiles/ruby_2.6_sinatra_2.gemfile.lock index a4bd58f1d85..c4e2ec8e05a 100644 --- a/gemfiles/ruby_2.6_sinatra_2.gemfile.lock +++ b/gemfiles/ruby_2.6_sinatra_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,7 +33,6 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -41,7 +40,7 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -54,8 +53,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -158,7 +157,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.36) PLATFORMS aarch64-linux @@ -168,7 +166,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -201,7 +198,6 @@ DEPENDENCIES sinatra (~> 2) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_sinatra_3.gemfile b/gemfiles/ruby_2.6_sinatra_3.gemfile index f0d1f893fa4..adb9740ce62 100644 --- a/gemfiles/ruby_2.6_sinatra_3.gemfile +++ b/gemfiles/ruby_2.6_sinatra_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.6_sinatra_3.gemfile.lock b/gemfiles/ruby_2.6_sinatra_3.gemfile.lock index 7ce8837ed6c..7d9d9091d33 100644 --- a/gemfiles/ruby_2.6_sinatra_3.gemfile.lock +++ b/gemfiles/ruby_2.6_sinatra_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,7 +34,6 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -42,7 +41,7 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -55,8 +54,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -160,7 +159,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.36) PLATFORMS aarch64-linux @@ -170,7 +168,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -203,7 +200,6 @@ DEPENDENCIES sinatra (~> 3) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.6_stripe_10.gemfile b/gemfiles/ruby_2.6_stripe_10.gemfile new file mode 100644 index 00000000000..1ddb9499b8f --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_10.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 10" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.6_stripe_10.gemfile.lock b/gemfiles/ruby_2.6_stripe_10.gemfile.lock new file mode 100644 index 00000000000..8e62adc8505 --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_10.gemfile.lock @@ -0,0 +1,186 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.24.0) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.8.0) + byebug (~> 11.0) + pry (~> 0.10) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (10.15.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 10) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.6_stripe_11.gemfile b/gemfiles/ruby_2.6_stripe_11.gemfile new file mode 100644 index 00000000000..6215fb9967d --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_11.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.6_stripe_11.gemfile.lock b/gemfiles/ruby_2.6_stripe_11.gemfile.lock new file mode 100644 index 00000000000..56fc8812dba --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_11.gemfile.lock @@ -0,0 +1,186 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.24.0) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.8.0) + byebug (~> 11.0) + pry (~> 0.10) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (11.7.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 11) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.6_stripe_12.gemfile b/gemfiles/ruby_2.6_stripe_12.gemfile new file mode 100644 index 00000000000..fa233588270 --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_12.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 12" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.6_stripe_12.gemfile.lock b/gemfiles/ruby_2.6_stripe_12.gemfile.lock new file mode 100644 index 00000000000..52da8948489 --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_12.gemfile.lock @@ -0,0 +1,186 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.24.0) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.8.0) + byebug (~> 11.0) + pry (~> 0.10) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (12.5.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 12) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.6_stripe_7.gemfile b/gemfiles/ruby_2.6_stripe_7.gemfile new file mode 100644 index 00000000000..a4e80685f82 --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_7.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 7" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.6_stripe_7.gemfile.lock b/gemfiles/ruby_2.6_stripe_7.gemfile.lock new file mode 100644 index 00000000000..8808f0aa623 --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_7.gemfile.lock @@ -0,0 +1,186 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.24.0) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.8.0) + byebug (~> 11.0) + pry (~> 0.10) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (7.1.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 7) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.6_stripe_8.gemfile b/gemfiles/ruby_2.6_stripe_8.gemfile new file mode 100644 index 00000000000..1669122944a --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_8.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 8" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.6_stripe_8.gemfile.lock b/gemfiles/ruby_2.6_stripe_8.gemfile.lock new file mode 100644 index 00000000000..7d920d4aedc --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_8.gemfile.lock @@ -0,0 +1,186 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.24.0) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.8.0) + byebug (~> 11.0) + pry (~> 0.10) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (8.7.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 8) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.6_stripe_9.gemfile b/gemfiles/ruby_2.6_stripe_9.gemfile new file mode 100644 index 00000000000..27fa9b91365 --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_9.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 9" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.6_stripe_9.gemfile.lock b/gemfiles/ruby_2.6_stripe_9.gemfile.lock new file mode 100644 index 00000000000..b1151b011be --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_9.gemfile.lock @@ -0,0 +1,186 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.24.0) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.8.0) + byebug (~> 11.0) + pry (~> 0.10) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (9.4.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 9) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.6_stripe_latest.gemfile b/gemfiles/ruby_2.6_stripe_latest.gemfile new file mode 100644 index 00000000000..ac88988c5d3 --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.6_stripe_latest.gemfile.lock b/gemfiles/ruby_2.6_stripe_latest.gemfile.lock new file mode 100644 index 00000000000..19d5f80ee82 --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_latest.gemfile.lock @@ -0,0 +1,184 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.24.0) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.8.0) + byebug (~> 11.0) + pry (~> 0.10) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (13.0.1) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.6_stripe_min.gemfile b/gemfiles/ruby_2.6_stripe_min.gemfile new file mode 100644 index 00000000000..217f644950d --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_min.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "= 5.15.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.6_stripe_min.gemfile.lock b/gemfiles/ruby_2.6_stripe_min.gemfile.lock new file mode 100644 index 00000000000..9e99d2cb22a --- /dev/null +++ b/gemfiles/ruby_2.6_stripe_min.gemfile.lock @@ -0,0 +1,184 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.24.0) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.8.0) + byebug (~> 11.0) + pry (~> 0.10) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (5.15.0) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (= 5.15.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.7_activesupport.gemfile b/gemfiles/ruby_2.7_activesupport.gemfile index 2543cf155bb..564a8532f62 100644 --- a/gemfiles/ruby_2.7_activesupport.gemfile +++ b/gemfiles/ruby_2.7_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_activesupport.gemfile.lock b/gemfiles/ruby_2.7_activesupport.gemfile.lock index e406b66cef3..cba2d013140 100644 --- a/gemfiles/ruby_2.7_activesupport.gemfile.lock +++ b/gemfiles/ruby_2.7_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -67,7 +67,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest-crc (0.6.5) @@ -108,8 +108,8 @@ GEM addressable (>= 2.4) jsonapi-renderer (0.2.2) king_konf (1.0.1) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -245,7 +245,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) zeitwerk (2.6.11) PLATFORMS @@ -260,7 +259,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -294,7 +292,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_aws.gemfile b/gemfiles/ruby_2.7_aws.gemfile index 52474428f35..6dd6e25d73a 100644 --- a/gemfiles/ruby_2.7_aws.gemfile +++ b/gemfiles/ruby_2.7_aws.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_aws.gemfile.lock b/gemfiles/ruby_2.7_aws.gemfile.lock index 4a7052826fd..80672786bf5 100644 --- a/gemfiles/ruby_2.7_aws.gemfile.lock +++ b/gemfiles/ruby_2.7_aws.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -1452,14 +1452,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -1473,8 +1472,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -1564,7 +1563,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -1575,7 +1573,6 @@ DEPENDENCIES aws-sdk benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -1606,7 +1603,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_contrib.gemfile b/gemfiles/ruby_2.7_contrib.gemfile index d9f942f513a..827cf9bc548 100644 --- a/gemfiles/ruby_2.7_contrib.gemfile +++ b/gemfiles/ruby_2.7_contrib.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_contrib.gemfile.lock b/gemfiles/ruby_2.7_contrib.gemfile.lock index 79d2a532c19..cc9b3e0fb20 100644 --- a/gemfiles/ruby_2.7_contrib.gemfile.lock +++ b/gemfiles/ruby_2.7_contrib.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,7 +33,6 @@ GEM binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) bson (4.15.0) - builder (3.2.4) bunny (2.20.3) amq-protocol (~> 2.3, >= 2.3.1) sorted_set (~> 1, >= 1.0.2) @@ -45,7 +44,7 @@ GEM crack (0.4.5) rexml dalli (3.2.4) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -66,8 +65,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -202,9 +201,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -214,7 +210,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (>= 3.0.0) @@ -255,7 +250,6 @@ DEPENDENCIES sucker_punch warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_contrib_old.gemfile b/gemfiles/ruby_2.7_contrib_old.gemfile index 81cc80eddaf..2714748b604 100644 --- a/gemfiles/ruby_2.7_contrib_old.gemfile +++ b/gemfiles/ruby_2.7_contrib_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_contrib_old.gemfile.lock b/gemfiles/ruby_2.7_contrib_old.gemfile.lock index b32aeb58fd8..23cba7bfcb9 100644 --- a/gemfiles/ruby_2.7_contrib_old.gemfile.lock +++ b/gemfiles/ruby_2.7_contrib_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,7 +34,6 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -43,7 +42,7 @@ GEM rexml daemons (1.4.1) dalli (2.7.11) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -62,8 +61,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -189,9 +188,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -201,7 +197,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (< 3.0.0) @@ -235,7 +230,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_core_old.gemfile b/gemfiles/ruby_2.7_core_old.gemfile index 26b1970cc13..ebe6817557d 100644 --- a/gemfiles/ruby_2.7_core_old.gemfile +++ b/gemfiles/ruby_2.7_core_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_core_old.gemfile.lock b/gemfiles/ruby_2.7_core_old.gemfile.lock index 83ce24d1e08..c747f38bd1e 100644 --- a/gemfiles/ruby_2.7_core_old.gemfile.lock +++ b/gemfiles/ruby_2.7_core_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -136,9 +135,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -148,7 +144,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -178,7 +173,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_elasticsearch_7.gemfile b/gemfiles/ruby_2.7_elasticsearch_7.gemfile index 4714cbf8d89..dd03c33c84b 100644 --- a/gemfiles/ruby_2.7_elasticsearch_7.gemfile +++ b/gemfiles/ruby_2.7_elasticsearch_7.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_elasticsearch_7.gemfile.lock b/gemfiles/ruby_2.7_elasticsearch_7.gemfile.lock index 6ca9555ac8a..d5e818694cf 100644 --- a/gemfiles/ruby_2.7_elasticsearch_7.gemfile.lock +++ b/gemfiles/ruby_2.7_elasticsearch_7.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -32,14 +32,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -83,8 +82,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -174,7 +173,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -184,7 +182,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -215,7 +212,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_elasticsearch_8.gemfile b/gemfiles/ruby_2.7_elasticsearch_8.gemfile index 5b06d936d1a..c301f8e52df 100644 --- a/gemfiles/ruby_2.7_elasticsearch_8.gemfile +++ b/gemfiles/ruby_2.7_elasticsearch_8.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_elasticsearch_8.gemfile.lock b/gemfiles/ruby_2.7_elasticsearch_8.gemfile.lock index b0a8380da29..284efe032e2 100644 --- a/gemfiles/ruby_2.7_elasticsearch_8.gemfile.lock +++ b/gemfiles/ruby_2.7_elasticsearch_8.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +33,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -66,8 +65,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -156,7 +155,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -166,7 +164,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -197,7 +194,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_elasticsearch_latest.gemfile b/gemfiles/ruby_2.7_elasticsearch_latest.gemfile new file mode 100644 index 00000000000..58b00ee5b8f --- /dev/null +++ b/gemfiles/ruby_2.7_elasticsearch_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "elasticsearch" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.7_elasticsearch_latest.gemfile.lock b/gemfiles/ruby_2.7_elasticsearch_latest.gemfile.lock new file mode 100644 index 00000000000..c6d304b238b --- /dev/null +++ b/gemfiles/ruby_2.7_elasticsearch_latest.gemfile.lock @@ -0,0 +1,198 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + elastic-transport (8.3.5) + faraday (< 3) + multi_json + elasticsearch (8.15.0) + elastic-transport (~> 8.3) + elasticsearch-api (= 8.15.0) + elasticsearch-api (8.15.0) + multi_json + extlz4 (0.3.4) + faraday (2.8.1) + base64 + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + multi_json (1.15.0) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + elasticsearch + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.7_graphql_1.13.gemfile b/gemfiles/ruby_2.7_graphql_1.13.gemfile index 07c1ffee4ad..e156e80c4c2 100644 --- a/gemfiles/ruby_2.7_graphql_1.13.gemfile +++ b/gemfiles/ruby_2.7_graphql_1.13.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,7 +33,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 1.13.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_2.7_graphql_1.13.gemfile.lock b/gemfiles/ruby_2.7_graphql_1.13.gemfile.lock index 6721d4cd49e..3def8dcaf94 100644 --- a/gemfiles/ruby_2.7_graphql_1.13.gemfile.lock +++ b/gemfiles/ruby_2.7_graphql_1.13.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -39,29 +99,66 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (1.13.21) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.15.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.15.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -79,11 +176,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -133,15 +263,29 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -151,7 +295,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -161,12 +304,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 1.13.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-byebug pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -180,9 +325,9 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_graphql_2.0.gemfile b/gemfiles/ruby_2.7_graphql_2.0.gemfile index ded8a445ed9..a6eb60b0080 100644 --- a/gemfiles/ruby_2.7_graphql_2.0.gemfile +++ b/gemfiles/ruby_2.7_graphql_2.0.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,7 +33,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.0.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_2.7_graphql_2.0.gemfile.lock b/gemfiles/ruby_2.7_graphql_2.0.gemfile.lock index e3a771472aa..7e61d4b8cad 100644 --- a/gemfiles/ruby_2.7_graphql_2.0.gemfile.lock +++ b/gemfiles/ruby_2.7_graphql_2.0.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -39,29 +99,66 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (2.0.28) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.15.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.15.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -79,11 +176,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -133,15 +263,29 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -151,7 +295,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -161,12 +304,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.0.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-byebug pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -180,9 +325,9 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_graphql_2.1.gemfile b/gemfiles/ruby_2.7_graphql_2.1.gemfile index 264ea368f01..b62155f42fa 100644 --- a/gemfiles/ruby_2.7_graphql_2.1.gemfile +++ b/gemfiles/ruby_2.7_graphql_2.1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,7 +33,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.1.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_2.7_graphql_2.1.gemfile.lock b/gemfiles/ruby_2.7_graphql_2.1.gemfile.lock index f8ac90b5254..4df85c3a359 100644 --- a/gemfiles/ruby_2.7_graphql_2.1.gemfile.lock +++ b/gemfiles/ruby_2.7_graphql_2.1.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -39,30 +99,67 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (2.1.11) racc (~> 1.4) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.15.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.15.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -80,11 +177,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -134,15 +264,29 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -152,7 +296,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -162,12 +305,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.1.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-byebug pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -181,9 +326,9 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_graphql_2.2.gemfile b/gemfiles/ruby_2.7_graphql_2.2.gemfile index 8e7d9c2f6df..82b72506c56 100644 --- a/gemfiles/ruby_2.7_graphql_2.2.gemfile +++ b/gemfiles/ruby_2.7_graphql_2.2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,7 +33,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.2.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_2.7_graphql_2.2.gemfile.lock b/gemfiles/ruby_2.7_graphql_2.2.gemfile.lock index 8d64510f6bb..09a810b1789 100644 --- a/gemfiles/ruby_2.7_graphql_2.2.gemfile.lock +++ b/gemfiles/ruby_2.7_graphql_2.2.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -39,30 +99,67 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (2.2.6) racc (~> 1.4) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.15.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.15.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -80,11 +177,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -134,15 +264,29 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -152,7 +296,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -162,12 +305,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.2.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-byebug pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -181,9 +326,9 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_graphql_2.3.gemfile b/gemfiles/ruby_2.7_graphql_2.3.gemfile new file mode 100644 index 00000000000..b654690b52c --- /dev/null +++ b/gemfiles/ruby_2.7_graphql_2.3.gemfile @@ -0,0 +1,49 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" +gem "graphql", "~> 2.3.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.7_graphql_2.3.gemfile.lock b/gemfiles/ruby_2.7_graphql_2.3.gemfile.lock new file mode 100644 index 00000000000..9d6b4ea78e8 --- /dev/null +++ b/gemfiles/ruby_2.7_graphql_2.3.gemfile.lock @@ -0,0 +1,335 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.3) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4) + graphql (2.3.6) + base64 + hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.24.1) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.15.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.15.6-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.25.1) + parser (3.3.3.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.0) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + request_store (1.7.0) + rack (>= 1.4) + rexml (3.3.1) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + graphql (~> 2.3.0) + json-schema (< 3) + lograge (~> 0.11) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rails (~> 6.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + sprockets (< 4) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.7_hanami_1.gemfile b/gemfiles/ruby_2.7_hanami_1.gemfile index c97c4795f90..6084167c5d9 100644 --- a/gemfiles/ruby_2.7_hanami_1.gemfile +++ b/gemfiles/ruby_2.7_hanami_1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_hanami_1.gemfile.lock b/gemfiles/ruby_2.7_hanami_1.gemfile.lock index 58cbd92e652..5daa49cb71d 100644 --- a/gemfiles/ruby_2.7_hanami_1.gemfile.lock +++ b/gemfiles/ruby_2.7_hanami_1.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,15 +31,14 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -127,8 +126,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -235,9 +234,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -248,7 +244,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -281,7 +276,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_http.gemfile b/gemfiles/ruby_2.7_http.gemfile index e36c7bfbc43..16a9834d59d 100644 --- a/gemfiles/ruby_2.7_http.gemfile +++ b/gemfiles/ruby_2.7_http.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -41,7 +39,6 @@ gem "faraday" gem "http" gem "httpclient" gem "rest-client" -gem "stripe" gem "typhoeus" group :check do diff --git a/gemfiles/ruby_2.7_http.gemfile.lock b/gemfiles/ruby_2.7_http.gemfile.lock index 3cc251683e8..5343e7dc73f 100644 --- a/gemfiles/ruby_2.7_http.gemfile.lock +++ b/gemfiles/ruby_2.7_http.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -73,8 +72,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -165,7 +164,6 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) - stripe (9.2.0) strscan (3.1.0) thor (1.2.2) typhoeus (1.4.0) @@ -179,7 +177,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -189,7 +186,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -223,11 +219,9 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) - stripe typhoeus warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_opensearch_2.gemfile b/gemfiles/ruby_2.7_opensearch_2.gemfile index cf0507fef14..5433de13051 100644 --- a/gemfiles/ruby_2.7_opensearch_2.gemfile +++ b/gemfiles/ruby_2.7_opensearch_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_opensearch_2.gemfile.lock b/gemfiles/ruby_2.7_opensearch_2.gemfile.lock index fc73bb52614..c1cc02c9625 100644 --- a/gemfiles/ruby_2.7_opensearch_2.gemfile.lock +++ b/gemfiles/ruby_2.7_opensearch_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +33,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -58,8 +57,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -156,7 +155,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -166,7 +164,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -197,7 +194,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_opensearch_3.gemfile b/gemfiles/ruby_2.7_opensearch_3.gemfile index 5c4d980651b..6a53648c151 100644 --- a/gemfiles/ruby_2.7_opensearch_3.gemfile +++ b/gemfiles/ruby_2.7_opensearch_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_opensearch_3.gemfile.lock b/gemfiles/ruby_2.7_opensearch_3.gemfile.lock index fc71adeb1f6..8f193aa020c 100644 --- a/gemfiles/ruby_2.7_opensearch_3.gemfile.lock +++ b/gemfiles/ruby_2.7_opensearch_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +33,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -58,8 +57,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -151,7 +150,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -161,7 +159,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -192,7 +189,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_opensearch_latest.gemfile b/gemfiles/ruby_2.7_opensearch_latest.gemfile new file mode 100644 index 00000000000..c8a905cfd78 --- /dev/null +++ b/gemfiles/ruby_2.7_opensearch_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "opensearch-ruby" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.7_opensearch_latest.gemfile.lock b/gemfiles/ruby_2.7_opensearch_latest.gemfile.lock new file mode 100644 index 00000000000..ad0e5bd6851 --- /dev/null +++ b/gemfiles/ruby_2.7_opensearch_latest.gemfile.lock @@ -0,0 +1,193 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + faraday (2.8.1) + base64 + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + multi_json (1.15.0) + opensearch-ruby (3.4.0) + faraday (>= 1.0, < 3) + multi_json (>= 1.0) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opensearch-ruby + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.7_opentelemetry.gemfile b/gemfiles/ruby_2.7_opentelemetry.gemfile index abd7191c091..711f6d57bee 100644 --- a/gemfiles/ruby_2.7_opentelemetry.gemfile +++ b/gemfiles/ruby_2.7_opentelemetry.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_opentelemetry.gemfile.lock b/gemfiles/ruby_2.7_opentelemetry.gemfile.lock index 1c2857c8341..ac35b6ed07c 100755 --- a/gemfiles/ruby_2.7_opentelemetry.gemfile.lock +++ b/gemfiles/ruby_2.7_opentelemetry.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -148,9 +147,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -160,7 +156,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -191,7 +186,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_opentelemetry_otlp.gemfile b/gemfiles/ruby_2.7_opentelemetry_otlp.gemfile new file mode 100644 index 00000000000..966548075c4 --- /dev/null +++ b/gemfiles/ruby_2.7_opentelemetry_otlp.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "opentelemetry-sdk", "~> 1.1" +gem "opentelemetry-exporter-otlp" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.7_opentelemetry_otlp.gemfile.lock b/gemfiles/ruby_2.7_opentelemetry_otlp.gemfile.lock new file mode 100644 index 00000000000..8c03763ae02 --- /dev/null +++ b/gemfiles/ruby_2.7_opentelemetry_otlp.gemfile.lock @@ -0,0 +1,205 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6) + binding_of_caller (1.0.0) + debug_inspector (>= 0.0.1) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.2.3) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.3-aarch64-linux) + google-protobuf (3.25.3-x86_64-linux) + googleapis-common-protos-types (1.13.0) + google-protobuf (~> 3.18) + hashdiff (1.1.0) + json (2.7.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.0.0) + msgpack (1.7.3) + opentelemetry-api (1.1.0) + opentelemetry-common (0.19.7) + opentelemetry-api (~> 1.0) + opentelemetry-exporter-otlp (0.24.2) + google-protobuf (~> 3.19) + googleapis-common-protos-types (~> 1.3) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.19.6) + opentelemetry-sdk (~> 1.2) + opentelemetry-semantic_conventions + opentelemetry-registry (0.2.0) + opentelemetry-api (~> 1.1) + opentelemetry-sdk (1.2.1) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.19.3) + opentelemetry-registry (~> 0.2) + opentelemetry-semantic_conventions + opentelemetry-semantic_conventions (1.10.0) + opentelemetry-api (~> 1.0) + os (1.1.4) + parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.0.4) + racc (1.7.3) + rainbow (3.1.1) + rake (13.1.0) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.0) + rexml (3.3.8) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.1) + parser (>= 3.3.0.4) + rubocop-capybara (2.20.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.20.2) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + thor (1.3.1) + unicode-display_width (2.5.0) + warning (1.3.0) + webmock (3.23.0) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opentelemetry-exporter-otlp + opentelemetry-sdk (~> 1.1) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.7_rack_1.gemfile b/gemfiles/ruby_2.7_rack_1.gemfile index eaee86de08e..0f74c3a1c13 100644 --- a/gemfiles/ruby_2.7_rack_1.gemfile +++ b/gemfiles/ruby_2.7_rack_1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rack_1.gemfile.lock b/gemfiles/ruby_2.7_rack_1.gemfile.lock index a0feba6396e..fc43471cb79 100644 --- a/gemfiles/ruby_2.7_rack_1.gemfile.lock +++ b/gemfiles/ruby_2.7_rack_1.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -143,7 +142,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -153,7 +151,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -186,7 +183,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rack_2.gemfile b/gemfiles/ruby_2.7_rack_2.gemfile index e78649294be..9abcf0c8846 100644 --- a/gemfiles/ruby_2.7_rack_2.gemfile +++ b/gemfiles/ruby_2.7_rack_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rack_2.gemfile.lock b/gemfiles/ruby_2.7_rack_2.gemfile.lock index d943ad03ef2..83b66e3637b 100644 --- a/gemfiles/ruby_2.7_rack_2.gemfile.lock +++ b/gemfiles/ruby_2.7_rack_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -143,7 +142,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -153,7 +151,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -186,7 +183,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rack_3.gemfile b/gemfiles/ruby_2.7_rack_3.gemfile index e143c129fad..f82d8b460b6 100644 --- a/gemfiles/ruby_2.7_rack_3.gemfile +++ b/gemfiles/ruby_2.7_rack_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rack_3.gemfile.lock b/gemfiles/ruby_2.7_rack_3.gemfile.lock index 0d4214c5843..a9933455fc5 100644 --- a/gemfiles/ruby_2.7_rack_3.gemfile.lock +++ b/gemfiles/ruby_2.7_rack_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -143,7 +142,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) PLATFORMS aarch64-linux @@ -153,7 +151,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -186,7 +183,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rack_latest.gemfile b/gemfiles/ruby_2.7_rack_latest.gemfile new file mode 100644 index 00000000000..178d989d9d4 --- /dev/null +++ b/gemfiles/ruby_2.7_rack_latest.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rack" +gem "rack-contrib" +gem "rack-test" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.7_rack_latest.gemfile.lock b/gemfiles/ruby_2.7_rack_latest.gemfile.lock new file mode 100644 index 00000000000..f287a4b4e8a --- /dev/null +++ b/gemfiles/ruby_2.7_rack_latest.gemfile.lock @@ -0,0 +1,190 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.2) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.5-aarch64-linux) + google-protobuf (3.25.5-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rack (3.1.8) + rack-contrib (2.5.0) + rack (< 4) + rack-test (2.1.0) + rack (>= 1.3) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rack + rack-contrib + rack-test + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.7_rails5_mysql2.gemfile b/gemfiles/ruby_2.7_rails5_mysql2.gemfile index d1bb787e746..756965235f4 100644 --- a/gemfiles/ruby_2.7_rails5_mysql2.gemfile +++ b/gemfiles/ruby_2.7_rails5_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails5_mysql2.gemfile.lock b/gemfiles/ruby_2.7_rails5_mysql2.gemfile.lock index e7e2f43281d..a0728ece8c8 100644 --- a/gemfiles/ruby_2.7_rails5_mysql2.gemfile.lock +++ b/gemfiles/ruby_2.7_rails5_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -81,8 +81,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -100,8 +100,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -257,12 +257,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -272,7 +269,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -306,7 +302,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails5_postgres.gemfile b/gemfiles/ruby_2.7_rails5_postgres.gemfile index b4a16db33e3..a3fe0218d69 100644 --- a/gemfiles/ruby_2.7_rails5_postgres.gemfile +++ b/gemfiles/ruby_2.7_rails5_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails5_postgres.gemfile.lock b/gemfiles/ruby_2.7_rails5_postgres.gemfile.lock index 81af8d1eda4..93751b2080b 100644 --- a/gemfiles/ruby_2.7_rails5_postgres.gemfile.lock +++ b/gemfiles/ruby_2.7_rails5_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -81,8 +81,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -100,8 +100,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -257,12 +257,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -272,7 +269,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -306,7 +302,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails5_postgres_redis.gemfile b/gemfiles/ruby_2.7_rails5_postgres_redis.gemfile index 4de446549cf..d460955f32f 100644 --- a/gemfiles/ruby_2.7_rails5_postgres_redis.gemfile +++ b/gemfiles/ruby_2.7_rails5_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails5_postgres_redis.gemfile.lock b/gemfiles/ruby_2.7_rails5_postgres_redis.gemfile.lock index 65f64c7d7a0..0736124053b 100644 --- a/gemfiles/ruby_2.7_rails5_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_2.7_rails5_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -81,8 +81,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -100,8 +100,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -258,12 +258,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -273,7 +270,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -308,7 +304,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails5_postgres_redis_activesupport.gemfile b/gemfiles/ruby_2.7_rails5_postgres_redis_activesupport.gemfile index 5200c571edc..8b2769eee59 100644 --- a/gemfiles/ruby_2.7_rails5_postgres_redis_activesupport.gemfile +++ b/gemfiles/ruby_2.7_rails5_postgres_redis_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails5_postgres_redis_activesupport.gemfile.lock b/gemfiles/ruby_2.7_rails5_postgres_redis_activesupport.gemfile.lock index 40c95d4aa05..903d04afb91 100644 --- a/gemfiles/ruby_2.7_rails5_postgres_redis_activesupport.gemfile.lock +++ b/gemfiles/ruby_2.7_rails5_postgres_redis_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -81,8 +81,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -100,8 +100,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -274,12 +274,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -289,7 +286,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -326,7 +322,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails5_postgres_sidekiq.gemfile b/gemfiles/ruby_2.7_rails5_postgres_sidekiq.gemfile index 85759935854..16ac05a8525 100644 --- a/gemfiles/ruby_2.7_rails5_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_2.7_rails5_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails5_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_2.7_rails5_postgres_sidekiq.gemfile.lock index 49261adf41d..8798ce13a8c 100644 --- a/gemfiles/ruby_2.7_rails5_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_2.7_rails5_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -82,8 +82,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -101,8 +101,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -263,12 +263,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -279,7 +276,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -314,7 +310,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails5_semantic_logger.gemfile b/gemfiles/ruby_2.7_rails5_semantic_logger.gemfile index f8efad68d31..f553f99c9e4 100644 --- a/gemfiles/ruby_2.7_rails5_semantic_logger.gemfile +++ b/gemfiles/ruby_2.7_rails5_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails5_semantic_logger.gemfile.lock b/gemfiles/ruby_2.7_rails5_semantic_logger.gemfile.lock index 35530660424..192a9ac06d3 100644 --- a/gemfiles/ruby_2.7_rails5_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_2.7_rails5_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -81,8 +81,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -100,8 +100,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -256,12 +256,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -271,7 +268,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -305,7 +301,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails61_mysql2.gemfile b/gemfiles/ruby_2.7_rails61_mysql2.gemfile index ed774d8c5dc..a2e569e1a41 100644 --- a/gemfiles/ruby_2.7_rails61_mysql2.gemfile +++ b/gemfiles/ruby_2.7_rails61_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails61_mysql2.gemfile.lock b/gemfiles/ruby_2.7_rails61_mysql2.gemfile.lock index 896561c73e6..d2c3248c4d0 100644 --- a/gemfiles/ruby_2.7_rails61_mysql2.gemfile.lock +++ b/gemfiles/ruby_2.7_rails61_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -275,12 +275,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -291,7 +288,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -325,7 +321,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails61_postgres.gemfile b/gemfiles/ruby_2.7_rails61_postgres.gemfile index b81d5b4bdf3..d714d5203b6 100644 --- a/gemfiles/ruby_2.7_rails61_postgres.gemfile +++ b/gemfiles/ruby_2.7_rails61_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails61_postgres.gemfile.lock b/gemfiles/ruby_2.7_rails61_postgres.gemfile.lock index 7ce4fd75189..04c1dc5ad02 100644 --- a/gemfiles/ruby_2.7_rails61_postgres.gemfile.lock +++ b/gemfiles/ruby_2.7_rails61_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -275,12 +275,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -291,7 +288,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -325,7 +321,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails61_postgres_redis.gemfile b/gemfiles/ruby_2.7_rails61_postgres_redis.gemfile index cdf32084764..4f943e81af9 100644 --- a/gemfiles/ruby_2.7_rails61_postgres_redis.gemfile +++ b/gemfiles/ruby_2.7_rails61_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails61_postgres_redis.gemfile.lock b/gemfiles/ruby_2.7_rails61_postgres_redis.gemfile.lock index e523a2a4047..a9ac1249c0a 100644 --- a/gemfiles/ruby_2.7_rails61_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_2.7_rails61_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -276,12 +276,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -292,7 +289,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -327,7 +323,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails61_postgres_sidekiq.gemfile b/gemfiles/ruby_2.7_rails61_postgres_sidekiq.gemfile index 8c616c0456c..060d0aac625 100644 --- a/gemfiles/ruby_2.7_rails61_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_2.7_rails61_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails61_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_2.7_rails61_postgres_sidekiq.gemfile.lock index 215d4676a7c..e1da6d4670d 100644 --- a/gemfiles/ruby_2.7_rails61_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_2.7_rails61_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -99,8 +99,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -118,8 +118,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -283,12 +283,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -299,7 +296,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -334,7 +330,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails61_semantic_logger.gemfile b/gemfiles/ruby_2.7_rails61_semantic_logger.gemfile index f79b251b7bf..ea2e725b09c 100644 --- a/gemfiles/ruby_2.7_rails61_semantic_logger.gemfile +++ b/gemfiles/ruby_2.7_rails61_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails61_semantic_logger.gemfile.lock b/gemfiles/ruby_2.7_rails61_semantic_logger.gemfile.lock index 0bdce44f807..78c6d4a45f5 100644 --- a/gemfiles/ruby_2.7_rails61_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_2.7_rails61_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -274,12 +274,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -290,7 +287,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -324,7 +320,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails6_mysql2.gemfile b/gemfiles/ruby_2.7_rails6_mysql2.gemfile index dbb9f58038b..c759428aa1f 100644 --- a/gemfiles/ruby_2.7_rails6_mysql2.gemfile +++ b/gemfiles/ruby_2.7_rails6_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails6_mysql2.gemfile.lock b/gemfiles/ruby_2.7_rails6_mysql2.gemfile.lock index c414dbc4bd9..2ab6d9f5d5f 100644 --- a/gemfiles/ruby_2.7_rails6_mysql2.gemfile.lock +++ b/gemfiles/ruby_2.7_rails6_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -94,8 +94,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -113,8 +113,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -272,12 +272,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -288,7 +285,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -322,7 +318,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails6_postgres.gemfile b/gemfiles/ruby_2.7_rails6_postgres.gemfile index 175eb44b964..46aafa08759 100644 --- a/gemfiles/ruby_2.7_rails6_postgres.gemfile +++ b/gemfiles/ruby_2.7_rails6_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails6_postgres.gemfile.lock b/gemfiles/ruby_2.7_rails6_postgres.gemfile.lock index 1b443fdb3f6..636b72ea3e7 100644 --- a/gemfiles/ruby_2.7_rails6_postgres.gemfile.lock +++ b/gemfiles/ruby_2.7_rails6_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -94,8 +94,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -113,8 +113,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -272,12 +272,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -288,7 +285,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -322,7 +318,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails6_postgres_redis.gemfile b/gemfiles/ruby_2.7_rails6_postgres_redis.gemfile index fb27045cdd5..2ee18f7da1e 100644 --- a/gemfiles/ruby_2.7_rails6_postgres_redis.gemfile +++ b/gemfiles/ruby_2.7_rails6_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails6_postgres_redis.gemfile.lock b/gemfiles/ruby_2.7_rails6_postgres_redis.gemfile.lock index babd1c4762e..de52e403290 100644 --- a/gemfiles/ruby_2.7_rails6_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_2.7_rails6_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -94,8 +94,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -113,8 +113,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -273,12 +273,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -289,7 +286,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -324,7 +320,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails6_postgres_redis_activesupport.gemfile b/gemfiles/ruby_2.7_rails6_postgres_redis_activesupport.gemfile index 6d8670ca76f..50387d8baf6 100644 --- a/gemfiles/ruby_2.7_rails6_postgres_redis_activesupport.gemfile +++ b/gemfiles/ruby_2.7_rails6_postgres_redis_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails6_postgres_redis_activesupport.gemfile.lock b/gemfiles/ruby_2.7_rails6_postgres_redis_activesupport.gemfile.lock index 5743dcf95a5..ab4da7285ef 100644 --- a/gemfiles/ruby_2.7_rails6_postgres_redis_activesupport.gemfile.lock +++ b/gemfiles/ruby_2.7_rails6_postgres_redis_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -94,8 +94,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -113,8 +113,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -289,12 +289,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -305,7 +302,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -342,7 +338,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails6_postgres_sidekiq.gemfile b/gemfiles/ruby_2.7_rails6_postgres_sidekiq.gemfile index ec80b7eb417..0305de3932c 100644 --- a/gemfiles/ruby_2.7_rails6_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_2.7_rails6_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails6_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_2.7_rails6_postgres_sidekiq.gemfile.lock index 23c1fe03eb6..a9081f76a55 100644 --- a/gemfiles/ruby_2.7_rails6_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_2.7_rails6_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -95,8 +95,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -114,8 +114,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -278,12 +278,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -295,7 +292,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -330,7 +326,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_rails6_semantic_logger.gemfile b/gemfiles/ruby_2.7_rails6_semantic_logger.gemfile index 05599341b26..624051792d0 100644 --- a/gemfiles/ruby_2.7_rails6_semantic_logger.gemfile +++ b/gemfiles/ruby_2.7_rails6_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_rails6_semantic_logger.gemfile.lock b/gemfiles/ruby_2.7_rails6_semantic_logger.gemfile.lock index acd284c6238..2ec3ddf2ad9 100644 --- a/gemfiles/ruby_2.7_rails6_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_2.7_rails6_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -94,8 +94,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -113,8 +113,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -271,12 +271,9 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -287,7 +284,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -321,7 +317,6 @@ DEPENDENCIES sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_redis_3.gemfile b/gemfiles/ruby_2.7_redis_3.gemfile index 73f20f77cb8..5a990bebf5d 100644 --- a/gemfiles/ruby_2.7_redis_3.gemfile +++ b/gemfiles/ruby_2.7_redis_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_redis_3.gemfile.lock b/gemfiles/ruby_2.7_redis_3.gemfile.lock index f587f72632e..5d0c4116c7e 100644 --- a/gemfiles/ruby_2.7_redis_3.gemfile.lock +++ b/gemfiles/ruby_2.7_redis_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -137,9 +136,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -149,7 +145,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -180,7 +175,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_redis_4.gemfile b/gemfiles/ruby_2.7_redis_4.gemfile index b388cc9288a..370c25ce27c 100644 --- a/gemfiles/ruby_2.7_redis_4.gemfile +++ b/gemfiles/ruby_2.7_redis_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_redis_4.gemfile.lock b/gemfiles/ruby_2.7_redis_4.gemfile.lock index b00e1732894..5651ce44182 100644 --- a/gemfiles/ruby_2.7_redis_4.gemfile.lock +++ b/gemfiles/ruby_2.7_redis_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -137,9 +136,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -149,7 +145,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -180,7 +175,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_redis_5.gemfile b/gemfiles/ruby_2.7_redis_5.gemfile index 46014517c75..bd001d3c2df 100644 --- a/gemfiles/ruby_2.7_redis_5.gemfile +++ b/gemfiles/ruby_2.7_redis_5.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_redis_5.gemfile.lock b/gemfiles/ruby_2.7_redis_5.gemfile.lock index c834a3ab9b3..6019b5e1bf1 100644 --- a/gemfiles/ruby_2.7_redis_5.gemfile.lock +++ b/gemfiles/ruby_2.7_redis_5.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,7 +31,6 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -39,7 +38,7 @@ GEM connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -52,8 +51,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -141,9 +140,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -153,7 +149,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -184,7 +179,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_relational_db.gemfile b/gemfiles/ruby_2.7_relational_db.gemfile index 2501cb9cdab..c46d20f12a6 100644 --- a/gemfiles/ruby_2.7_relational_db.gemfile +++ b/gemfiles/ruby_2.7_relational_db.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -41,7 +39,7 @@ gem "delayed_job_active_record" gem "makara" gem "mysql2", "< 1", platform: :ruby gem "pg", ">= 0.18.4", platform: :ruby -gem "sequel", "~> 5.54.0" +gem "sequel" gem "sqlite3", "~> 1.4.1" group :check do diff --git a/gemfiles/ruby_2.7_relational_db.gemfile.lock b/gemfiles/ruby_2.7_relational_db.gemfile.lock index f28146d486d..46461bbade5 100644 --- a/gemfiles/ruby_2.7_relational_db.gemfile.lock +++ b/gemfiles/ruby_2.7_relational_db.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -40,16 +40,16 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) + bigdecimal (3.1.8) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) delayed_job (4.1.11) activesupport (>= 3.0, < 8.0) @@ -69,8 +69,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -148,7 +148,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) - sequel (5.54.0) + sequel (5.83.1) + bigdecimal simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -165,7 +166,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.34) zeitwerk (2.6.11) PLATFORMS @@ -177,7 +177,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -208,13 +207,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) - sequel (~> 5.54.0) + sequel simplecov! simplecov-cobertura (~> 2.1.0) sqlite3 (~> 1.4.1) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_resque2_redis3.gemfile b/gemfiles/ruby_2.7_resque2_redis3.gemfile index 5cf0bd4df3a..3b846f57280 100644 --- a/gemfiles/ruby_2.7_resque2_redis3.gemfile +++ b/gemfiles/ruby_2.7_resque2_redis3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_resque2_redis3.gemfile.lock b/gemfiles/ruby_2.7_resque2_redis3.gemfile.lock index f5f6d2c27be..4c643b6a3f0 100644 --- a/gemfiles/ruby_2.7_resque2_redis3.gemfile.lock +++ b/gemfiles/ruby_2.7_resque2_redis3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -158,9 +157,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -170,7 +166,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -202,7 +197,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_resque2_redis4.gemfile b/gemfiles/ruby_2.7_resque2_redis4.gemfile index 34e2bb8b260..e90822daae0 100644 --- a/gemfiles/ruby_2.7_resque2_redis4.gemfile +++ b/gemfiles/ruby_2.7_resque2_redis4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_resque2_redis4.gemfile.lock b/gemfiles/ruby_2.7_resque2_redis4.gemfile.lock index 6fc77ca09d1..07448ceee4c 100644 --- a/gemfiles/ruby_2.7_resque2_redis4.gemfile.lock +++ b/gemfiles/ruby_2.7_resque2_redis4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -158,9 +157,6 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -170,7 +166,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -202,7 +197,6 @@ DEPENDENCIES simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_sinatra_2.gemfile b/gemfiles/ruby_2.7_sinatra_2.gemfile index 1bb62870814..711211412dc 100644 --- a/gemfiles/ruby_2.7_sinatra_2.gemfile +++ b/gemfiles/ruby_2.7_sinatra_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_sinatra_2.gemfile.lock b/gemfiles/ruby_2.7_sinatra_2.gemfile.lock index f8961351eca..0bd0e58786d 100644 --- a/gemfiles/ruby_2.7_sinatra_2.gemfile.lock +++ b/gemfiles/ruby_2.7_sinatra_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,7 +33,6 @@ GEM bigdecimal (3.1.7) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -41,7 +40,7 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -54,8 +53,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -158,7 +157,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.36) PLATFORMS aarch64-linux @@ -168,7 +166,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -201,7 +198,6 @@ DEPENDENCIES sinatra (~> 2) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_sinatra_3.gemfile b/gemfiles/ruby_2.7_sinatra_3.gemfile index 8a31b992d6f..7d4b55b8cd4 100644 --- a/gemfiles/ruby_2.7_sinatra_3.gemfile +++ b/gemfiles/ruby_2.7_sinatra_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_2.7_sinatra_3.gemfile.lock b/gemfiles/ruby_2.7_sinatra_3.gemfile.lock index f71921d4444..cc501e03aa1 100644 --- a/gemfiles/ruby_2.7_sinatra_3.gemfile.lock +++ b/gemfiles/ruby_2.7_sinatra_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,7 +34,6 @@ GEM bigdecimal (3.1.7) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -42,7 +41,7 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -55,8 +54,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -160,7 +159,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.36) PLATFORMS aarch64-linux @@ -170,7 +168,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -203,7 +200,6 @@ DEPENDENCIES sinatra (~> 3) warning (~> 1) webmock (>= 3.10.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_2.7_stripe_10.gemfile b/gemfiles/ruby_2.7_stripe_10.gemfile new file mode 100644 index 00000000000..239fe6ded9a --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_10.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 10" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.7_stripe_10.gemfile.lock b/gemfiles/ruby_2.7_stripe_10.gemfile.lock new file mode 100644 index 00000000000..d6514fcb0ae --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_10.gemfile.lock @@ -0,0 +1,185 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (10.15.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 10) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.7_stripe_11.gemfile b/gemfiles/ruby_2.7_stripe_11.gemfile new file mode 100644 index 00000000000..9ba917d2f40 --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_11.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.7_stripe_11.gemfile.lock b/gemfiles/ruby_2.7_stripe_11.gemfile.lock new file mode 100644 index 00000000000..5fe054880d0 --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_11.gemfile.lock @@ -0,0 +1,185 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (11.7.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 11) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.7_stripe_12.gemfile b/gemfiles/ruby_2.7_stripe_12.gemfile new file mode 100644 index 00000000000..df91d86a2d7 --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_12.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 12" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.7_stripe_12.gemfile.lock b/gemfiles/ruby_2.7_stripe_12.gemfile.lock new file mode 100644 index 00000000000..9761381dd62 --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_12.gemfile.lock @@ -0,0 +1,185 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (12.5.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 12) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.7_stripe_7.gemfile b/gemfiles/ruby_2.7_stripe_7.gemfile new file mode 100644 index 00000000000..8c0c4e7715b --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_7.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 7" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.7_stripe_7.gemfile.lock b/gemfiles/ruby_2.7_stripe_7.gemfile.lock new file mode 100644 index 00000000000..e8bc22215b7 --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_7.gemfile.lock @@ -0,0 +1,185 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (7.1.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 7) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.7_stripe_8.gemfile b/gemfiles/ruby_2.7_stripe_8.gemfile new file mode 100644 index 00000000000..e6a028aa900 --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_8.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 8" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.7_stripe_8.gemfile.lock b/gemfiles/ruby_2.7_stripe_8.gemfile.lock new file mode 100644 index 00000000000..29f6ff36174 --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_8.gemfile.lock @@ -0,0 +1,185 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (8.7.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 8) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.7_stripe_9.gemfile b/gemfiles/ruby_2.7_stripe_9.gemfile new file mode 100644 index 00000000000..0047ad88b64 --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_9.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 9" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.7_stripe_9.gemfile.lock b/gemfiles/ruby_2.7_stripe_9.gemfile.lock new file mode 100644 index 00000000000..9fe3e73f6b2 --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_9.gemfile.lock @@ -0,0 +1,185 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (9.4.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 9) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.7_stripe_latest.gemfile b/gemfiles/ruby_2.7_stripe_latest.gemfile new file mode 100644 index 00000000000..2173461f6fd --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.7_stripe_latest.gemfile.lock b/gemfiles/ruby_2.7_stripe_latest.gemfile.lock new file mode 100644 index 00000000000..201b90e3f6b --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_latest.gemfile.lock @@ -0,0 +1,183 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (13.0.1) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.7_stripe_min.gemfile b/gemfiles/ruby_2.7_stripe_min.gemfile new file mode 100644 index 00000000000..66e7e726720 --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_min.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "= 5.15.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.7_stripe_min.gemfile.lock b/gemfiles/ruby_2.7_stripe_min.gemfile.lock new file mode 100644 index 00000000000..3f4a491bfde --- /dev/null +++ b/gemfiles/ruby_2.7_stripe_min.gemfile.lock @@ -0,0 +1,184 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.5-aarch64-linux) + google-protobuf (3.25.5-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.1.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (5.15.0) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (= 5.15.0) + warning (~> 1) + webmock (>= 3.10.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_activesupport.gemfile b/gemfiles/ruby_3.0_activesupport.gemfile index f0b4b9eba6a..ff0e1b413ad 100644 --- a/gemfiles/ruby_3.0_activesupport.gemfile +++ b/gemfiles/ruby_3.0_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_activesupport.gemfile.lock b/gemfiles/ruby_3.0_activesupport.gemfile.lock index 9ab188753b0..bf23e0049c1 100644 --- a/gemfiles/ruby_3.0_activesupport.gemfile.lock +++ b/gemfiles/ruby_3.0_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -66,7 +66,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest-crc (0.6.5) @@ -107,8 +107,8 @@ GEM addressable (>= 2.4) jsonapi-renderer (0.2.2) king_konf (1.0.1) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -246,7 +246,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) zeitwerk (2.6.11) PLATFORMS @@ -261,7 +260,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -296,7 +294,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_aws.gemfile b/gemfiles/ruby_3.0_aws.gemfile index b31a3300011..91d7e549442 100644 --- a/gemfiles/ruby_3.0_aws.gemfile +++ b/gemfiles/ruby_3.0_aws.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_aws.gemfile.lock b/gemfiles/ruby_3.0_aws.gemfile.lock index 11dfcca5d70..f38d60b4a5d 100644 --- a/gemfiles/ruby_3.0_aws.gemfile.lock +++ b/gemfiles/ruby_3.0_aws.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -1452,14 +1452,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -1473,8 +1472,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -1565,7 +1564,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -1576,7 +1574,6 @@ DEPENDENCIES aws-sdk benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -1608,7 +1605,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_contrib.gemfile b/gemfiles/ruby_3.0_contrib.gemfile index 4f1becd3954..cadb846b43b 100644 --- a/gemfiles/ruby_3.0_contrib.gemfile +++ b/gemfiles/ruby_3.0_contrib.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_contrib.gemfile.lock b/gemfiles/ruby_3.0_contrib.gemfile.lock index 51d2ca8c0ad..85b2b8b8761 100644 --- a/gemfiles/ruby_3.0_contrib.gemfile.lock +++ b/gemfiles/ruby_3.0_contrib.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,7 +33,6 @@ GEM binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) bson (4.15.0) - builder (3.2.4) bunny (2.20.3) amq-protocol (~> 2.3, >= 2.3.1) sorted_set (~> 1, >= 1.0.2) @@ -45,7 +44,7 @@ GEM crack (0.4.5) rexml dalli (3.2.4) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -66,8 +65,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -206,8 +205,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -217,7 +214,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (>= 3.0.0) @@ -259,7 +255,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_contrib_old.gemfile b/gemfiles/ruby_3.0_contrib_old.gemfile index d8d12cec583..b76b9e9b273 100644 --- a/gemfiles/ruby_3.0_contrib_old.gemfile +++ b/gemfiles/ruby_3.0_contrib_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_contrib_old.gemfile.lock b/gemfiles/ruby_3.0_contrib_old.gemfile.lock index a367331774d..a4a5d67dce0 100644 --- a/gemfiles/ruby_3.0_contrib_old.gemfile.lock +++ b/gemfiles/ruby_3.0_contrib_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,7 +34,6 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -43,7 +42,7 @@ GEM rexml daemons (1.4.1) dalli (2.7.11) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -62,8 +61,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -190,8 +189,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -201,7 +198,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (< 3.0.0) @@ -235,7 +231,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_core_old.gemfile b/gemfiles/ruby_3.0_core_old.gemfile index 88d7b20d389..589263cbf08 100644 --- a/gemfiles/ruby_3.0_core_old.gemfile +++ b/gemfiles/ruby_3.0_core_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_core_old.gemfile.lock b/gemfiles/ruby_3.0_core_old.gemfile.lock index 0b167fa73bf..e95e9f8aabf 100644 --- a/gemfiles/ruby_3.0_core_old.gemfile.lock +++ b/gemfiles/ruby_3.0_core_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -137,8 +136,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -148,7 +145,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -179,7 +175,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_elasticsearch_7.gemfile b/gemfiles/ruby_3.0_elasticsearch_7.gemfile index 0ab1bf8994e..44fcd76f662 100644 --- a/gemfiles/ruby_3.0_elasticsearch_7.gemfile +++ b/gemfiles/ruby_3.0_elasticsearch_7.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_elasticsearch_7.gemfile.lock b/gemfiles/ruby_3.0_elasticsearch_7.gemfile.lock index 8a80d7ae5e3..40d8254c153 100644 --- a/gemfiles/ruby_3.0_elasticsearch_7.gemfile.lock +++ b/gemfiles/ruby_3.0_elasticsearch_7.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -32,14 +32,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -83,8 +82,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -175,7 +174,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -185,7 +183,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -217,7 +214,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_elasticsearch_8.gemfile b/gemfiles/ruby_3.0_elasticsearch_8.gemfile index 8ad2715aedb..b16f87ca5fc 100644 --- a/gemfiles/ruby_3.0_elasticsearch_8.gemfile +++ b/gemfiles/ruby_3.0_elasticsearch_8.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_elasticsearch_8.gemfile.lock b/gemfiles/ruby_3.0_elasticsearch_8.gemfile.lock index 8bb5c201829..2f7398bfd98 100644 --- a/gemfiles/ruby_3.0_elasticsearch_8.gemfile.lock +++ b/gemfiles/ruby_3.0_elasticsearch_8.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +33,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -66,8 +65,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -157,7 +156,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -167,7 +165,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -199,7 +196,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_elasticsearch_latest.gemfile b/gemfiles/ruby_3.0_elasticsearch_latest.gemfile new file mode 100644 index 00000000000..321c8be9e1d --- /dev/null +++ b/gemfiles/ruby_3.0_elasticsearch_latest.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "elasticsearch" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_elasticsearch_latest.gemfile.lock b/gemfiles/ruby_3.0_elasticsearch_latest.gemfile.lock new file mode 100644 index 00000000000..51236fd3c02 --- /dev/null +++ b/gemfiles/ruby_3.0_elasticsearch_latest.gemfile.lock @@ -0,0 +1,204 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + elastic-transport (8.3.5) + faraday (< 3) + multi_json + elasticsearch (8.15.0) + elastic-transport (~> 8.3) + elasticsearch-api (= 8.15.0) + elasticsearch-api (8.15.0) + multi_json + extlz4 (0.3.4) + faraday (2.12.0) + faraday-net_http (>= 2.0, < 3.4) + json + logger + faraday-net_http (3.3.0) + net-http + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + logger (1.6.1) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + multi_json (1.15.0) + net-http (0.4.1) + uri + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + uri (0.13.1) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + elasticsearch + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_graphql_1.13.gemfile b/gemfiles/ruby_3.0_graphql_1.13.gemfile index 5003adf6378..98b0fd3a571 100644 --- a/gemfiles/ruby_3.0_graphql_1.13.gemfile +++ b/gemfiles/ruby_3.0_graphql_1.13.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -36,7 +34,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 1.13.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.0_graphql_1.13.gemfile.lock b/gemfiles/ruby_3.0_graphql_1.13.gemfile.lock index 667e8519c7a..751a49cbe7d 100644 --- a/gemfiles/ruby_3.0_graphql_1.13.gemfile.lock +++ b/gemfiles/ruby_3.0_graphql_1.13.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -39,29 +99,66 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (1.13.21) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -79,11 +176,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -133,8 +263,19 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -142,7 +283,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -152,7 +296,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -162,12 +305,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 1.13.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-byebug pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -181,10 +326,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_graphql_2.0.gemfile b/gemfiles/ruby_3.0_graphql_2.0.gemfile index ce931103f67..8986fdcba51 100644 --- a/gemfiles/ruby_3.0_graphql_2.0.gemfile +++ b/gemfiles/ruby_3.0_graphql_2.0.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -36,7 +34,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.0.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.0_graphql_2.0.gemfile.lock b/gemfiles/ruby_3.0_graphql_2.0.gemfile.lock index faa96b87270..c277ae43c80 100644 --- a/gemfiles/ruby_3.0_graphql_2.0.gemfile.lock +++ b/gemfiles/ruby_3.0_graphql_2.0.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -39,29 +99,66 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (2.0.28) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -79,11 +176,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -133,8 +263,19 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -142,7 +283,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -152,7 +296,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -162,12 +305,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.0.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-byebug pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -181,10 +326,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_graphql_2.1.gemfile b/gemfiles/ruby_3.0_graphql_2.1.gemfile index 8cb68dade19..769c0cc9643 100644 --- a/gemfiles/ruby_3.0_graphql_2.1.gemfile +++ b/gemfiles/ruby_3.0_graphql_2.1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -36,7 +34,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.1.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.0_graphql_2.1.gemfile.lock b/gemfiles/ruby_3.0_graphql_2.1.gemfile.lock index b0dfbe1ba0b..1bd858f9e5e 100644 --- a/gemfiles/ruby_3.0_graphql_2.1.gemfile.lock +++ b/gemfiles/ruby_3.0_graphql_2.1.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -39,30 +99,67 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (2.1.11) racc (~> 1.4) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -80,11 +177,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -134,8 +264,19 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -143,7 +284,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -153,7 +297,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -163,12 +306,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.1.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-byebug pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -182,10 +327,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_graphql_2.2.gemfile b/gemfiles/ruby_3.0_graphql_2.2.gemfile index f20bb0f78a3..76f478e0225 100644 --- a/gemfiles/ruby_3.0_graphql_2.2.gemfile +++ b/gemfiles/ruby_3.0_graphql_2.2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -36,7 +34,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.2.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.0_graphql_2.2.gemfile.lock b/gemfiles/ruby_3.0_graphql_2.2.gemfile.lock index 78ca9e87b13..9664da42c42 100644 --- a/gemfiles/ruby_3.0_graphql_2.2.gemfile.lock +++ b/gemfiles/ruby_3.0_graphql_2.2.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -39,30 +99,67 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (2.2.6) racc (~> 1.4) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -80,11 +177,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -134,8 +264,19 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -143,7 +284,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -153,7 +297,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -163,12 +306,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.2.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-byebug pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -182,10 +327,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_graphql_2.3.gemfile b/gemfiles/ruby_3.0_graphql_2.3.gemfile new file mode 100644 index 00000000000..ba03552ec9b --- /dev/null +++ b/gemfiles/ruby_3.0_graphql_2.3.gemfile @@ -0,0 +1,50 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" +gem "graphql", "~> 2.3.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_graphql_2.3.gemfile.lock b/gemfiles/ruby_3.0_graphql_2.3.gemfile.lock new file mode 100644 index 00000000000..f4ebb75c8d9 --- /dev/null +++ b/gemfiles/ruby_3.0_graphql_2.3.gemfile.lock @@ -0,0 +1,338 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.3) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.3-aarch64-linux) + google-protobuf (3.25.3-x86_64-linux) + graphql (2.3.6) + base64 + hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.24.0) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.25.1) + parser (3.3.3.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.0) + racc (1.8.0) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + request_store (1.7.0) + rack (>= 1.4) + rexml (3.3.1) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + graphql (~> 2.3.0) + json-schema (< 3) + lograge (~> 0.11) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rails (~> 6.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + sprockets (< 4) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_http.gemfile b/gemfiles/ruby_3.0_http.gemfile index f95891aefe3..43aed3dcae5 100644 --- a/gemfiles/ruby_3.0_http.gemfile +++ b/gemfiles/ruby_3.0_http.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -42,7 +40,6 @@ gem "faraday" gem "http" gem "httpclient" gem "rest-client" -gem "stripe" gem "typhoeus" group :check do diff --git a/gemfiles/ruby_3.0_http.gemfile.lock b/gemfiles/ruby_3.0_http.gemfile.lock index a6dff41885d..26c76949857 100644 --- a/gemfiles/ruby_3.0_http.gemfile.lock +++ b/gemfiles/ruby_3.0_http.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -73,8 +72,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -165,7 +164,6 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) - stripe (9.2.0) strscan (3.1.0) thor (1.2.2) typhoeus (1.4.0) @@ -180,7 +178,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -190,7 +187,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -224,12 +220,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) - stripe typhoeus warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_opensearch_2.gemfile b/gemfiles/ruby_3.0_opensearch_2.gemfile index 742c1a54c47..fe2d4f9f0cd 100644 --- a/gemfiles/ruby_3.0_opensearch_2.gemfile +++ b/gemfiles/ruby_3.0_opensearch_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_opensearch_2.gemfile.lock b/gemfiles/ruby_3.0_opensearch_2.gemfile.lock index 6a1a17d3201..7fddc4d53cf 100644 --- a/gemfiles/ruby_3.0_opensearch_2.gemfile.lock +++ b/gemfiles/ruby_3.0_opensearch_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +33,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -58,8 +57,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -157,7 +156,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -167,7 +165,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -199,7 +196,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_opensearch_3.gemfile b/gemfiles/ruby_3.0_opensearch_3.gemfile index ff9a2f3e1db..d106748759d 100644 --- a/gemfiles/ruby_3.0_opensearch_3.gemfile +++ b/gemfiles/ruby_3.0_opensearch_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_opensearch_3.gemfile.lock b/gemfiles/ruby_3.0_opensearch_3.gemfile.lock index d08b3e24ad3..7a324b9710a 100644 --- a/gemfiles/ruby_3.0_opensearch_3.gemfile.lock +++ b/gemfiles/ruby_3.0_opensearch_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +33,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -58,8 +57,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -152,7 +151,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -162,7 +160,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -194,7 +191,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_opensearch_latest.gemfile b/gemfiles/ruby_3.0_opensearch_latest.gemfile new file mode 100644 index 00000000000..a45f179bf57 --- /dev/null +++ b/gemfiles/ruby_3.0_opensearch_latest.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "opensearch-ruby" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_opensearch_latest.gemfile.lock b/gemfiles/ruby_3.0_opensearch_latest.gemfile.lock new file mode 100644 index 00000000000..f279b900c9b --- /dev/null +++ b/gemfiles/ruby_3.0_opensearch_latest.gemfile.lock @@ -0,0 +1,199 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + faraday (2.12.0) + faraday-net_http (>= 2.0, < 3.4) + json + logger + faraday-net_http (3.3.0) + net-http + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + logger (1.6.1) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + multi_json (1.15.0) + net-http (0.4.1) + uri + opensearch-ruby (3.4.0) + faraday (>= 1.0, < 3) + multi_json (>= 1.0) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + uri (0.13.1) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opensearch-ruby + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_opentelemetry.gemfile b/gemfiles/ruby_3.0_opentelemetry.gemfile index 9593826ff94..efdba6ad7e6 100644 --- a/gemfiles/ruby_3.0_opentelemetry.gemfile +++ b/gemfiles/ruby_3.0_opentelemetry.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_opentelemetry.gemfile.lock b/gemfiles/ruby_3.0_opentelemetry.gemfile.lock index e711f1acddc..6856d7587cc 100755 --- a/gemfiles/ruby_3.0_opentelemetry.gemfile.lock +++ b/gemfiles/ruby_3.0_opentelemetry.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -149,8 +148,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -160,7 +157,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -192,7 +188,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_opentelemetry_otlp.gemfile b/gemfiles/ruby_3.0_opentelemetry_otlp.gemfile new file mode 100644 index 00000000000..a535da8239f --- /dev/null +++ b/gemfiles/ruby_3.0_opentelemetry_otlp.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "opentelemetry-sdk", "~> 1.1" +gem "opentelemetry-exporter-otlp" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_opentelemetry_otlp.gemfile.lock b/gemfiles/ruby_3.0_opentelemetry_otlp.gemfile.lock new file mode 100644 index 00000000000..c2476ce5525 --- /dev/null +++ b/gemfiles/ruby_3.0_opentelemetry_otlp.gemfile.lock @@ -0,0 +1,207 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6) + binding_of_caller (1.0.0) + debug_inspector (>= 0.0.1) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.2.3) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.3-aarch64-linux) + google-protobuf (3.25.3-x86_64-linux) + googleapis-common-protos-types (1.13.0) + google-protobuf (~> 3.18) + hashdiff (1.1.0) + json (2.7.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.0.0) + msgpack (1.7.3) + opentelemetry-api (1.2.5) + opentelemetry-common (0.20.1) + opentelemetry-api (~> 1.0) + opentelemetry-exporter-otlp (0.26.3) + google-protobuf (~> 3.14) + googleapis-common-protos-types (~> 1.3) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.20) + opentelemetry-sdk (~> 1.2) + opentelemetry-semantic_conventions + opentelemetry-registry (0.3.0) + opentelemetry-api (~> 1.1) + opentelemetry-sdk (1.4.0) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.20) + opentelemetry-registry (~> 0.2) + opentelemetry-semantic_conventions + opentelemetry-semantic_conventions (1.10.0) + opentelemetry-api (~> 1.0) + os (1.1.4) + parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.0.4) + racc (1.7.3) + rainbow (3.1.1) + rake (13.1.0) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.0) + rexml (3.3.8) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.1) + parser (>= 3.3.0.4) + rubocop-capybara (2.20.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.20.2) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + thor (1.3.1) + unicode-display_width (2.5.0) + warning (1.3.0) + webmock (3.23.0) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opentelemetry-exporter-otlp + opentelemetry-sdk (~> 1.1) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_rack_1.gemfile b/gemfiles/ruby_3.0_rack_1.gemfile index 6d021931b7c..19521895ce3 100644 --- a/gemfiles/ruby_3.0_rack_1.gemfile +++ b/gemfiles/ruby_3.0_rack_1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_rack_1.gemfile.lock b/gemfiles/ruby_3.0_rack_1.gemfile.lock index 5d6dcaefab0..22dd6fc5d60 100644 --- a/gemfiles/ruby_3.0_rack_1.gemfile.lock +++ b/gemfiles/ruby_3.0_rack_1.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -144,7 +143,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -154,7 +152,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -188,7 +185,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_rack_2.gemfile b/gemfiles/ruby_3.0_rack_2.gemfile index 9f6ef8ad7e5..0f60fe70bf9 100644 --- a/gemfiles/ruby_3.0_rack_2.gemfile +++ b/gemfiles/ruby_3.0_rack_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_rack_2.gemfile.lock b/gemfiles/ruby_3.0_rack_2.gemfile.lock index cb7a4db8f37..627515e4c2d 100644 --- a/gemfiles/ruby_3.0_rack_2.gemfile.lock +++ b/gemfiles/ruby_3.0_rack_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -144,7 +143,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -154,7 +152,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -188,7 +185,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_rack_3.gemfile b/gemfiles/ruby_3.0_rack_3.gemfile index 7bd3ca8f3a3..51e066f779f 100644 --- a/gemfiles/ruby_3.0_rack_3.gemfile +++ b/gemfiles/ruby_3.0_rack_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_rack_3.gemfile.lock b/gemfiles/ruby_3.0_rack_3.gemfile.lock index 0663da5ef33..b75aa38b82f 100644 --- a/gemfiles/ruby_3.0_rack_3.gemfile.lock +++ b/gemfiles/ruby_3.0_rack_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -144,7 +143,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -154,7 +152,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -188,7 +185,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_rack_latest.gemfile b/gemfiles/ruby_3.0_rack_latest.gemfile new file mode 100644 index 00000000000..6117465290b --- /dev/null +++ b/gemfiles/ruby_3.0_rack_latest.gemfile @@ -0,0 +1,49 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rack" +gem "rack-contrib" +gem "rack-test" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_rack_latest.gemfile.lock b/gemfiles/ruby_3.0_rack_latest.gemfile.lock new file mode 100644 index 00000000000..c9de3f4a846 --- /dev/null +++ b/gemfiles/ruby_3.0_rack_latest.gemfile.lock @@ -0,0 +1,192 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.2) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.5-aarch64-linux) + google-protobuf (3.25.5-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.8) + rack-contrib (2.5.0) + rack (< 4) + rack-test (2.1.0) + rack (>= 1.3) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.2) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rack + rack-contrib + rack-test + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_rails61_mysql2.gemfile b/gemfiles/ruby_3.0_rails61_mysql2.gemfile index 13a696031a9..6ad734fe1f4 100644 --- a/gemfiles/ruby_3.0_rails61_mysql2.gemfile +++ b/gemfiles/ruby_3.0_rails61_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_rails61_mysql2.gemfile.lock b/gemfiles/ruby_3.0_rails61_mysql2.gemfile.lock index e755315b914..9726609b60d 100644 --- a/gemfiles/ruby_3.0_rails61_mysql2.gemfile.lock +++ b/gemfiles/ruby_3.0_rails61_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -279,8 +279,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -291,7 +289,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -327,7 +324,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_rails61_postgres.gemfile b/gemfiles/ruby_3.0_rails61_postgres.gemfile index 80964fa587d..6b8d28faa74 100644 --- a/gemfiles/ruby_3.0_rails61_postgres.gemfile +++ b/gemfiles/ruby_3.0_rails61_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_rails61_postgres.gemfile.lock b/gemfiles/ruby_3.0_rails61_postgres.gemfile.lock index 2096f4beb5d..089fd05a2f0 100644 --- a/gemfiles/ruby_3.0_rails61_postgres.gemfile.lock +++ b/gemfiles/ruby_3.0_rails61_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -279,8 +279,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -291,7 +289,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -327,7 +324,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_rails61_postgres_redis.gemfile b/gemfiles/ruby_3.0_rails61_postgres_redis.gemfile index 6c95ae85487..010b0a44940 100644 --- a/gemfiles/ruby_3.0_rails61_postgres_redis.gemfile +++ b/gemfiles/ruby_3.0_rails61_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_rails61_postgres_redis.gemfile.lock b/gemfiles/ruby_3.0_rails61_postgres_redis.gemfile.lock index bf94e059449..988fff3bf4c 100644 --- a/gemfiles/ruby_3.0_rails61_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_3.0_rails61_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -280,8 +280,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -292,7 +290,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -329,7 +326,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_rails61_postgres_sidekiq.gemfile b/gemfiles/ruby_3.0_rails61_postgres_sidekiq.gemfile index 295ba9e809b..2b3a1555ce9 100644 --- a/gemfiles/ruby_3.0_rails61_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_3.0_rails61_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_rails61_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_3.0_rails61_postgres_sidekiq.gemfile.lock index 197254e251a..a464084449e 100644 --- a/gemfiles/ruby_3.0_rails61_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_3.0_rails61_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -99,8 +99,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -118,8 +118,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -293,8 +293,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -305,7 +303,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -343,7 +340,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_rails61_semantic_logger.gemfile b/gemfiles/ruby_3.0_rails61_semantic_logger.gemfile index fc89ffd7935..f641013b68b 100644 --- a/gemfiles/ruby_3.0_rails61_semantic_logger.gemfile +++ b/gemfiles/ruby_3.0_rails61_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_rails61_semantic_logger.gemfile.lock b/gemfiles/ruby_3.0_rails61_semantic_logger.gemfile.lock index 0022753106e..61a617b81bd 100644 --- a/gemfiles/ruby_3.0_rails61_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_3.0_rails61_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -278,8 +278,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -290,7 +288,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -326,7 +323,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_rails61_trilogy.gemfile b/gemfiles/ruby_3.0_rails61_trilogy.gemfile index eebc430527a..b71519bc3cb 100644 --- a/gemfiles/ruby_3.0_rails61_trilogy.gemfile +++ b/gemfiles/ruby_3.0_rails61_trilogy.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_rails61_trilogy.gemfile.lock b/gemfiles/ruby_3.0_rails61_trilogy.gemfile.lock index 3c37aab2159..f3017befd8c 100644 --- a/gemfiles/ruby_3.0_rails61_trilogy.gemfile.lock +++ b/gemfiles/ruby_3.0_rails61_trilogy.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -102,8 +102,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.4) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -121,8 +121,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -287,7 +287,6 @@ GEM websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.34) zeitwerk (2.6.12) PLATFORMS @@ -299,7 +298,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -335,7 +333,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_rails7.gemfile b/gemfiles/ruby_3.0_rails7.gemfile new file mode 100644 index 00000000000..ea6009c3f4f --- /dev/null +++ b/gemfiles/ruby_3.0_rails7.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.0.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_rails7.gemfile.lock b/gemfiles/ruby_3.0_rails7.gemfile.lock new file mode 100644 index 00000000000..3c2ba1ec336 --- /dev/null +++ b/gemfiles/ruby_3.0_rails7.gemfile.lock @@ -0,0 +1,323 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.8.4) + actionpack (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.0) + actionpack (7.0.8.4) + actionview (= 7.0.8.4) + activesupport (= 7.0.8.4) + rack (~> 2.0, >= 2.2.4) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.8.4) + actionpack (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.8.4) + activesupport (= 7.0.8.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.3.6) + activemodel (7.0.8.4) + activesupport (= 7.0.8.4) + activerecord (7.0.8.4) + activemodel (= 7.0.8.4) + activesupport (= 7.0.8.4) + activestorage (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activesupport (= 7.0.8.4) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.8.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (7.0.8.4) + actioncable (= 7.0.8.4) + actionmailbox (= 7.0.8.4) + actionmailer (= 7.0.8.4) + actionpack (= 7.0.8.4) + actiontext (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activemodel (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + bundler (>= 1.15.0) + railties (= 7.0.8.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + method_source + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rails (~> 7.0.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_rails71.gemfile b/gemfiles/ruby_3.0_rails71.gemfile new file mode 100644 index 00000000000..8712774497c --- /dev/null +++ b/gemfiles/ruby_3.0_rails71.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.1.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_rails71.gemfile.lock b/gemfiles/ruby_3.0_rails71.gemfile.lock new file mode 100644 index 00000000000..56c56e178d1 --- /dev/null +++ b/gemfiles/ruby_3.0_rails71.gemfile.lock @@ -0,0 +1,353 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + zeitwerk (~> 2.6) + actionmailbox (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.1.3.4) + actionpack (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.2) + actionpack (7.1.3.4) + actionview (= 7.1.3.4) + activesupport (= 7.1.3.4) + nokogiri (>= 1.8.5) + racc + rack (>= 2.2.4) + rack-session (>= 1.0.1) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + actiontext (7.1.3.4) + actionpack (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.1.3.4) + activesupport (= 7.1.3.4) + builder (~> 3.1) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activejob (7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.3.6) + activemodel (7.1.3.4) + activesupport (= 7.1.3.4) + activerecord (7.1.3.4) + activemodel (= 7.1.3.4) + activesupport (= 7.1.3.4) + timeout (>= 0.4.0) + activestorage (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activesupport (= 7.1.3.4) + marcel (~> 1.0) + activesupport (7.1.3.4) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + drb (2.2.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + io-console (0.7.2) + irb (1.14.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + psych (5.1.2) + stringio + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.7) + rack-session (2.0.0) + rack (>= 3.0.0) + rack-test (2.1.0) + rack (>= 1.3) + rackup (2.1.0) + rack (>= 3) + webrick (~> 1.8) + rails (7.1.3.4) + actioncable (= 7.1.3.4) + actionmailbox (= 7.1.3.4) + actionmailer (= 7.1.3.4) + actionpack (= 7.1.3.4) + actiontext (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activemodel (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + bundler (>= 1.15.0) + railties (= 7.1.3.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + irb + rackup (>= 1.0.0) + rake (>= 12.2) + thor (~> 1.0, >= 1.2.2) + zeitwerk (~> 2.6) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rdoc (6.7.0) + psych (>= 4.0.0) + regexp_parser (2.9.2) + reline (0.5.9) + io-console (~> 0.5) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stringio (3.1.1) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rails (~> 7.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_redis_3.gemfile b/gemfiles/ruby_3.0_redis_3.gemfile index c674a2cb945..3da684952b1 100644 --- a/gemfiles/ruby_3.0_redis_3.gemfile +++ b/gemfiles/ruby_3.0_redis_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_redis_3.gemfile.lock b/gemfiles/ruby_3.0_redis_3.gemfile.lock index a4c5feb1876..b8e74ef1dc7 100644 --- a/gemfiles/ruby_3.0_redis_3.gemfile.lock +++ b/gemfiles/ruby_3.0_redis_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -138,8 +137,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -149,7 +146,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -181,7 +177,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_redis_4.gemfile b/gemfiles/ruby_3.0_redis_4.gemfile index a7f6edf87ac..a474dacc352 100644 --- a/gemfiles/ruby_3.0_redis_4.gemfile +++ b/gemfiles/ruby_3.0_redis_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_redis_4.gemfile.lock b/gemfiles/ruby_3.0_redis_4.gemfile.lock index 57a47765e12..ccae68e5148 100644 --- a/gemfiles/ruby_3.0_redis_4.gemfile.lock +++ b/gemfiles/ruby_3.0_redis_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -138,8 +137,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -149,7 +146,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -181,7 +177,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_redis_5.gemfile b/gemfiles/ruby_3.0_redis_5.gemfile index f8ff97eff06..0bec971995a 100644 --- a/gemfiles/ruby_3.0_redis_5.gemfile +++ b/gemfiles/ruby_3.0_redis_5.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_redis_5.gemfile.lock b/gemfiles/ruby_3.0_redis_5.gemfile.lock index c60e23ef230..1ca63a362a9 100644 --- a/gemfiles/ruby_3.0_redis_5.gemfile.lock +++ b/gemfiles/ruby_3.0_redis_5.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,7 +31,6 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -39,7 +38,7 @@ GEM connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -52,8 +51,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -142,8 +141,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -153,7 +150,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -185,7 +181,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_relational_db.gemfile b/gemfiles/ruby_3.0_relational_db.gemfile index a8fbee4f8a4..cf821089855 100644 --- a/gemfiles/ruby_3.0_relational_db.gemfile +++ b/gemfiles/ruby_3.0_relational_db.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -43,7 +41,7 @@ gem "makara", ">= 0.6.0.pre" gem "mysql2", ">= 0.5.3", platform: :ruby gem "pg", platform: :ruby gem "sqlite3", ">= 1.4.2", platform: :ruby -gem "sequel", "~> 5.54.0" +gem "sequel" gem "trilogy" group :check do diff --git a/gemfiles/ruby_3.0_relational_db.gemfile.lock b/gemfiles/ruby_3.0_relational_db.gemfile.lock index a0e5aed80aa..8ea15d95ef1 100644 --- a/gemfiles/ruby_3.0_relational_db.gemfile.lock +++ b/gemfiles/ruby_3.0_relational_db.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -39,16 +39,16 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) + bigdecimal (3.1.8) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) delayed_job (4.1.11) activesupport (>= 3.0, < 8.0) @@ -68,8 +68,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -147,7 +147,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) - sequel (5.54.0) + sequel (5.83.1) + bigdecimal simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -167,7 +168,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -178,7 +178,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -209,7 +208,7 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) - sequel (~> 5.54.0) + sequel simplecov! simplecov-cobertura (~> 2.1.0) sqlite3 (>= 1.4.2) @@ -217,7 +216,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_resque2_redis3.gemfile b/gemfiles/ruby_3.0_resque2_redis3.gemfile index 74d311406e0..24693a3168e 100644 --- a/gemfiles/ruby_3.0_resque2_redis3.gemfile +++ b/gemfiles/ruby_3.0_resque2_redis3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_resque2_redis3.gemfile.lock b/gemfiles/ruby_3.0_resque2_redis3.gemfile.lock index bcfecee22aa..9d9bcffc037 100644 --- a/gemfiles/ruby_3.0_resque2_redis3.gemfile.lock +++ b/gemfiles/ruby_3.0_resque2_redis3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -159,8 +158,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -170,7 +167,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -203,7 +199,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_resque2_redis4.gemfile b/gemfiles/ruby_3.0_resque2_redis4.gemfile index 8d8fd15a452..f5c4e5fe345 100644 --- a/gemfiles/ruby_3.0_resque2_redis4.gemfile +++ b/gemfiles/ruby_3.0_resque2_redis4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_resque2_redis4.gemfile.lock b/gemfiles/ruby_3.0_resque2_redis4.gemfile.lock index 7d8f3a12841..6f7e6bb79e7 100644 --- a/gemfiles/ruby_3.0_resque2_redis4.gemfile.lock +++ b/gemfiles/ruby_3.0_resque2_redis4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,7 +31,6 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -39,7 +38,7 @@ GEM connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -52,8 +51,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -163,8 +162,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -174,7 +171,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -207,7 +203,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_sinatra_2.gemfile b/gemfiles/ruby_3.0_sinatra_2.gemfile index 9e3d510ba67..94851080db3 100644 --- a/gemfiles/ruby_3.0_sinatra_2.gemfile +++ b/gemfiles/ruby_3.0_sinatra_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_sinatra_2.gemfile.lock b/gemfiles/ruby_3.0_sinatra_2.gemfile.lock index 2558de38638..2fa72cfeed8 100644 --- a/gemfiles/ruby_3.0_sinatra_2.gemfile.lock +++ b/gemfiles/ruby_3.0_sinatra_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,7 +33,6 @@ GEM bigdecimal (3.1.7) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -41,7 +40,7 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -54,8 +53,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -159,7 +158,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -169,7 +167,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -203,7 +200,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_sinatra_3.gemfile b/gemfiles/ruby_3.0_sinatra_3.gemfile index 72f2fb7b783..8a192d712d0 100644 --- a/gemfiles/ruby_3.0_sinatra_3.gemfile +++ b/gemfiles/ruby_3.0_sinatra_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_sinatra_3.gemfile.lock b/gemfiles/ruby_3.0_sinatra_3.gemfile.lock index 67509ebe29f..632789c92e6 100644 --- a/gemfiles/ruby_3.0_sinatra_3.gemfile.lock +++ b/gemfiles/ruby_3.0_sinatra_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,7 +34,6 @@ GEM bigdecimal (3.1.7) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -42,7 +41,7 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -55,8 +54,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -161,7 +160,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -171,7 +169,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -205,7 +202,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_sinatra_4.gemfile b/gemfiles/ruby_3.0_sinatra_4.gemfile index 28f6e84f486..b14baea0446 100644 --- a/gemfiles/ruby_3.0_sinatra_4.gemfile +++ b/gemfiles/ruby_3.0_sinatra_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.0_sinatra_4.gemfile.lock b/gemfiles/ruby_3.0_sinatra_4.gemfile.lock index 6164b99c605..b9fc0ea75d3 100644 --- a/gemfiles/ruby_3.0_sinatra_4.gemfile.lock +++ b/gemfiles/ruby_3.0_sinatra_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,7 +34,6 @@ GEM bigdecimal (3.1.7) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -42,7 +41,7 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -55,8 +54,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -164,7 +163,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -174,7 +172,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -208,7 +205,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.0_stripe_10.gemfile b/gemfiles/ruby_3.0_stripe_10.gemfile new file mode 100644 index 00000000000..5ad1664f174 --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_10.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 10" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_stripe_10.gemfile.lock b/gemfiles/ruby_3.0_stripe_10.gemfile.lock new file mode 100644 index 00000000000..69efbbfa1c4 --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_10.gemfile.lock @@ -0,0 +1,188 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (10.15.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 10) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_stripe_11.gemfile b/gemfiles/ruby_3.0_stripe_11.gemfile new file mode 100644 index 00000000000..580546c4c2f --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_11.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_stripe_11.gemfile.lock b/gemfiles/ruby_3.0_stripe_11.gemfile.lock new file mode 100644 index 00000000000..07b76b832f0 --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_11.gemfile.lock @@ -0,0 +1,188 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (11.7.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 11) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_stripe_12.gemfile b/gemfiles/ruby_3.0_stripe_12.gemfile new file mode 100644 index 00000000000..97595d415fc --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_12.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 12" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_stripe_12.gemfile.lock b/gemfiles/ruby_3.0_stripe_12.gemfile.lock new file mode 100644 index 00000000000..3912a938ee9 --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_12.gemfile.lock @@ -0,0 +1,188 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (12.5.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 12) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_stripe_7.gemfile b/gemfiles/ruby_3.0_stripe_7.gemfile new file mode 100644 index 00000000000..52df754dfb0 --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_7.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 7" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_stripe_7.gemfile.lock b/gemfiles/ruby_3.0_stripe_7.gemfile.lock new file mode 100644 index 00000000000..6650545f3c2 --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_7.gemfile.lock @@ -0,0 +1,188 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (7.1.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 7) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_stripe_8.gemfile b/gemfiles/ruby_3.0_stripe_8.gemfile new file mode 100644 index 00000000000..9aff647d596 --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_8.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 8" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_stripe_8.gemfile.lock b/gemfiles/ruby_3.0_stripe_8.gemfile.lock new file mode 100644 index 00000000000..f34c9a9b964 --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_8.gemfile.lock @@ -0,0 +1,188 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (8.7.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 8) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_stripe_9.gemfile b/gemfiles/ruby_3.0_stripe_9.gemfile new file mode 100644 index 00000000000..3675b1e83f3 --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_9.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 9" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_stripe_9.gemfile.lock b/gemfiles/ruby_3.0_stripe_9.gemfile.lock new file mode 100644 index 00000000000..83fb31af357 --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_9.gemfile.lock @@ -0,0 +1,188 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (9.4.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 9) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_stripe_latest.gemfile b/gemfiles/ruby_3.0_stripe_latest.gemfile new file mode 100644 index 00000000000..3128b4036e6 --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_latest.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_stripe_latest.gemfile.lock b/gemfiles/ruby_3.0_stripe_latest.gemfile.lock new file mode 100644 index 00000000000..5e9e982ed35 --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_latest.gemfile.lock @@ -0,0 +1,186 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (13.0.1) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_stripe_min.gemfile b/gemfiles/ruby_3.0_stripe_min.gemfile new file mode 100644 index 00000000000..00957d50dbf --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_min.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "= 5.15.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_stripe_min.gemfile.lock b/gemfiles/ruby_3.0_stripe_min.gemfile.lock new file mode 100644 index 00000000000..2c917b22dd7 --- /dev/null +++ b/gemfiles/ruby_3.0_stripe_min.gemfile.lock @@ -0,0 +1,186 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.5-aarch64-linux) + google-protobuf (3.25.5-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (5.15.0) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (= 5.15.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_activesupport.gemfile b/gemfiles/ruby_3.1_activesupport.gemfile index f0b4b9eba6a..ff0e1b413ad 100644 --- a/gemfiles/ruby_3.1_activesupport.gemfile +++ b/gemfiles/ruby_3.1_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_activesupport.gemfile.lock b/gemfiles/ruby_3.1_activesupport.gemfile.lock index 9ab188753b0..bf23e0049c1 100644 --- a/gemfiles/ruby_3.1_activesupport.gemfile.lock +++ b/gemfiles/ruby_3.1_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -66,7 +66,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest-crc (0.6.5) @@ -107,8 +107,8 @@ GEM addressable (>= 2.4) jsonapi-renderer (0.2.2) king_konf (1.0.1) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -246,7 +246,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) zeitwerk (2.6.11) PLATFORMS @@ -261,7 +260,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -296,7 +294,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_aws.gemfile b/gemfiles/ruby_3.1_aws.gemfile index b31a3300011..91d7e549442 100644 --- a/gemfiles/ruby_3.1_aws.gemfile +++ b/gemfiles/ruby_3.1_aws.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_aws.gemfile.lock b/gemfiles/ruby_3.1_aws.gemfile.lock index 11dfcca5d70..f38d60b4a5d 100644 --- a/gemfiles/ruby_3.1_aws.gemfile.lock +++ b/gemfiles/ruby_3.1_aws.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -1452,14 +1452,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -1473,8 +1472,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -1565,7 +1564,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -1576,7 +1574,6 @@ DEPENDENCIES aws-sdk benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -1608,7 +1605,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_contrib.gemfile b/gemfiles/ruby_3.1_contrib.gemfile index 4f1becd3954..cadb846b43b 100644 --- a/gemfiles/ruby_3.1_contrib.gemfile +++ b/gemfiles/ruby_3.1_contrib.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_contrib.gemfile.lock b/gemfiles/ruby_3.1_contrib.gemfile.lock index 51d2ca8c0ad..85b2b8b8761 100644 --- a/gemfiles/ruby_3.1_contrib.gemfile.lock +++ b/gemfiles/ruby_3.1_contrib.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,7 +33,6 @@ GEM binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) bson (4.15.0) - builder (3.2.4) bunny (2.20.3) amq-protocol (~> 2.3, >= 2.3.1) sorted_set (~> 1, >= 1.0.2) @@ -45,7 +44,7 @@ GEM crack (0.4.5) rexml dalli (3.2.4) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -66,8 +65,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -206,8 +205,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -217,7 +214,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (>= 3.0.0) @@ -259,7 +255,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_contrib_old.gemfile b/gemfiles/ruby_3.1_contrib_old.gemfile index d8d12cec583..b76b9e9b273 100644 --- a/gemfiles/ruby_3.1_contrib_old.gemfile +++ b/gemfiles/ruby_3.1_contrib_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_contrib_old.gemfile.lock b/gemfiles/ruby_3.1_contrib_old.gemfile.lock index a367331774d..a4a5d67dce0 100644 --- a/gemfiles/ruby_3.1_contrib_old.gemfile.lock +++ b/gemfiles/ruby_3.1_contrib_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,7 +34,6 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -43,7 +42,7 @@ GEM rexml daemons (1.4.1) dalli (2.7.11) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -62,8 +61,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -190,8 +189,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -201,7 +198,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (< 3.0.0) @@ -235,7 +231,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_core_old.gemfile b/gemfiles/ruby_3.1_core_old.gemfile index 88d7b20d389..589263cbf08 100644 --- a/gemfiles/ruby_3.1_core_old.gemfile +++ b/gemfiles/ruby_3.1_core_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_core_old.gemfile.lock b/gemfiles/ruby_3.1_core_old.gemfile.lock index 0b167fa73bf..e95e9f8aabf 100644 --- a/gemfiles/ruby_3.1_core_old.gemfile.lock +++ b/gemfiles/ruby_3.1_core_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -137,8 +136,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -148,7 +145,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -179,7 +175,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_elasticsearch_7.gemfile b/gemfiles/ruby_3.1_elasticsearch_7.gemfile index 0ab1bf8994e..44fcd76f662 100644 --- a/gemfiles/ruby_3.1_elasticsearch_7.gemfile +++ b/gemfiles/ruby_3.1_elasticsearch_7.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_elasticsearch_7.gemfile.lock b/gemfiles/ruby_3.1_elasticsearch_7.gemfile.lock index 8a80d7ae5e3..40d8254c153 100644 --- a/gemfiles/ruby_3.1_elasticsearch_7.gemfile.lock +++ b/gemfiles/ruby_3.1_elasticsearch_7.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -32,14 +32,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -83,8 +82,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -175,7 +174,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -185,7 +183,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -217,7 +214,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_elasticsearch_8.gemfile b/gemfiles/ruby_3.1_elasticsearch_8.gemfile index 8ad2715aedb..b16f87ca5fc 100644 --- a/gemfiles/ruby_3.1_elasticsearch_8.gemfile +++ b/gemfiles/ruby_3.1_elasticsearch_8.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_elasticsearch_8.gemfile.lock b/gemfiles/ruby_3.1_elasticsearch_8.gemfile.lock index 8bb5c201829..2f7398bfd98 100644 --- a/gemfiles/ruby_3.1_elasticsearch_8.gemfile.lock +++ b/gemfiles/ruby_3.1_elasticsearch_8.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +33,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -66,8 +65,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -157,7 +156,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -167,7 +165,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -199,7 +196,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_elasticsearch_latest.gemfile b/gemfiles/ruby_3.1_elasticsearch_latest.gemfile new file mode 100644 index 00000000000..321c8be9e1d --- /dev/null +++ b/gemfiles/ruby_3.1_elasticsearch_latest.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "elasticsearch" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_elasticsearch_latest.gemfile.lock b/gemfiles/ruby_3.1_elasticsearch_latest.gemfile.lock new file mode 100644 index 00000000000..51236fd3c02 --- /dev/null +++ b/gemfiles/ruby_3.1_elasticsearch_latest.gemfile.lock @@ -0,0 +1,204 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + elastic-transport (8.3.5) + faraday (< 3) + multi_json + elasticsearch (8.15.0) + elastic-transport (~> 8.3) + elasticsearch-api (= 8.15.0) + elasticsearch-api (8.15.0) + multi_json + extlz4 (0.3.4) + faraday (2.12.0) + faraday-net_http (>= 2.0, < 3.4) + json + logger + faraday-net_http (3.3.0) + net-http + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + logger (1.6.1) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + multi_json (1.15.0) + net-http (0.4.1) + uri + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + uri (0.13.1) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + elasticsearch + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_graphql_1.13.gemfile b/gemfiles/ruby_3.1_graphql_1.13.gemfile index 5003adf6378..98b0fd3a571 100644 --- a/gemfiles/ruby_3.1_graphql_1.13.gemfile +++ b/gemfiles/ruby_3.1_graphql_1.13.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -36,7 +34,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 1.13.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.1_graphql_1.13.gemfile.lock b/gemfiles/ruby_3.1_graphql_1.13.gemfile.lock index 667e8519c7a..751a49cbe7d 100644 --- a/gemfiles/ruby_3.1_graphql_1.13.gemfile.lock +++ b/gemfiles/ruby_3.1_graphql_1.13.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -39,29 +99,66 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (1.13.21) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -79,11 +176,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -133,8 +263,19 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -142,7 +283,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -152,7 +296,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -162,12 +305,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 1.13.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-byebug pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -181,10 +326,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_graphql_2.0.gemfile b/gemfiles/ruby_3.1_graphql_2.0.gemfile index ce931103f67..8986fdcba51 100644 --- a/gemfiles/ruby_3.1_graphql_2.0.gemfile +++ b/gemfiles/ruby_3.1_graphql_2.0.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -36,7 +34,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.0.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.1_graphql_2.0.gemfile.lock b/gemfiles/ruby_3.1_graphql_2.0.gemfile.lock index faa96b87270..c277ae43c80 100644 --- a/gemfiles/ruby_3.1_graphql_2.0.gemfile.lock +++ b/gemfiles/ruby_3.1_graphql_2.0.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -39,29 +99,66 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (2.0.28) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -79,11 +176,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -133,8 +263,19 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -142,7 +283,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -152,7 +296,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -162,12 +305,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.0.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-byebug pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -181,10 +326,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_graphql_2.1.gemfile b/gemfiles/ruby_3.1_graphql_2.1.gemfile index 8cb68dade19..769c0cc9643 100644 --- a/gemfiles/ruby_3.1_graphql_2.1.gemfile +++ b/gemfiles/ruby_3.1_graphql_2.1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -36,7 +34,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.1.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.1_graphql_2.1.gemfile.lock b/gemfiles/ruby_3.1_graphql_2.1.gemfile.lock index b0dfbe1ba0b..1bd858f9e5e 100644 --- a/gemfiles/ruby_3.1_graphql_2.1.gemfile.lock +++ b/gemfiles/ruby_3.1_graphql_2.1.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -39,30 +99,67 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (2.1.11) racc (~> 1.4) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -80,11 +177,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -134,8 +264,19 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -143,7 +284,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -153,7 +297,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -163,12 +306,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.1.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-byebug pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -182,10 +327,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_graphql_2.2.gemfile b/gemfiles/ruby_3.1_graphql_2.2.gemfile index f20bb0f78a3..76f478e0225 100644 --- a/gemfiles/ruby_3.1_graphql_2.2.gemfile +++ b/gemfiles/ruby_3.1_graphql_2.2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -36,7 +34,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.2.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.1_graphql_2.2.gemfile.lock b/gemfiles/ruby_3.1_graphql_2.2.gemfile.lock index 78ca9e87b13..9664da42c42 100644 --- a/gemfiles/ruby_3.1_graphql_2.2.gemfile.lock +++ b/gemfiles/ruby_3.1_graphql_2.2.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -39,30 +99,67 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (2.2.6) racc (~> 1.4) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -80,11 +177,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -134,8 +264,19 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -143,7 +284,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -153,7 +297,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -163,12 +306,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.2.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-byebug pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -182,10 +327,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_graphql_2.3.gemfile b/gemfiles/ruby_3.1_graphql_2.3.gemfile new file mode 100644 index 00000000000..ba03552ec9b --- /dev/null +++ b/gemfiles/ruby_3.1_graphql_2.3.gemfile @@ -0,0 +1,50 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" +gem "graphql", "~> 2.3.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_graphql_2.3.gemfile.lock b/gemfiles/ruby_3.1_graphql_2.3.gemfile.lock new file mode 100644 index 00000000000..f4ebb75c8d9 --- /dev/null +++ b/gemfiles/ruby_3.1_graphql_2.3.gemfile.lock @@ -0,0 +1,338 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.3) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.3-aarch64-linux) + google-protobuf (3.25.3-x86_64-linux) + graphql (2.3.6) + base64 + hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.24.0) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.25.1) + parser (3.3.3.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.0) + racc (1.8.0) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + request_store (1.7.0) + rack (>= 1.4) + rexml (3.3.1) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + graphql (~> 2.3.0) + json-schema (< 3) + lograge (~> 0.11) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rails (~> 6.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + sprockets (< 4) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_http.gemfile b/gemfiles/ruby_3.1_http.gemfile index f95891aefe3..43aed3dcae5 100644 --- a/gemfiles/ruby_3.1_http.gemfile +++ b/gemfiles/ruby_3.1_http.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -42,7 +40,6 @@ gem "faraday" gem "http" gem "httpclient" gem "rest-client" -gem "stripe" gem "typhoeus" group :check do diff --git a/gemfiles/ruby_3.1_http.gemfile.lock b/gemfiles/ruby_3.1_http.gemfile.lock index a6dff41885d..26c76949857 100644 --- a/gemfiles/ruby_3.1_http.gemfile.lock +++ b/gemfiles/ruby_3.1_http.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -73,8 +72,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -165,7 +164,6 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) - stripe (9.2.0) strscan (3.1.0) thor (1.2.2) typhoeus (1.4.0) @@ -180,7 +178,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -190,7 +187,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -224,12 +220,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) - stripe typhoeus warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_opensearch_2.gemfile b/gemfiles/ruby_3.1_opensearch_2.gemfile index 742c1a54c47..fe2d4f9f0cd 100644 --- a/gemfiles/ruby_3.1_opensearch_2.gemfile +++ b/gemfiles/ruby_3.1_opensearch_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_opensearch_2.gemfile.lock b/gemfiles/ruby_3.1_opensearch_2.gemfile.lock index 6a1a17d3201..7fddc4d53cf 100644 --- a/gemfiles/ruby_3.1_opensearch_2.gemfile.lock +++ b/gemfiles/ruby_3.1_opensearch_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +33,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -58,8 +57,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -157,7 +156,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -167,7 +165,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -199,7 +196,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_opensearch_3.gemfile b/gemfiles/ruby_3.1_opensearch_3.gemfile index ff9a2f3e1db..d106748759d 100644 --- a/gemfiles/ruby_3.1_opensearch_3.gemfile +++ b/gemfiles/ruby_3.1_opensearch_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_opensearch_3.gemfile.lock b/gemfiles/ruby_3.1_opensearch_3.gemfile.lock index d08b3e24ad3..7a324b9710a 100644 --- a/gemfiles/ruby_3.1_opensearch_3.gemfile.lock +++ b/gemfiles/ruby_3.1_opensearch_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +33,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -58,8 +57,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -152,7 +151,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -162,7 +160,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -194,7 +191,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_opensearch_latest.gemfile b/gemfiles/ruby_3.1_opensearch_latest.gemfile new file mode 100644 index 00000000000..a45f179bf57 --- /dev/null +++ b/gemfiles/ruby_3.1_opensearch_latest.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "opensearch-ruby" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_opensearch_latest.gemfile.lock b/gemfiles/ruby_3.1_opensearch_latest.gemfile.lock new file mode 100644 index 00000000000..f279b900c9b --- /dev/null +++ b/gemfiles/ruby_3.1_opensearch_latest.gemfile.lock @@ -0,0 +1,199 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + faraday (2.12.0) + faraday-net_http (>= 2.0, < 3.4) + json + logger + faraday-net_http (3.3.0) + net-http + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + logger (1.6.1) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + multi_json (1.15.0) + net-http (0.4.1) + uri + opensearch-ruby (3.4.0) + faraday (>= 1.0, < 3) + multi_json (>= 1.0) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + uri (0.13.1) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opensearch-ruby + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_opentelemetry.gemfile b/gemfiles/ruby_3.1_opentelemetry.gemfile index 9593826ff94..efdba6ad7e6 100644 --- a/gemfiles/ruby_3.1_opentelemetry.gemfile +++ b/gemfiles/ruby_3.1_opentelemetry.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_opentelemetry.gemfile.lock b/gemfiles/ruby_3.1_opentelemetry.gemfile.lock index 48bad04ffca..023571039c1 100644 --- a/gemfiles/ruby_3.1_opentelemetry.gemfile.lock +++ b/gemfiles/ruby_3.1_opentelemetry.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -52,9 +51,9 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-darwin) @@ -153,8 +152,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -165,7 +162,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -197,7 +193,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_opentelemetry_otlp.gemfile b/gemfiles/ruby_3.1_opentelemetry_otlp.gemfile new file mode 100644 index 00000000000..a535da8239f --- /dev/null +++ b/gemfiles/ruby_3.1_opentelemetry_otlp.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "opentelemetry-sdk", "~> 1.1" +gem "opentelemetry-exporter-otlp" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_opentelemetry_otlp.gemfile.lock b/gemfiles/ruby_3.1_opentelemetry_otlp.gemfile.lock new file mode 100644 index 00000000000..c2476ce5525 --- /dev/null +++ b/gemfiles/ruby_3.1_opentelemetry_otlp.gemfile.lock @@ -0,0 +1,207 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6) + binding_of_caller (1.0.0) + debug_inspector (>= 0.0.1) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.2.3) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.3-aarch64-linux) + google-protobuf (3.25.3-x86_64-linux) + googleapis-common-protos-types (1.13.0) + google-protobuf (~> 3.18) + hashdiff (1.1.0) + json (2.7.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.0.0) + msgpack (1.7.3) + opentelemetry-api (1.2.5) + opentelemetry-common (0.20.1) + opentelemetry-api (~> 1.0) + opentelemetry-exporter-otlp (0.26.3) + google-protobuf (~> 3.14) + googleapis-common-protos-types (~> 1.3) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.20) + opentelemetry-sdk (~> 1.2) + opentelemetry-semantic_conventions + opentelemetry-registry (0.3.0) + opentelemetry-api (~> 1.1) + opentelemetry-sdk (1.4.0) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.20) + opentelemetry-registry (~> 0.2) + opentelemetry-semantic_conventions + opentelemetry-semantic_conventions (1.10.0) + opentelemetry-api (~> 1.0) + os (1.1.4) + parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.0.4) + racc (1.7.3) + rainbow (3.1.1) + rake (13.1.0) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.0) + rexml (3.3.8) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.1) + parser (>= 3.3.0.4) + rubocop-capybara (2.20.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.20.2) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + thor (1.3.1) + unicode-display_width (2.5.0) + warning (1.3.0) + webmock (3.23.0) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opentelemetry-exporter-otlp + opentelemetry-sdk (~> 1.1) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_rack_1.gemfile b/gemfiles/ruby_3.1_rack_1.gemfile index 6d021931b7c..19521895ce3 100644 --- a/gemfiles/ruby_3.1_rack_1.gemfile +++ b/gemfiles/ruby_3.1_rack_1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_rack_1.gemfile.lock b/gemfiles/ruby_3.1_rack_1.gemfile.lock index 5d6dcaefab0..22dd6fc5d60 100644 --- a/gemfiles/ruby_3.1_rack_1.gemfile.lock +++ b/gemfiles/ruby_3.1_rack_1.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -144,7 +143,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -154,7 +152,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -188,7 +185,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_rack_2.gemfile b/gemfiles/ruby_3.1_rack_2.gemfile index 9f6ef8ad7e5..0f60fe70bf9 100644 --- a/gemfiles/ruby_3.1_rack_2.gemfile +++ b/gemfiles/ruby_3.1_rack_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_rack_2.gemfile.lock b/gemfiles/ruby_3.1_rack_2.gemfile.lock index cb7a4db8f37..627515e4c2d 100644 --- a/gemfiles/ruby_3.1_rack_2.gemfile.lock +++ b/gemfiles/ruby_3.1_rack_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -144,7 +143,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -154,7 +152,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -188,7 +185,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_rack_3.gemfile b/gemfiles/ruby_3.1_rack_3.gemfile index 7bd3ca8f3a3..51e066f779f 100644 --- a/gemfiles/ruby_3.1_rack_3.gemfile +++ b/gemfiles/ruby_3.1_rack_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_rack_3.gemfile.lock b/gemfiles/ruby_3.1_rack_3.gemfile.lock index 0663da5ef33..b75aa38b82f 100644 --- a/gemfiles/ruby_3.1_rack_3.gemfile.lock +++ b/gemfiles/ruby_3.1_rack_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -144,7 +143,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -154,7 +152,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -188,7 +185,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_rack_latest.gemfile b/gemfiles/ruby_3.1_rack_latest.gemfile new file mode 100644 index 00000000000..6117465290b --- /dev/null +++ b/gemfiles/ruby_3.1_rack_latest.gemfile @@ -0,0 +1,49 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rack" +gem "rack-contrib" +gem "rack-test" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_rack_latest.gemfile.lock b/gemfiles/ruby_3.1_rack_latest.gemfile.lock new file mode 100644 index 00000000000..c9de3f4a846 --- /dev/null +++ b/gemfiles/ruby_3.1_rack_latest.gemfile.lock @@ -0,0 +1,192 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.2) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.5-aarch64-linux) + google-protobuf (3.25.5-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.8) + rack-contrib (2.5.0) + rack (< 4) + rack-test (2.1.0) + rack (>= 1.3) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.2) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rack + rack-contrib + rack-test + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_rails61_mysql2.gemfile b/gemfiles/ruby_3.1_rails61_mysql2.gemfile index 13a696031a9..6ad734fe1f4 100644 --- a/gemfiles/ruby_3.1_rails61_mysql2.gemfile +++ b/gemfiles/ruby_3.1_rails61_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_rails61_mysql2.gemfile.lock b/gemfiles/ruby_3.1_rails61_mysql2.gemfile.lock index e755315b914..9726609b60d 100644 --- a/gemfiles/ruby_3.1_rails61_mysql2.gemfile.lock +++ b/gemfiles/ruby_3.1_rails61_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -279,8 +279,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -291,7 +289,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -327,7 +324,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_rails61_postgres.gemfile b/gemfiles/ruby_3.1_rails61_postgres.gemfile index 80964fa587d..6b8d28faa74 100644 --- a/gemfiles/ruby_3.1_rails61_postgres.gemfile +++ b/gemfiles/ruby_3.1_rails61_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_rails61_postgres.gemfile.lock b/gemfiles/ruby_3.1_rails61_postgres.gemfile.lock index 2096f4beb5d..089fd05a2f0 100644 --- a/gemfiles/ruby_3.1_rails61_postgres.gemfile.lock +++ b/gemfiles/ruby_3.1_rails61_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -279,8 +279,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -291,7 +289,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -327,7 +324,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_rails61_postgres_redis.gemfile b/gemfiles/ruby_3.1_rails61_postgres_redis.gemfile index 6c95ae85487..010b0a44940 100644 --- a/gemfiles/ruby_3.1_rails61_postgres_redis.gemfile +++ b/gemfiles/ruby_3.1_rails61_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_rails61_postgres_redis.gemfile.lock b/gemfiles/ruby_3.1_rails61_postgres_redis.gemfile.lock index bf94e059449..988fff3bf4c 100644 --- a/gemfiles/ruby_3.1_rails61_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_3.1_rails61_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -280,8 +280,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -292,7 +290,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -329,7 +326,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_rails61_postgres_sidekiq.gemfile b/gemfiles/ruby_3.1_rails61_postgres_sidekiq.gemfile index 295ba9e809b..2b3a1555ce9 100644 --- a/gemfiles/ruby_3.1_rails61_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_3.1_rails61_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_rails61_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_3.1_rails61_postgres_sidekiq.gemfile.lock index 197254e251a..a464084449e 100644 --- a/gemfiles/ruby_3.1_rails61_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_3.1_rails61_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -99,8 +99,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -118,8 +118,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -293,8 +293,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -305,7 +303,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -343,7 +340,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_rails61_semantic_logger.gemfile b/gemfiles/ruby_3.1_rails61_semantic_logger.gemfile index fc89ffd7935..f641013b68b 100644 --- a/gemfiles/ruby_3.1_rails61_semantic_logger.gemfile +++ b/gemfiles/ruby_3.1_rails61_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_rails61_semantic_logger.gemfile.lock b/gemfiles/ruby_3.1_rails61_semantic_logger.gemfile.lock index 0022753106e..61a617b81bd 100644 --- a/gemfiles/ruby_3.1_rails61_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_3.1_rails61_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -278,8 +278,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -290,7 +288,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -326,7 +323,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_rails61_trilogy.gemfile b/gemfiles/ruby_3.1_rails61_trilogy.gemfile index eebc430527a..b71519bc3cb 100644 --- a/gemfiles/ruby_3.1_rails61_trilogy.gemfile +++ b/gemfiles/ruby_3.1_rails61_trilogy.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_rails61_trilogy.gemfile.lock b/gemfiles/ruby_3.1_rails61_trilogy.gemfile.lock index 3c37aab2159..f3017befd8c 100644 --- a/gemfiles/ruby_3.1_rails61_trilogy.gemfile.lock +++ b/gemfiles/ruby_3.1_rails61_trilogy.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -102,8 +102,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.4) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -121,8 +121,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -287,7 +287,6 @@ GEM websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.34) zeitwerk (2.6.12) PLATFORMS @@ -299,7 +298,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -335,7 +333,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_rails7.gemfile b/gemfiles/ruby_3.1_rails7.gemfile new file mode 100644 index 00000000000..ea6009c3f4f --- /dev/null +++ b/gemfiles/ruby_3.1_rails7.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.0.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_rails7.gemfile.lock b/gemfiles/ruby_3.1_rails7.gemfile.lock new file mode 100644 index 00000000000..3c2ba1ec336 --- /dev/null +++ b/gemfiles/ruby_3.1_rails7.gemfile.lock @@ -0,0 +1,323 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.8.4) + actionpack (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.0) + actionpack (7.0.8.4) + actionview (= 7.0.8.4) + activesupport (= 7.0.8.4) + rack (~> 2.0, >= 2.2.4) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.8.4) + actionpack (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.8.4) + activesupport (= 7.0.8.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.3.6) + activemodel (7.0.8.4) + activesupport (= 7.0.8.4) + activerecord (7.0.8.4) + activemodel (= 7.0.8.4) + activesupport (= 7.0.8.4) + activestorage (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activesupport (= 7.0.8.4) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.8.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (7.0.8.4) + actioncable (= 7.0.8.4) + actionmailbox (= 7.0.8.4) + actionmailer (= 7.0.8.4) + actionpack (= 7.0.8.4) + actiontext (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activemodel (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + bundler (>= 1.15.0) + railties (= 7.0.8.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + method_source + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rails (~> 7.0.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_rails71.gemfile b/gemfiles/ruby_3.1_rails71.gemfile new file mode 100644 index 00000000000..8712774497c --- /dev/null +++ b/gemfiles/ruby_3.1_rails71.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.1.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_rails71.gemfile.lock b/gemfiles/ruby_3.1_rails71.gemfile.lock new file mode 100644 index 00000000000..56c56e178d1 --- /dev/null +++ b/gemfiles/ruby_3.1_rails71.gemfile.lock @@ -0,0 +1,353 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + zeitwerk (~> 2.6) + actionmailbox (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.1.3.4) + actionpack (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.2) + actionpack (7.1.3.4) + actionview (= 7.1.3.4) + activesupport (= 7.1.3.4) + nokogiri (>= 1.8.5) + racc + rack (>= 2.2.4) + rack-session (>= 1.0.1) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + actiontext (7.1.3.4) + actionpack (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.1.3.4) + activesupport (= 7.1.3.4) + builder (~> 3.1) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activejob (7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.3.6) + activemodel (7.1.3.4) + activesupport (= 7.1.3.4) + activerecord (7.1.3.4) + activemodel (= 7.1.3.4) + activesupport (= 7.1.3.4) + timeout (>= 0.4.0) + activestorage (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activesupport (= 7.1.3.4) + marcel (~> 1.0) + activesupport (7.1.3.4) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + drb (2.2.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + io-console (0.7.2) + irb (1.14.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + psych (5.1.2) + stringio + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.7) + rack-session (2.0.0) + rack (>= 3.0.0) + rack-test (2.1.0) + rack (>= 1.3) + rackup (2.1.0) + rack (>= 3) + webrick (~> 1.8) + rails (7.1.3.4) + actioncable (= 7.1.3.4) + actionmailbox (= 7.1.3.4) + actionmailer (= 7.1.3.4) + actionpack (= 7.1.3.4) + actiontext (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activemodel (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + bundler (>= 1.15.0) + railties (= 7.1.3.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + irb + rackup (>= 1.0.0) + rake (>= 12.2) + thor (~> 1.0, >= 1.2.2) + zeitwerk (~> 2.6) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rdoc (6.7.0) + psych (>= 4.0.0) + regexp_parser (2.9.2) + reline (0.5.9) + io-console (~> 0.5) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stringio (3.1.1) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rails (~> 7.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_redis_3.gemfile b/gemfiles/ruby_3.1_redis_3.gemfile index c674a2cb945..3da684952b1 100644 --- a/gemfiles/ruby_3.1_redis_3.gemfile +++ b/gemfiles/ruby_3.1_redis_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_redis_3.gemfile.lock b/gemfiles/ruby_3.1_redis_3.gemfile.lock index a4c5feb1876..b8e74ef1dc7 100644 --- a/gemfiles/ruby_3.1_redis_3.gemfile.lock +++ b/gemfiles/ruby_3.1_redis_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -138,8 +137,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -149,7 +146,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -181,7 +177,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_redis_4.gemfile b/gemfiles/ruby_3.1_redis_4.gemfile index a7f6edf87ac..a474dacc352 100644 --- a/gemfiles/ruby_3.1_redis_4.gemfile +++ b/gemfiles/ruby_3.1_redis_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_redis_4.gemfile.lock b/gemfiles/ruby_3.1_redis_4.gemfile.lock index 57a47765e12..ccae68e5148 100644 --- a/gemfiles/ruby_3.1_redis_4.gemfile.lock +++ b/gemfiles/ruby_3.1_redis_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -138,8 +137,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -149,7 +146,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -181,7 +177,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_redis_5.gemfile b/gemfiles/ruby_3.1_redis_5.gemfile index f8ff97eff06..0bec971995a 100644 --- a/gemfiles/ruby_3.1_redis_5.gemfile +++ b/gemfiles/ruby_3.1_redis_5.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_redis_5.gemfile.lock b/gemfiles/ruby_3.1_redis_5.gemfile.lock index c60e23ef230..1ca63a362a9 100644 --- a/gemfiles/ruby_3.1_redis_5.gemfile.lock +++ b/gemfiles/ruby_3.1_redis_5.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,7 +31,6 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -39,7 +38,7 @@ GEM connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -52,8 +51,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -142,8 +141,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -153,7 +150,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -185,7 +181,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_relational_db.gemfile b/gemfiles/ruby_3.1_relational_db.gemfile index a8fbee4f8a4..cf821089855 100644 --- a/gemfiles/ruby_3.1_relational_db.gemfile +++ b/gemfiles/ruby_3.1_relational_db.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -43,7 +41,7 @@ gem "makara", ">= 0.6.0.pre" gem "mysql2", ">= 0.5.3", platform: :ruby gem "pg", platform: :ruby gem "sqlite3", ">= 1.4.2", platform: :ruby -gem "sequel", "~> 5.54.0" +gem "sequel" gem "trilogy" group :check do diff --git a/gemfiles/ruby_3.1_relational_db.gemfile.lock b/gemfiles/ruby_3.1_relational_db.gemfile.lock index a0e5aed80aa..8ea15d95ef1 100644 --- a/gemfiles/ruby_3.1_relational_db.gemfile.lock +++ b/gemfiles/ruby_3.1_relational_db.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -39,16 +39,16 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) + bigdecimal (3.1.8) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) delayed_job (4.1.11) activesupport (>= 3.0, < 8.0) @@ -68,8 +68,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -147,7 +147,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) - sequel (5.54.0) + sequel (5.83.1) + bigdecimal simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -167,7 +168,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -178,7 +178,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -209,7 +208,7 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) - sequel (~> 5.54.0) + sequel simplecov! simplecov-cobertura (~> 2.1.0) sqlite3 (>= 1.4.2) @@ -217,7 +216,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_resque2_redis3.gemfile b/gemfiles/ruby_3.1_resque2_redis3.gemfile index 74d311406e0..24693a3168e 100644 --- a/gemfiles/ruby_3.1_resque2_redis3.gemfile +++ b/gemfiles/ruby_3.1_resque2_redis3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_resque2_redis3.gemfile.lock b/gemfiles/ruby_3.1_resque2_redis3.gemfile.lock index bcfecee22aa..9d9bcffc037 100644 --- a/gemfiles/ruby_3.1_resque2_redis3.gemfile.lock +++ b/gemfiles/ruby_3.1_resque2_redis3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -159,8 +158,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -170,7 +167,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -203,7 +199,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_resque2_redis4.gemfile b/gemfiles/ruby_3.1_resque2_redis4.gemfile index 8d8fd15a452..f5c4e5fe345 100644 --- a/gemfiles/ruby_3.1_resque2_redis4.gemfile +++ b/gemfiles/ruby_3.1_resque2_redis4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_resque2_redis4.gemfile.lock b/gemfiles/ruby_3.1_resque2_redis4.gemfile.lock index 7d8f3a12841..6f7e6bb79e7 100644 --- a/gemfiles/ruby_3.1_resque2_redis4.gemfile.lock +++ b/gemfiles/ruby_3.1_resque2_redis4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,7 +31,6 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -39,7 +38,7 @@ GEM connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -52,8 +51,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -163,8 +162,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -174,7 +171,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -207,7 +203,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_sinatra_2.gemfile b/gemfiles/ruby_3.1_sinatra_2.gemfile index 9e3d510ba67..94851080db3 100644 --- a/gemfiles/ruby_3.1_sinatra_2.gemfile +++ b/gemfiles/ruby_3.1_sinatra_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_sinatra_2.gemfile.lock b/gemfiles/ruby_3.1_sinatra_2.gemfile.lock index 2558de38638..2fa72cfeed8 100644 --- a/gemfiles/ruby_3.1_sinatra_2.gemfile.lock +++ b/gemfiles/ruby_3.1_sinatra_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,7 +33,6 @@ GEM bigdecimal (3.1.7) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -41,7 +40,7 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -54,8 +53,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -159,7 +158,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -169,7 +167,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -203,7 +200,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_sinatra_3.gemfile b/gemfiles/ruby_3.1_sinatra_3.gemfile index 72f2fb7b783..8a192d712d0 100644 --- a/gemfiles/ruby_3.1_sinatra_3.gemfile +++ b/gemfiles/ruby_3.1_sinatra_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_sinatra_3.gemfile.lock b/gemfiles/ruby_3.1_sinatra_3.gemfile.lock index 67509ebe29f..632789c92e6 100644 --- a/gemfiles/ruby_3.1_sinatra_3.gemfile.lock +++ b/gemfiles/ruby_3.1_sinatra_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,7 +34,6 @@ GEM bigdecimal (3.1.7) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -42,7 +41,7 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -55,8 +54,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -161,7 +160,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -171,7 +169,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -205,7 +202,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_sinatra_4.gemfile b/gemfiles/ruby_3.1_sinatra_4.gemfile index 28f6e84f486..b14baea0446 100644 --- a/gemfiles/ruby_3.1_sinatra_4.gemfile +++ b/gemfiles/ruby_3.1_sinatra_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -28,7 +27,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.1_sinatra_4.gemfile.lock b/gemfiles/ruby_3.1_sinatra_4.gemfile.lock index 6164b99c605..b9fc0ea75d3 100644 --- a/gemfiles/ruby_3.1_sinatra_4.gemfile.lock +++ b/gemfiles/ruby_3.1_sinatra_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,7 +34,6 @@ GEM bigdecimal (3.1.7) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) byebug (11.1.3) climate_control (0.2.0) coderay (1.1.3) @@ -42,7 +41,7 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -55,8 +54,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -164,7 +163,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -174,7 +172,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -208,7 +205,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.1_stripe_10.gemfile b/gemfiles/ruby_3.1_stripe_10.gemfile new file mode 100644 index 00000000000..5ad1664f174 --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_10.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 10" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_stripe_10.gemfile.lock b/gemfiles/ruby_3.1_stripe_10.gemfile.lock new file mode 100644 index 00000000000..69efbbfa1c4 --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_10.gemfile.lock @@ -0,0 +1,188 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (10.15.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 10) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_stripe_11.gemfile b/gemfiles/ruby_3.1_stripe_11.gemfile new file mode 100644 index 00000000000..580546c4c2f --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_11.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_stripe_11.gemfile.lock b/gemfiles/ruby_3.1_stripe_11.gemfile.lock new file mode 100644 index 00000000000..07b76b832f0 --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_11.gemfile.lock @@ -0,0 +1,188 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (11.7.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 11) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_stripe_12.gemfile b/gemfiles/ruby_3.1_stripe_12.gemfile new file mode 100644 index 00000000000..97595d415fc --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_12.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 12" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_stripe_12.gemfile.lock b/gemfiles/ruby_3.1_stripe_12.gemfile.lock new file mode 100644 index 00000000000..3912a938ee9 --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_12.gemfile.lock @@ -0,0 +1,188 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (12.5.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 12) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_stripe_7.gemfile b/gemfiles/ruby_3.1_stripe_7.gemfile new file mode 100644 index 00000000000..52df754dfb0 --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_7.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 7" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_stripe_7.gemfile.lock b/gemfiles/ruby_3.1_stripe_7.gemfile.lock new file mode 100644 index 00000000000..6650545f3c2 --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_7.gemfile.lock @@ -0,0 +1,188 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (7.1.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 7) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_stripe_8.gemfile b/gemfiles/ruby_3.1_stripe_8.gemfile new file mode 100644 index 00000000000..9aff647d596 --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_8.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 8" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_stripe_8.gemfile.lock b/gemfiles/ruby_3.1_stripe_8.gemfile.lock new file mode 100644 index 00000000000..f34c9a9b964 --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_8.gemfile.lock @@ -0,0 +1,188 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (8.7.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 8) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_stripe_9.gemfile b/gemfiles/ruby_3.1_stripe_9.gemfile new file mode 100644 index 00000000000..3675b1e83f3 --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_9.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 9" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_stripe_9.gemfile.lock b/gemfiles/ruby_3.1_stripe_9.gemfile.lock new file mode 100644 index 00000000000..83fb31af357 --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_9.gemfile.lock @@ -0,0 +1,188 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (9.4.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 9) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_stripe_latest.gemfile b/gemfiles/ruby_3.1_stripe_latest.gemfile new file mode 100644 index 00000000000..3128b4036e6 --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_latest.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_stripe_latest.gemfile.lock b/gemfiles/ruby_3.1_stripe_latest.gemfile.lock new file mode 100644 index 00000000000..5e9e982ed35 --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_latest.gemfile.lock @@ -0,0 +1,186 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (13.0.1) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_stripe_min.gemfile b/gemfiles/ruby_3.1_stripe_min.gemfile new file mode 100644 index 00000000000..00957d50dbf --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_min.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "= 5.15.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_stripe_min.gemfile.lock b/gemfiles/ruby_3.1_stripe_min.gemfile.lock new file mode 100644 index 00000000000..2c917b22dd7 --- /dev/null +++ b/gemfiles/ruby_3.1_stripe_min.gemfile.lock @@ -0,0 +1,186 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.5-aarch64-linux) + google-protobuf (3.25.5-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (5.15.0) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (= 5.15.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_activesupport.gemfile b/gemfiles/ruby_3.2_activesupport.gemfile index f754ab55dd0..d199dfe7905 100644 --- a/gemfiles/ruby_3.2_activesupport.gemfile +++ b/gemfiles/ruby_3.2_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_activesupport.gemfile.lock b/gemfiles/ruby_3.2_activesupport.gemfile.lock index 8d08df27b35..6033ad56bbe 100644 --- a/gemfiles/ruby_3.2_activesupport.gemfile.lock +++ b/gemfiles/ruby_3.2_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -65,7 +65,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest-crc (0.6.5) @@ -106,8 +106,8 @@ GEM addressable (>= 2.4) jsonapi-renderer (0.2.2) king_konf (1.0.1) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -242,7 +242,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) zeitwerk (2.6.11) PLATFORMS @@ -257,7 +256,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -291,7 +289,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_aws.gemfile b/gemfiles/ruby_3.2_aws.gemfile index 18a9d279ca2..4499f0460c4 100644 --- a/gemfiles/ruby_3.2_aws.gemfile +++ b/gemfiles/ruby_3.2_aws.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_aws.gemfile.lock b/gemfiles/ruby_3.2_aws.gemfile.lock index 6162035a981..0f6e4e6967a 100644 --- a/gemfiles/ruby_3.2_aws.gemfile.lock +++ b/gemfiles/ruby_3.2_aws.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -1452,13 +1452,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -1472,8 +1471,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -1561,7 +1560,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -1572,7 +1570,6 @@ DEPENDENCIES aws-sdk benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -1603,7 +1600,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_contrib.gemfile b/gemfiles/ruby_3.2_contrib.gemfile index e8f0476f4c4..52e865d20fe 100644 --- a/gemfiles/ruby_3.2_contrib.gemfile +++ b/gemfiles/ruby_3.2_contrib.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_contrib.gemfile.lock b/gemfiles/ruby_3.2_contrib.gemfile.lock index 371d2d869e0..b44ca8f8d30 100644 --- a/gemfiles/ruby_3.2_contrib.gemfile.lock +++ b/gemfiles/ruby_3.2_contrib.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,7 +33,6 @@ GEM binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) bson (4.15.0) - builder (3.2.4) bunny (2.20.3) amq-protocol (~> 2.3, >= 2.3.1) sorted_set (~> 1, >= 1.0.2) @@ -44,7 +43,7 @@ GEM crack (0.4.5) rexml dalli (3.2.4) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -65,8 +64,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -202,8 +201,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -213,7 +210,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (>= 3.0.0) @@ -254,7 +250,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_contrib_old.gemfile b/gemfiles/ruby_3.2_contrib_old.gemfile index e3ff7f63dd2..24321ec9395 100644 --- a/gemfiles/ruby_3.2_contrib_old.gemfile +++ b/gemfiles/ruby_3.2_contrib_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_contrib_old.gemfile.lock b/gemfiles/ruby_3.2_contrib_old.gemfile.lock index 895a447c410..e96a0623d1c 100644 --- a/gemfiles/ruby_3.2_contrib_old.gemfile.lock +++ b/gemfiles/ruby_3.2_contrib_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,7 +34,6 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) @@ -42,7 +41,7 @@ GEM rexml daemons (1.4.1) dalli (2.7.11) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -61,8 +60,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -186,8 +185,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -197,7 +194,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (< 3.0.0) @@ -230,7 +226,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_core_old.gemfile b/gemfiles/ruby_3.2_core_old.gemfile index 4f74cbee678..b0e19229378 100644 --- a/gemfiles/ruby_3.2_core_old.gemfile +++ b/gemfiles/ruby_3.2_core_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_core_old.gemfile.lock b/gemfiles/ruby_3.2_core_old.gemfile.lock index 80cffe4d34e..f967897a787 100644 --- a/gemfiles/ruby_3.2_core_old.gemfile.lock +++ b/gemfiles/ruby_3.2_core_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -50,8 +49,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -133,8 +132,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -144,7 +141,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -174,7 +170,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_elasticsearch_7.gemfile b/gemfiles/ruby_3.2_elasticsearch_7.gemfile index 0a83db4600b..17ab53fbb6b 100644 --- a/gemfiles/ruby_3.2_elasticsearch_7.gemfile +++ b/gemfiles/ruby_3.2_elasticsearch_7.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_elasticsearch_7.gemfile.lock b/gemfiles/ruby_3.2_elasticsearch_7.gemfile.lock index 5cfa6971152..a310cdc1b4a 100644 --- a/gemfiles/ruby_3.2_elasticsearch_7.gemfile.lock +++ b/gemfiles/ruby_3.2_elasticsearch_7.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -32,13 +32,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -82,8 +81,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -171,7 +170,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -181,7 +179,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -212,7 +209,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_elasticsearch_8.gemfile b/gemfiles/ruby_3.2_elasticsearch_8.gemfile index c3569fd1935..587bb77e7fb 100644 --- a/gemfiles/ruby_3.2_elasticsearch_8.gemfile +++ b/gemfiles/ruby_3.2_elasticsearch_8.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_elasticsearch_8.gemfile.lock b/gemfiles/ruby_3.2_elasticsearch_8.gemfile.lock index 9b7fcf3386d..7931ec3cccd 100644 --- a/gemfiles/ruby_3.2_elasticsearch_8.gemfile.lock +++ b/gemfiles/ruby_3.2_elasticsearch_8.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,13 +33,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -65,8 +64,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -153,7 +152,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -163,7 +161,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -194,7 +191,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_elasticsearch_latest.gemfile b/gemfiles/ruby_3.2_elasticsearch_latest.gemfile new file mode 100644 index 00000000000..a18e6d9735a --- /dev/null +++ b/gemfiles/ruby_3.2_elasticsearch_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "elasticsearch" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_elasticsearch_latest.gemfile.lock b/gemfiles/ruby_3.2_elasticsearch_latest.gemfile.lock new file mode 100644 index 00000000000..9fdb481bbb0 --- /dev/null +++ b/gemfiles/ruby_3.2_elasticsearch_latest.gemfile.lock @@ -0,0 +1,199 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + elastic-transport (8.3.5) + faraday (< 3) + multi_json + elasticsearch (8.15.0) + elastic-transport (~> 8.3) + elasticsearch-api (= 8.15.0) + elasticsearch-api (8.15.0) + multi_json + extlz4 (0.3.4) + faraday (2.12.0) + faraday-net_http (>= 2.0, < 3.4) + json + logger + faraday-net_http (3.3.0) + net-http + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + logger (1.6.1) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + multi_json (1.15.0) + net-http (0.4.1) + uri + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + uri (0.13.1) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + elasticsearch + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_graphql_1.13.gemfile b/gemfiles/ruby_3.2_graphql_1.13.gemfile index 5dab478d1ae..a04f64144c5 100644 --- a/gemfiles/ruby_3.2_graphql_1.13.gemfile +++ b/gemfiles/ruby_3.2_graphql_1.13.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,7 +33,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 1.13.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.2_graphql_1.13.gemfile.lock b/gemfiles/ruby_3.2_graphql_1.13.gemfile.lock index b3ff0641492..7b7479a54a3 100644 --- a/gemfiles/ruby_3.2_graphql_1.13.gemfile.lock +++ b/gemfiles/ruby_3.2_graphql_1.13.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (>= 2.7.1) + actionmailer (6.1.7.6) + actionpack (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.6) + actionview (= 6.1.7.6) + activesupport (= 6.1.7.6) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.6) + actionpack (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + nokogiri (>= 1.8.5) + actionview (6.1.7.6) + activesupport (= 6.1.7.6) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.6) + activesupport (= 6.1.7.6) + globalid (>= 0.3.6) + activemodel (6.1.7.6) + activesupport (= 6.1.7.6) + activerecord (6.1.7.6) + activemodel (= 6.1.7.6) + activesupport (= 6.1.7.6) + activestorage (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activesupport (= 6.1.7.6) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.6) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -38,29 +97,66 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.12.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (1.13.21) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.2) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.22.3) msgpack (1.7.2) + net-imap (0.4.5) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.4.0) + net-protocol + nio4r (2.6.1) + nokogiri (1.15.5-aarch64-linux) + racc (~> 1.4) + nokogiri (1.15.5-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -75,11 +171,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.6) + actioncable (= 6.1.7.6) + actionmailbox (= 6.1.7.6) + actionmailer (= 6.1.7.6) + actionpack (= 6.1.7.6) + actiontext (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activemodel (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + bundler (>= 1.15.0) + railties (= 6.1.7.6) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.5.1) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -129,8 +258,18 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.2) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -138,7 +277,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.12) PLATFORMS aarch64-linux @@ -148,7 +290,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -158,11 +299,13 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 1.13.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -176,10 +319,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_graphql_2.0.gemfile b/gemfiles/ruby_3.2_graphql_2.0.gemfile index 8307e82e015..4260bea7abf 100644 --- a/gemfiles/ruby_3.2_graphql_2.0.gemfile +++ b/gemfiles/ruby_3.2_graphql_2.0.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,7 +33,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.0.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.2_graphql_2.0.gemfile.lock b/gemfiles/ruby_3.2_graphql_2.0.gemfile.lock index 81a6d278ff0..e21755e4561 100644 --- a/gemfiles/ruby_3.2_graphql_2.0.gemfile.lock +++ b/gemfiles/ruby_3.2_graphql_2.0.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (>= 2.7.1) + actionmailer (6.1.7.6) + actionpack (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.6) + actionview (= 6.1.7.6) + activesupport (= 6.1.7.6) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.6) + actionpack (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + nokogiri (>= 1.8.5) + actionview (6.1.7.6) + activesupport (= 6.1.7.6) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.6) + activesupport (= 6.1.7.6) + globalid (>= 0.3.6) + activemodel (6.1.7.6) + activesupport (= 6.1.7.6) + activerecord (6.1.7.6) + activemodel (= 6.1.7.6) + activesupport (= 6.1.7.6) + activestorage (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activesupport (= 6.1.7.6) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.6) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -38,29 +97,66 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.12.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (2.0.28) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.2) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.22.3) msgpack (1.7.2) + net-imap (0.4.5) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.4.0) + net-protocol + nio4r (2.6.1) + nokogiri (1.15.5-aarch64-linux) + racc (~> 1.4) + nokogiri (1.15.5-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -75,11 +171,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.6) + actioncable (= 6.1.7.6) + actionmailbox (= 6.1.7.6) + actionmailer (= 6.1.7.6) + actionpack (= 6.1.7.6) + actiontext (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activemodel (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + bundler (>= 1.15.0) + railties (= 6.1.7.6) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.5.1) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -129,8 +258,18 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.2) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -138,7 +277,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.12) PLATFORMS aarch64-linux @@ -148,7 +290,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -158,11 +299,13 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.0.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -176,10 +319,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_graphql_2.1.gemfile b/gemfiles/ruby_3.2_graphql_2.1.gemfile index 7c2295e3cc3..a2999be5818 100644 --- a/gemfiles/ruby_3.2_graphql_2.1.gemfile +++ b/gemfiles/ruby_3.2_graphql_2.1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,7 +33,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.1.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.2_graphql_2.1.gemfile.lock b/gemfiles/ruby_3.2_graphql_2.1.gemfile.lock index 9b2bc2c94c2..199a2ee63f0 100644 --- a/gemfiles/ruby_3.2_graphql_2.1.gemfile.lock +++ b/gemfiles/ruby_3.2_graphql_2.1.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (>= 2.7.1) + actionmailer (6.1.7.6) + actionpack (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.6) + actionview (= 6.1.7.6) + activesupport (= 6.1.7.6) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.6) + actionpack (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + nokogiri (>= 1.8.5) + actionview (6.1.7.6) + activesupport (= 6.1.7.6) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.6) + activesupport (= 6.1.7.6) + globalid (>= 0.3.6) + activemodel (6.1.7.6) + activesupport (= 6.1.7.6) + activerecord (6.1.7.6) + activemodel (= 6.1.7.6) + activesupport (= 6.1.7.6) + activestorage (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activesupport (= 6.1.7.6) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.6) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -38,30 +97,67 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.12.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (2.1.11) racc (~> 1.4) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.2) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.22.3) msgpack (1.7.2) + net-imap (0.4.5) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.4.0) + net-protocol + nio4r (2.6.1) + nokogiri (1.15.5-aarch64-linux) + racc (~> 1.4) + nokogiri (1.15.5-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -76,11 +172,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.6) + actioncable (= 6.1.7.6) + actionmailbox (= 6.1.7.6) + actionmailer (= 6.1.7.6) + actionpack (= 6.1.7.6) + actiontext (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activemodel (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + bundler (>= 1.15.0) + railties (= 6.1.7.6) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.5.1) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -130,8 +259,18 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.2) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -139,7 +278,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.12) PLATFORMS aarch64-linux @@ -149,7 +291,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -159,11 +300,13 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.1.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -177,10 +320,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_graphql_2.2.gemfile b/gemfiles/ruby_3.2_graphql_2.2.gemfile index 8e7df05bcdb..6a47cf6e7d6 100644 --- a/gemfiles/ruby_3.2_graphql_2.2.gemfile +++ b/gemfiles/ruby_3.2_graphql_2.2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,7 +33,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.2.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.2_graphql_2.2.gemfile.lock b/gemfiles/ruby_3.2_graphql_2.2.gemfile.lock index 34bf01a83cd..4f0f30ed89a 100644 --- a/gemfiles/ruby_3.2_graphql_2.2.gemfile.lock +++ b/gemfiles/ruby_3.2_graphql_2.2.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (>= 2.7.1) + actionmailer (6.1.7.6) + actionpack (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.6) + actionview (= 6.1.7.6) + activesupport (= 6.1.7.6) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.6) + actionpack (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + nokogiri (>= 1.8.5) + actionview (6.1.7.6) + activesupport (= 6.1.7.6) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.6) + activesupport (= 6.1.7.6) + globalid (>= 0.3.6) + activemodel (6.1.7.6) + activesupport (= 6.1.7.6) + activerecord (6.1.7.6) + activemodel (= 6.1.7.6) + activesupport (= 6.1.7.6) + activestorage (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activesupport (= 6.1.7.6) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.6) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -38,30 +97,67 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.12.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) graphql (2.2.6) racc (~> 1.4) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.2) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.22.3) msgpack (1.7.2) + net-imap (0.4.5) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.4.0) + net-protocol + nio4r (2.6.1) + nokogiri (1.15.5-aarch64-linux) + racc (~> 1.4) + nokogiri (1.15.5-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -76,11 +172,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.6) + actioncable (= 6.1.7.6) + actionmailbox (= 6.1.7.6) + actionmailer (= 6.1.7.6) + actionpack (= 6.1.7.6) + actiontext (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activemodel (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + bundler (>= 1.15.0) + railties (= 6.1.7.6) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.5.1) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -130,8 +259,18 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.2) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -139,7 +278,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.12) PLATFORMS aarch64-linux @@ -149,7 +291,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -159,11 +300,13 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.2.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -177,10 +320,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_graphql_2.3.gemfile b/gemfiles/ruby_3.2_graphql_2.3.gemfile new file mode 100644 index 00000000000..e86241a6af5 --- /dev/null +++ b/gemfiles/ruby_3.2_graphql_2.3.gemfile @@ -0,0 +1,49 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" +gem "graphql", "~> 2.3.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_graphql_2.3.gemfile.lock b/gemfiles/ruby_3.2_graphql_2.3.gemfile.lock new file mode 100644 index 00000000000..ef6607dda50 --- /dev/null +++ b/gemfiles/ruby_3.2_graphql_2.3.gemfile.lock @@ -0,0 +1,333 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.3) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.3-aarch64-linux) + google-protobuf (3.25.3-x86_64-linux) + graphql (2.3.6) + base64 + hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.24.0) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.25.1) + parser (3.3.3.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.0) + racc (1.8.0) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + request_store (1.7.0) + rack (>= 1.4) + rexml (3.3.1) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + graphql (~> 2.3.0) + json-schema (< 3) + lograge (~> 0.11) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 6.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + sprockets (< 4) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_http.gemfile b/gemfiles/ruby_3.2_http.gemfile index 52eb5867ce9..8ff564a89c4 100644 --- a/gemfiles/ruby_3.2_http.gemfile +++ b/gemfiles/ruby_3.2_http.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -41,7 +39,6 @@ gem "faraday" gem "http" gem "httpclient" gem "rest-client" -gem "stripe" gem "typhoeus" group :check do diff --git a/gemfiles/ruby_3.2_http.gemfile.lock b/gemfiles/ruby_3.2_http.gemfile.lock index 71d8c949ebb..df69eb145ae 100644 --- a/gemfiles/ruby_3.2_http.gemfile.lock +++ b/gemfiles/ruby_3.2_http.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -72,8 +71,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -161,7 +160,6 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) - stripe (9.2.0) strscan (3.1.0) thor (1.2.2) typhoeus (1.4.0) @@ -176,7 +174,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -186,7 +183,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -219,12 +215,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) - stripe typhoeus warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_opensearch_2.gemfile b/gemfiles/ruby_3.2_opensearch_2.gemfile index ff64c088fee..97c7bb50b6f 100644 --- a/gemfiles/ruby_3.2_opensearch_2.gemfile +++ b/gemfiles/ruby_3.2_opensearch_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_opensearch_2.gemfile.lock b/gemfiles/ruby_3.2_opensearch_2.gemfile.lock index ef4f1f20f72..773095560ee 100644 --- a/gemfiles/ruby_3.2_opensearch_2.gemfile.lock +++ b/gemfiles/ruby_3.2_opensearch_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,13 +33,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -57,8 +56,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -153,7 +152,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -163,7 +161,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -194,7 +191,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_opensearch_3.gemfile b/gemfiles/ruby_3.2_opensearch_3.gemfile index 23a1083cb42..8d9d62f01d0 100644 --- a/gemfiles/ruby_3.2_opensearch_3.gemfile +++ b/gemfiles/ruby_3.2_opensearch_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_opensearch_3.gemfile.lock b/gemfiles/ruby_3.2_opensearch_3.gemfile.lock index 996bfa7335e..44df4495954 100644 --- a/gemfiles/ruby_3.2_opensearch_3.gemfile.lock +++ b/gemfiles/ruby_3.2_opensearch_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,13 +33,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -57,8 +56,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -148,7 +147,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -158,7 +156,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -189,7 +186,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_opensearch_latest.gemfile b/gemfiles/ruby_3.2_opensearch_latest.gemfile new file mode 100644 index 00000000000..1eb664e0fff --- /dev/null +++ b/gemfiles/ruby_3.2_opensearch_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "opensearch-ruby" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_opensearch_latest.gemfile.lock b/gemfiles/ruby_3.2_opensearch_latest.gemfile.lock new file mode 100644 index 00000000000..d6c18a2f672 --- /dev/null +++ b/gemfiles/ruby_3.2_opensearch_latest.gemfile.lock @@ -0,0 +1,194 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + faraday (2.12.0) + faraday-net_http (>= 2.0, < 3.4) + json + logger + faraday-net_http (3.3.0) + net-http + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + logger (1.6.1) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + multi_json (1.15.0) + net-http (0.4.1) + uri + opensearch-ruby (3.4.0) + faraday (>= 1.0, < 3) + multi_json (>= 1.0) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + uri (0.13.1) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opensearch-ruby + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_opentelemetry.gemfile b/gemfiles/ruby_3.2_opentelemetry.gemfile index a583eb93c65..17fe5120eed 100644 --- a/gemfiles/ruby_3.2_opentelemetry.gemfile +++ b/gemfiles/ruby_3.2_opentelemetry.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_opentelemetry.gemfile.lock b/gemfiles/ruby_3.2_opentelemetry.gemfile.lock index 3a8430cff19..5794e6e83d1 100644 --- a/gemfiles/ruby_3.2_opentelemetry.gemfile.lock +++ b/gemfiles/ruby_3.2_opentelemetry.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -50,8 +49,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -145,8 +144,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -156,7 +153,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -187,7 +183,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_opentelemetry_otlp.gemfile b/gemfiles/ruby_3.2_opentelemetry_otlp.gemfile new file mode 100644 index 00000000000..288ffc6f66b --- /dev/null +++ b/gemfiles/ruby_3.2_opentelemetry_otlp.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "opentelemetry-sdk", "~> 1.1" +gem "opentelemetry-exporter-otlp" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_opentelemetry_otlp.gemfile.lock b/gemfiles/ruby_3.2_opentelemetry_otlp.gemfile.lock new file mode 100644 index 00000000000..beb2996fa45 --- /dev/null +++ b/gemfiles/ruby_3.2_opentelemetry_otlp.gemfile.lock @@ -0,0 +1,202 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6) + binding_of_caller (1.0.0) + debug_inspector (>= 0.0.1) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.2.3) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.3-aarch64-linux) + google-protobuf (3.25.3-x86_64-linux) + googleapis-common-protos-types (1.13.0) + google-protobuf (~> 3.18) + hashdiff (1.1.0) + json (2.7.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.0.0) + msgpack (1.7.3) + opentelemetry-api (1.2.5) + opentelemetry-common (0.20.1) + opentelemetry-api (~> 1.0) + opentelemetry-exporter-otlp (0.26.3) + google-protobuf (~> 3.14) + googleapis-common-protos-types (~> 1.3) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.20) + opentelemetry-sdk (~> 1.2) + opentelemetry-semantic_conventions + opentelemetry-registry (0.3.0) + opentelemetry-api (~> 1.1) + opentelemetry-sdk (1.4.0) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.20) + opentelemetry-registry (~> 0.2) + opentelemetry-semantic_conventions + opentelemetry-semantic_conventions (1.10.0) + opentelemetry-api (~> 1.0) + os (1.1.4) + parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.0.4) + racc (1.7.3) + rainbow (3.1.1) + rake (13.1.0) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.0) + rexml (3.3.8) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.1) + parser (>= 3.3.0.4) + rubocop-capybara (2.20.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.20.2) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + thor (1.3.1) + unicode-display_width (2.5.0) + warning (1.3.0) + webmock (3.23.0) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opentelemetry-exporter-otlp + opentelemetry-sdk (~> 1.1) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_rack_1.gemfile b/gemfiles/ruby_3.2_rack_1.gemfile index fd6c53166c4..cb62d068d64 100644 --- a/gemfiles/ruby_3.2_rack_1.gemfile +++ b/gemfiles/ruby_3.2_rack_1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_rack_1.gemfile.lock b/gemfiles/ruby_3.2_rack_1.gemfile.lock index e36ffb088e3..ad879533fea 100644 --- a/gemfiles/ruby_3.2_rack_1.gemfile.lock +++ b/gemfiles/ruby_3.2_rack_1.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -50,8 +49,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -140,7 +139,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -150,7 +148,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -183,7 +180,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_rack_2.gemfile b/gemfiles/ruby_3.2_rack_2.gemfile index 0c011068361..da057e50c25 100644 --- a/gemfiles/ruby_3.2_rack_2.gemfile +++ b/gemfiles/ruby_3.2_rack_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_rack_2.gemfile.lock b/gemfiles/ruby_3.2_rack_2.gemfile.lock index b37a5457e86..d1cdf5e977d 100644 --- a/gemfiles/ruby_3.2_rack_2.gemfile.lock +++ b/gemfiles/ruby_3.2_rack_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -50,8 +49,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -140,7 +139,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -150,7 +148,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -183,7 +180,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_rack_3.gemfile b/gemfiles/ruby_3.2_rack_3.gemfile index 929ad3909ac..2d1be5f7909 100644 --- a/gemfiles/ruby_3.2_rack_3.gemfile +++ b/gemfiles/ruby_3.2_rack_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_rack_3.gemfile.lock b/gemfiles/ruby_3.2_rack_3.gemfile.lock index 78fd6eb4883..5ed0c87f83b 100644 --- a/gemfiles/ruby_3.2_rack_3.gemfile.lock +++ b/gemfiles/ruby_3.2_rack_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -50,8 +49,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -140,7 +139,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -150,7 +148,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -183,7 +180,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_rack_latest.gemfile b/gemfiles/ruby_3.2_rack_latest.gemfile new file mode 100644 index 00000000000..e8a313cd70f --- /dev/null +++ b/gemfiles/ruby_3.2_rack_latest.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rack" +gem "rack-contrib" +gem "rack-test" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_rack_latest.gemfile.lock b/gemfiles/ruby_3.2_rack_latest.gemfile.lock new file mode 100644 index 00000000000..c8bf9df42d1 --- /dev/null +++ b/gemfiles/ruby_3.2_rack_latest.gemfile.lock @@ -0,0 +1,187 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.2) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.5-aarch64-linux) + google-protobuf (3.25.5-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.8) + rack-contrib (2.5.0) + rack (< 4) + rack-test (2.1.0) + rack (>= 1.3) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.2) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rack + rack-contrib + rack-test + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_rails61_mysql2.gemfile b/gemfiles/ruby_3.2_rails61_mysql2.gemfile index 398a657e92d..04cb6694650 100644 --- a/gemfiles/ruby_3.2_rails61_mysql2.gemfile +++ b/gemfiles/ruby_3.2_rails61_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_rails61_mysql2.gemfile.lock b/gemfiles/ruby_3.2_rails61_mysql2.gemfile.lock index 035e6b6b941..10beb98ff5a 100644 --- a/gemfiles/ruby_3.2_rails61_mysql2.gemfile.lock +++ b/gemfiles/ruby_3.2_rails61_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -97,8 +97,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -116,8 +116,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -275,8 +275,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -287,7 +285,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -322,7 +319,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_rails61_postgres.gemfile b/gemfiles/ruby_3.2_rails61_postgres.gemfile index 08b13d77697..609da1f3595 100644 --- a/gemfiles/ruby_3.2_rails61_postgres.gemfile +++ b/gemfiles/ruby_3.2_rails61_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_rails61_postgres.gemfile.lock b/gemfiles/ruby_3.2_rails61_postgres.gemfile.lock index 1df8b5390da..fb42f590bfa 100644 --- a/gemfiles/ruby_3.2_rails61_postgres.gemfile.lock +++ b/gemfiles/ruby_3.2_rails61_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -97,8 +97,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -116,8 +116,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -275,8 +275,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -287,7 +285,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -322,7 +319,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_rails61_postgres_redis.gemfile b/gemfiles/ruby_3.2_rails61_postgres_redis.gemfile index ad1938bbe3a..dde99290665 100644 --- a/gemfiles/ruby_3.2_rails61_postgres_redis.gemfile +++ b/gemfiles/ruby_3.2_rails61_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_rails61_postgres_redis.gemfile.lock b/gemfiles/ruby_3.2_rails61_postgres_redis.gemfile.lock index 9b042db9829..a52448004f7 100644 --- a/gemfiles/ruby_3.2_rails61_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_3.2_rails61_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -97,8 +97,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -116,8 +116,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -276,8 +276,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -288,7 +286,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -324,7 +321,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_rails61_postgres_sidekiq.gemfile b/gemfiles/ruby_3.2_rails61_postgres_sidekiq.gemfile index 2204a5ee12c..695aaf7c342 100644 --- a/gemfiles/ruby_3.2_rails61_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_3.2_rails61_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_rails61_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_3.2_rails61_postgres_sidekiq.gemfile.lock index 18822c5011f..db0ca79356f 100644 --- a/gemfiles/ruby_3.2_rails61_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_3.2_rails61_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -117,8 +117,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -289,8 +289,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -301,7 +299,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -338,7 +335,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_rails61_semantic_logger.gemfile b/gemfiles/ruby_3.2_rails61_semantic_logger.gemfile index eb5c71e6cc1..28a4d4adc26 100644 --- a/gemfiles/ruby_3.2_rails61_semantic_logger.gemfile +++ b/gemfiles/ruby_3.2_rails61_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_rails61_semantic_logger.gemfile.lock b/gemfiles/ruby_3.2_rails61_semantic_logger.gemfile.lock index 4c5551d3cfb..520f332753e 100644 --- a/gemfiles/ruby_3.2_rails61_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_3.2_rails61_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -97,8 +97,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -116,8 +116,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -274,8 +274,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.28) - webrick (~> 1.7.0) zeitwerk (2.6.7) PLATFORMS @@ -286,7 +284,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -321,7 +318,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_rails61_trilogy.gemfile b/gemfiles/ruby_3.2_rails61_trilogy.gemfile index ab9e1d596e7..a99d1f7c681 100644 --- a/gemfiles/ruby_3.2_rails61_trilogy.gemfile +++ b/gemfiles/ruby_3.2_rails61_trilogy.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_rails61_trilogy.gemfile.lock b/gemfiles/ruby_3.2_rails61_trilogy.gemfile.lock index d5bf58e4c65..b5e55bef1a8 100644 --- a/gemfiles/ruby_3.2_rails61_trilogy.gemfile.lock +++ b/gemfiles/ruby_3.2_rails61_trilogy.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -101,8 +101,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.4) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -120,8 +120,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -283,7 +283,6 @@ GEM websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.34) zeitwerk (2.6.12) PLATFORMS @@ -295,7 +294,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -330,7 +328,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_rails7.gemfile b/gemfiles/ruby_3.2_rails7.gemfile new file mode 100644 index 00000000000..b7cc3caff02 --- /dev/null +++ b/gemfiles/ruby_3.2_rails7.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.0.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_rails7.gemfile.lock b/gemfiles/ruby_3.2_rails7.gemfile.lock new file mode 100644 index 00000000000..f9b6c790837 --- /dev/null +++ b/gemfiles/ruby_3.2_rails7.gemfile.lock @@ -0,0 +1,318 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.8.4) + actionpack (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.0) + actionpack (7.0.8.4) + actionview (= 7.0.8.4) + activesupport (= 7.0.8.4) + rack (~> 2.0, >= 2.2.4) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.8.4) + actionpack (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.8.4) + activesupport (= 7.0.8.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.3.6) + activemodel (7.0.8.4) + activesupport (= 7.0.8.4) + activerecord (7.0.8.4) + activemodel (= 7.0.8.4) + activesupport (= 7.0.8.4) + activestorage (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activesupport (= 7.0.8.4) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.8.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (7.0.8.4) + actioncable (= 7.0.8.4) + actionmailbox (= 7.0.8.4) + actionmailer (= 7.0.8.4) + actionpack (= 7.0.8.4) + actiontext (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activemodel (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + bundler (>= 1.15.0) + railties (= 7.0.8.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + method_source + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 7.0.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_rails71.gemfile b/gemfiles/ruby_3.2_rails71.gemfile new file mode 100644 index 00000000000..b5555633a60 --- /dev/null +++ b/gemfiles/ruby_3.2_rails71.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.1.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_rails71.gemfile.lock b/gemfiles/ruby_3.2_rails71.gemfile.lock new file mode 100644 index 00000000000..26cb36be8c4 --- /dev/null +++ b/gemfiles/ruby_3.2_rails71.gemfile.lock @@ -0,0 +1,348 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + zeitwerk (~> 2.6) + actionmailbox (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.1.3.4) + actionpack (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.2) + actionpack (7.1.3.4) + actionview (= 7.1.3.4) + activesupport (= 7.1.3.4) + nokogiri (>= 1.8.5) + racc + rack (>= 2.2.4) + rack-session (>= 1.0.1) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + actiontext (7.1.3.4) + actionpack (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.1.3.4) + activesupport (= 7.1.3.4) + builder (~> 3.1) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activejob (7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.3.6) + activemodel (7.1.3.4) + activesupport (= 7.1.3.4) + activerecord (7.1.3.4) + activemodel (= 7.1.3.4) + activesupport (= 7.1.3.4) + timeout (>= 0.4.0) + activestorage (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activesupport (= 7.1.3.4) + marcel (~> 1.0) + activesupport (7.1.3.4) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + drb (2.2.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + io-console (0.7.2) + irb (1.14.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + psych (5.1.2) + stringio + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.7) + rack-session (2.0.0) + rack (>= 3.0.0) + rack-test (2.1.0) + rack (>= 1.3) + rackup (2.1.0) + rack (>= 3) + webrick (~> 1.8) + rails (7.1.3.4) + actioncable (= 7.1.3.4) + actionmailbox (= 7.1.3.4) + actionmailer (= 7.1.3.4) + actionpack (= 7.1.3.4) + actiontext (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activemodel (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + bundler (>= 1.15.0) + railties (= 7.1.3.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + irb + rackup (>= 1.0.0) + rake (>= 12.2) + thor (~> 1.0, >= 1.2.2) + zeitwerk (~> 2.6) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rdoc (6.7.0) + psych (>= 4.0.0) + regexp_parser (2.9.2) + reline (0.5.9) + io-console (~> 0.5) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stringio (3.1.1) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 7.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_redis_3.gemfile b/gemfiles/ruby_3.2_redis_3.gemfile index b192548b1f2..f075759c264 100644 --- a/gemfiles/ruby_3.2_redis_3.gemfile +++ b/gemfiles/ruby_3.2_redis_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_redis_3.gemfile.lock b/gemfiles/ruby_3.2_redis_3.gemfile.lock index 3fd14a25267..afff4ca0b19 100644 --- a/gemfiles/ruby_3.2_redis_3.gemfile.lock +++ b/gemfiles/ruby_3.2_redis_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -50,8 +49,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -134,8 +133,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -145,7 +142,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -176,7 +172,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_redis_4.gemfile b/gemfiles/ruby_3.2_redis_4.gemfile index 568e746e55f..dc3e2d2b6cb 100644 --- a/gemfiles/ruby_3.2_redis_4.gemfile +++ b/gemfiles/ruby_3.2_redis_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_redis_4.gemfile.lock b/gemfiles/ruby_3.2_redis_4.gemfile.lock index 228603be034..4138f03a6f4 100644 --- a/gemfiles/ruby_3.2_redis_4.gemfile.lock +++ b/gemfiles/ruby_3.2_redis_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -50,8 +49,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -134,8 +133,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -145,7 +142,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -176,7 +172,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_redis_5.gemfile b/gemfiles/ruby_3.2_redis_5.gemfile index e3a505288a3..3bbc9ad0bed 100644 --- a/gemfiles/ruby_3.2_redis_5.gemfile +++ b/gemfiles/ruby_3.2_redis_5.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_redis_5.gemfile.lock b/gemfiles/ruby_3.2_redis_5.gemfile.lock index b95e2be9ac2..065d5089c4f 100644 --- a/gemfiles/ruby_3.2_redis_5.gemfile.lock +++ b/gemfiles/ruby_3.2_redis_5.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -138,8 +137,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -149,7 +146,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -180,7 +176,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_relational_db.gemfile b/gemfiles/ruby_3.2_relational_db.gemfile index 2171adea069..11a7788b868 100644 --- a/gemfiles/ruby_3.2_relational_db.gemfile +++ b/gemfiles/ruby_3.2_relational_db.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -42,7 +40,7 @@ gem "makara", ">= 0.6.0.pre" gem "mysql2", ">= 0.5.3", platform: :ruby gem "pg", platform: :ruby gem "sqlite3", ">= 1.4.2", platform: :ruby -gem "sequel", "~> 5.54.0" +gem "sequel" gem "trilogy" group :check do diff --git a/gemfiles/ruby_3.2_relational_db.gemfile.lock b/gemfiles/ruby_3.2_relational_db.gemfile.lock index 4145d1b8a6e..667871e1870 100644 --- a/gemfiles/ruby_3.2_relational_db.gemfile.lock +++ b/gemfiles/ruby_3.2_relational_db.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -39,15 +39,15 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) + bigdecimal (3.1.8) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) delayed_job (4.1.11) activesupport (>= 3.0, < 8.0) @@ -67,8 +67,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -143,7 +143,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) - sequel (5.54.0) + sequel (5.83.1) + bigdecimal simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -163,7 +164,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -174,7 +174,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -204,7 +203,7 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) - sequel (~> 5.54.0) + sequel simplecov! simplecov-cobertura (~> 2.1.0) sqlite3 (>= 1.4.2) @@ -212,7 +211,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_resque2_redis3.gemfile b/gemfiles/ruby_3.2_resque2_redis3.gemfile index 8e7c468d5c5..ba9a57b22b9 100644 --- a/gemfiles/ruby_3.2_resque2_redis3.gemfile +++ b/gemfiles/ruby_3.2_resque2_redis3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_resque2_redis3.gemfile.lock b/gemfiles/ruby_3.2_resque2_redis3.gemfile.lock index 261606c3bb6..bd1ff6015b2 100644 --- a/gemfiles/ruby_3.2_resque2_redis3.gemfile.lock +++ b/gemfiles/ruby_3.2_resque2_redis3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -50,8 +49,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -155,8 +154,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -166,7 +163,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -198,7 +194,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_resque2_redis4.gemfile b/gemfiles/ruby_3.2_resque2_redis4.gemfile index 9edb58f733c..d56e77f5a5a 100644 --- a/gemfiles/ruby_3.2_resque2_redis4.gemfile +++ b/gemfiles/ruby_3.2_resque2_redis4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_resque2_redis4.gemfile.lock b/gemfiles/ruby_3.2_resque2_redis4.gemfile.lock index f109e094592..755625c1274 100644 --- a/gemfiles/ruby_3.2_resque2_redis4.gemfile.lock +++ b/gemfiles/ruby_3.2_resque2_redis4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) connection_pool (2.3.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -51,8 +50,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -159,8 +158,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.7.0) - yard (0.9.28) - webrick (~> 1.7.0) PLATFORMS aarch64-linux @@ -170,7 +167,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -202,7 +198,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_sinatra_2.gemfile b/gemfiles/ruby_3.2_sinatra_2.gemfile index 8f6b792698f..d3bb1ac1eb5 100644 --- a/gemfiles/ruby_3.2_sinatra_2.gemfile +++ b/gemfiles/ruby_3.2_sinatra_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_sinatra_2.gemfile.lock b/gemfiles/ruby_3.2_sinatra_2.gemfile.lock index 2c94ef26f3b..f045e4568ee 100644 --- a/gemfiles/ruby_3.2_sinatra_2.gemfile.lock +++ b/gemfiles/ruby_3.2_sinatra_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +33,13 @@ GEM bigdecimal (3.1.7) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -53,8 +52,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -155,7 +154,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -165,7 +163,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -198,7 +195,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_sinatra_3.gemfile b/gemfiles/ruby_3.2_sinatra_3.gemfile index d522a8127f6..019c7714d7a 100644 --- a/gemfiles/ruby_3.2_sinatra_3.gemfile +++ b/gemfiles/ruby_3.2_sinatra_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_sinatra_3.gemfile.lock b/gemfiles/ruby_3.2_sinatra_3.gemfile.lock index 29713002550..3a6a2272423 100644 --- a/gemfiles/ruby_3.2_sinatra_3.gemfile.lock +++ b/gemfiles/ruby_3.2_sinatra_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,14 +34,13 @@ GEM bigdecimal (3.1.7) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -54,8 +53,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -157,7 +156,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -167,7 +165,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -200,7 +197,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_sinatra_4.gemfile b/gemfiles/ruby_3.2_sinatra_4.gemfile index a6572fedbaa..3fa07ea81b7 100644 --- a/gemfiles/ruby_3.2_sinatra_4.gemfile +++ b/gemfiles/ruby_3.2_sinatra_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.2_sinatra_4.gemfile.lock b/gemfiles/ruby_3.2_sinatra_4.gemfile.lock index 7567f9c69dd..bd7f990a369 100644 --- a/gemfiles/ruby_3.2_sinatra_4.gemfile.lock +++ b/gemfiles/ruby_3.2_sinatra_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,14 +34,13 @@ GEM bigdecimal (3.1.7) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -54,8 +53,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -160,7 +159,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -170,7 +168,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -203,7 +200,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.2_stripe_10.gemfile b/gemfiles/ruby_3.2_stripe_10.gemfile new file mode 100644 index 00000000000..425478e78b2 --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_10.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 10" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_stripe_10.gemfile.lock b/gemfiles/ruby_3.2_stripe_10.gemfile.lock new file mode 100644 index 00000000000..e1f8e20a85b --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_10.gemfile.lock @@ -0,0 +1,183 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (10.15.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 10) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_stripe_11.gemfile b/gemfiles/ruby_3.2_stripe_11.gemfile new file mode 100644 index 00000000000..b8b49621a49 --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_11.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_stripe_11.gemfile.lock b/gemfiles/ruby_3.2_stripe_11.gemfile.lock new file mode 100644 index 00000000000..2c77873aab0 --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_11.gemfile.lock @@ -0,0 +1,183 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (11.7.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 11) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_stripe_12.gemfile b/gemfiles/ruby_3.2_stripe_12.gemfile new file mode 100644 index 00000000000..175d5f415ec --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_12.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 12" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_stripe_12.gemfile.lock b/gemfiles/ruby_3.2_stripe_12.gemfile.lock new file mode 100644 index 00000000000..4dfb7b175c5 --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_12.gemfile.lock @@ -0,0 +1,183 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (12.5.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 12) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_stripe_7.gemfile b/gemfiles/ruby_3.2_stripe_7.gemfile new file mode 100644 index 00000000000..b47fdc17a19 --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_7.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 7" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_stripe_7.gemfile.lock b/gemfiles/ruby_3.2_stripe_7.gemfile.lock new file mode 100644 index 00000000000..0ec9783f7c4 --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_7.gemfile.lock @@ -0,0 +1,183 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (7.1.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 7) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_stripe_8.gemfile b/gemfiles/ruby_3.2_stripe_8.gemfile new file mode 100644 index 00000000000..a603cf0b931 --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_8.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 8" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_stripe_8.gemfile.lock b/gemfiles/ruby_3.2_stripe_8.gemfile.lock new file mode 100644 index 00000000000..1607f6b5c29 --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_8.gemfile.lock @@ -0,0 +1,183 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (8.7.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 8) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_stripe_9.gemfile b/gemfiles/ruby_3.2_stripe_9.gemfile new file mode 100644 index 00000000000..c3e5f6f91f1 --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_9.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 9" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_stripe_9.gemfile.lock b/gemfiles/ruby_3.2_stripe_9.gemfile.lock new file mode 100644 index 00000000000..e836ea1a078 --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_9.gemfile.lock @@ -0,0 +1,183 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (9.4.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 9) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_stripe_latest.gemfile b/gemfiles/ruby_3.2_stripe_latest.gemfile new file mode 100644 index 00000000000..8a1ea441f5b --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_stripe_latest.gemfile.lock b/gemfiles/ruby_3.2_stripe_latest.gemfile.lock new file mode 100644 index 00000000000..39ec7efb21f --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_latest.gemfile.lock @@ -0,0 +1,181 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (13.0.1) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_stripe_min.gemfile b/gemfiles/ruby_3.2_stripe_min.gemfile new file mode 100644 index 00000000000..014fd636730 --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_min.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "= 5.15.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_stripe_min.gemfile.lock b/gemfiles/ruby_3.2_stripe_min.gemfile.lock new file mode 100644 index 00000000000..b85f3846385 --- /dev/null +++ b/gemfiles/ruby_3.2_stripe_min.gemfile.lock @@ -0,0 +1,181 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.5-aarch64-linux) + google-protobuf (3.25.5-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (5.15.0) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (= 5.15.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_activesupport.gemfile b/gemfiles/ruby_3.3_activesupport.gemfile index f754ab55dd0..d199dfe7905 100644 --- a/gemfiles/ruby_3.3_activesupport.gemfile +++ b/gemfiles/ruby_3.3_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_activesupport.gemfile.lock b/gemfiles/ruby_3.3_activesupport.gemfile.lock index ef841af115b..7b0a5fa8230 100644 --- a/gemfiles/ruby_3.3_activesupport.gemfile.lock +++ b/gemfiles/ruby_3.3_activesupport.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -65,7 +65,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) digest-crc (0.6.5) @@ -105,8 +105,8 @@ GEM addressable (>= 2.4) jsonapi-renderer (0.2.2) king_konf (1.0.1) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -240,7 +240,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) zeitwerk (2.6.11) PLATFORMS @@ -255,7 +254,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -289,7 +287,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_aws.gemfile b/gemfiles/ruby_3.3_aws.gemfile index 18a9d279ca2..4499f0460c4 100644 --- a/gemfiles/ruby_3.3_aws.gemfile +++ b/gemfiles/ruby_3.3_aws.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_aws.gemfile.lock b/gemfiles/ruby_3.3_aws.gemfile.lock index 06e3da69312..9a5a69b0560 100644 --- a/gemfiles/ruby_3.3_aws.gemfile.lock +++ b/gemfiles/ruby_3.3_aws.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -1452,13 +1452,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -1471,8 +1470,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -1560,7 +1559,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -1571,7 +1569,6 @@ DEPENDENCIES aws-sdk benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -1602,7 +1599,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_contrib.gemfile b/gemfiles/ruby_3.3_contrib.gemfile index e8f0476f4c4..52e865d20fe 100644 --- a/gemfiles/ruby_3.3_contrib.gemfile +++ b/gemfiles/ruby_3.3_contrib.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_contrib.gemfile.lock b/gemfiles/ruby_3.3_contrib.gemfile.lock index bc66673e1f3..a61016e0527 100644 --- a/gemfiles/ruby_3.3_contrib.gemfile.lock +++ b/gemfiles/ruby_3.3_contrib.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,7 +33,6 @@ GEM binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) bson (4.15.0) - builder (3.2.4) bunny (2.20.3) amq-protocol (~> 2.3, >= 2.3.1) sorted_set (~> 1, >= 1.0.2) @@ -44,7 +43,7 @@ GEM crack (0.4.5) rexml dalli (3.2.4) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -61,8 +60,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -199,7 +198,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -209,7 +207,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (>= 3.0.0) @@ -250,7 +247,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_contrib_old.gemfile b/gemfiles/ruby_3.3_contrib_old.gemfile index 742cbf8c97a..d886f7af99e 100644 --- a/gemfiles/ruby_3.3_contrib_old.gemfile +++ b/gemfiles/ruby_3.3_contrib_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_contrib_old.gemfile.lock b/gemfiles/ruby_3.3_contrib_old.gemfile.lock index cc9d4b827e2..4a836972289 100644 --- a/gemfiles/ruby_3.3_contrib_old.gemfile.lock +++ b/gemfiles/ruby_3.3_contrib_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,7 +34,6 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) @@ -42,7 +41,7 @@ GEM rexml daemons (1.4.1) dalli (2.7.11) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -60,8 +59,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -186,7 +185,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -196,7 +194,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (< 3.0.0) @@ -230,7 +227,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_core_old.gemfile b/gemfiles/ruby_3.3_core_old.gemfile index 4f74cbee678..b0e19229378 100644 --- a/gemfiles/ruby_3.3_core_old.gemfile +++ b/gemfiles/ruby_3.3_core_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_core_old.gemfile.lock b/gemfiles/ruby_3.3_core_old.gemfile.lock index 9e73a696c24..59017e2bc8c 100644 --- a/gemfiles/ruby_3.3_core_old.gemfile.lock +++ b/gemfiles/ruby_3.3_core_old.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -49,8 +48,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -132,7 +131,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -142,7 +140,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -172,7 +169,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_elasticsearch_7.gemfile b/gemfiles/ruby_3.3_elasticsearch_7.gemfile index 0a83db4600b..17ab53fbb6b 100644 --- a/gemfiles/ruby_3.3_elasticsearch_7.gemfile +++ b/gemfiles/ruby_3.3_elasticsearch_7.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_elasticsearch_7.gemfile.lock b/gemfiles/ruby_3.3_elasticsearch_7.gemfile.lock index 40559d25d19..20fc337b08e 100644 --- a/gemfiles/ruby_3.3_elasticsearch_7.gemfile.lock +++ b/gemfiles/ruby_3.3_elasticsearch_7.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -32,13 +32,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -81,8 +80,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -170,7 +169,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -180,7 +178,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -211,7 +208,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_elasticsearch_8.gemfile b/gemfiles/ruby_3.3_elasticsearch_8.gemfile index c3569fd1935..587bb77e7fb 100644 --- a/gemfiles/ruby_3.3_elasticsearch_8.gemfile +++ b/gemfiles/ruby_3.3_elasticsearch_8.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_elasticsearch_8.gemfile.lock b/gemfiles/ruby_3.3_elasticsearch_8.gemfile.lock index 76bd8db6731..719187726bc 100644 --- a/gemfiles/ruby_3.3_elasticsearch_8.gemfile.lock +++ b/gemfiles/ruby_3.3_elasticsearch_8.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,13 +33,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -64,8 +63,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -152,7 +151,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -162,7 +160,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -193,7 +190,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_elasticsearch_latest.gemfile b/gemfiles/ruby_3.3_elasticsearch_latest.gemfile new file mode 100644 index 00000000000..a18e6d9735a --- /dev/null +++ b/gemfiles/ruby_3.3_elasticsearch_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "elasticsearch" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_elasticsearch_latest.gemfile.lock b/gemfiles/ruby_3.3_elasticsearch_latest.gemfile.lock new file mode 100644 index 00000000000..9fdb481bbb0 --- /dev/null +++ b/gemfiles/ruby_3.3_elasticsearch_latest.gemfile.lock @@ -0,0 +1,199 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + elastic-transport (8.3.5) + faraday (< 3) + multi_json + elasticsearch (8.15.0) + elastic-transport (~> 8.3) + elasticsearch-api (= 8.15.0) + elasticsearch-api (8.15.0) + multi_json + extlz4 (0.3.4) + faraday (2.12.0) + faraday-net_http (>= 2.0, < 3.4) + json + logger + faraday-net_http (3.3.0) + net-http + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + logger (1.6.1) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + multi_json (1.15.0) + net-http (0.4.1) + uri + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + uri (0.13.1) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + elasticsearch + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_graphql_1.13.gemfile b/gemfiles/ruby_3.3_graphql_1.13.gemfile index 5dab478d1ae..a04f64144c5 100644 --- a/gemfiles/ruby_3.3_graphql_1.13.gemfile +++ b/gemfiles/ruby_3.3_graphql_1.13.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,7 +33,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 1.13.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.3_graphql_1.13.gemfile.lock b/gemfiles/ruby_3.3_graphql_1.13.gemfile.lock index 319e6726341..d35846f7771 100644 --- a/gemfiles/ruby_3.3_graphql_1.13.gemfile.lock +++ b/gemfiles/ruby_3.3_graphql_1.13.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -38,28 +98,65 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2) graphql (1.13.21) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -74,11 +171,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -128,8 +258,19 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -137,7 +278,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -147,7 +291,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -157,11 +300,13 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 1.13.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -175,10 +320,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_graphql_2.0.gemfile b/gemfiles/ruby_3.3_graphql_2.0.gemfile index 8307e82e015..4260bea7abf 100644 --- a/gemfiles/ruby_3.3_graphql_2.0.gemfile +++ b/gemfiles/ruby_3.3_graphql_2.0.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,7 +33,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.0.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.3_graphql_2.0.gemfile.lock b/gemfiles/ruby_3.3_graphql_2.0.gemfile.lock index 072a4d17789..3426bb9052e 100644 --- a/gemfiles/ruby_3.3_graphql_2.0.gemfile.lock +++ b/gemfiles/ruby_3.3_graphql_2.0.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -38,28 +98,65 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2) graphql (2.0.28) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -74,11 +171,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -128,8 +258,19 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -137,7 +278,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -147,7 +291,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -157,11 +300,13 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.0.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -175,10 +320,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_graphql_2.1.gemfile b/gemfiles/ruby_3.3_graphql_2.1.gemfile index 7c2295e3cc3..a2999be5818 100644 --- a/gemfiles/ruby_3.3_graphql_2.1.gemfile +++ b/gemfiles/ruby_3.3_graphql_2.1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,7 +33,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.1.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.3_graphql_2.1.gemfile.lock b/gemfiles/ruby_3.3_graphql_2.1.gemfile.lock index 0180a374c15..9e76989b86d 100644 --- a/gemfiles/ruby_3.3_graphql_2.1.gemfile.lock +++ b/gemfiles/ruby_3.3_graphql_2.1.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -38,29 +98,66 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2) graphql (2.1.11) racc (~> 1.4) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -75,11 +172,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -129,8 +259,19 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -138,7 +279,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -148,7 +292,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -158,11 +301,13 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.1.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -176,10 +321,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_graphql_2.2.gemfile b/gemfiles/ruby_3.3_graphql_2.2.gemfile index 8e7df05bcdb..6a47cf6e7d6 100644 --- a/gemfiles/ruby_3.3_graphql_2.2.gemfile +++ b/gemfiles/ruby_3.3_graphql_2.2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,7 +33,10 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.2.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" group :check do diff --git a/gemfiles/ruby_3.3_graphql_2.2.gemfile.lock b/gemfiles/ruby_3.3_graphql_2.2.gemfile.lock index 39be814f7a3..5aeb5db7843 100644 --- a/gemfiles/ruby_3.3_graphql_2.2.gemfile.lock +++ b/gemfiles/ruby_3.3_graphql_2.2.gemfile.lock @@ -11,15 +11,74 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) appraisal (2.4.1) @@ -27,6 +86,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -38,29 +98,66 @@ GEM concurrent-ruby (1.2.3) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.0) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.2) graphql (2.2.6) racc (~> 1.4) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.24.0) msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) os (1.1.4) parallel (1.24.0) parser (3.3.0.5) @@ -75,11 +172,44 @@ GEM pry (~> 0.13) public_suffix (5.0.4) racc (1.7.3) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) rake-compiler (1.2.6) rake regexp_parser (2.9.0) + request_store (1.7.0) + rack (>= 1.4) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.12.0) @@ -129,8 +259,19 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.0) thor (1.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.3.0) webmock (3.19.1) @@ -138,7 +279,10 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -148,7 +292,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -158,11 +301,13 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.2.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -176,10 +321,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_graphql_2.3.gemfile b/gemfiles/ruby_3.3_graphql_2.3.gemfile new file mode 100644 index 00000000000..e86241a6af5 --- /dev/null +++ b/gemfiles/ruby_3.3_graphql_2.3.gemfile @@ -0,0 +1,49 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" +gem "graphql", "~> 2.3.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_graphql_2.3.gemfile.lock b/gemfiles/ruby_3.3_graphql_2.3.gemfile.lock new file mode 100644 index 00000000000..ef6607dda50 --- /dev/null +++ b/gemfiles/ruby_3.3_graphql_2.3.gemfile.lock @@ -0,0 +1,333 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.3) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.3-aarch64-linux) + google-protobuf (3.25.3-x86_64-linux) + graphql (2.3.6) + base64 + hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.24.0) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.25.1) + parser (3.3.3.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.0) + racc (1.8.0) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + request_store (1.7.0) + rack (>= 1.4) + rexml (3.3.1) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + graphql (~> 2.3.0) + json-schema (< 3) + lograge (~> 0.11) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 6.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + sprockets (< 4) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_http.gemfile b/gemfiles/ruby_3.3_http.gemfile index 52eb5867ce9..8ff564a89c4 100644 --- a/gemfiles/ruby_3.3_http.gemfile +++ b/gemfiles/ruby_3.3_http.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -41,7 +39,6 @@ gem "faraday" gem "http" gem "httpclient" gem "rest-client" -gem "stripe" gem "typhoeus" group :check do diff --git a/gemfiles/ruby_3.3_http.gemfile.lock b/gemfiles/ruby_3.3_http.gemfile.lock index 70a8fdb9017..68bba33ef5a 100644 --- a/gemfiles/ruby_3.3_http.gemfile.lock +++ b/gemfiles/ruby_3.3_http.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -71,8 +70,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -160,7 +159,6 @@ GEM simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) - stripe (9.1.0) strscan (3.1.0) thor (1.2.2) typhoeus (1.4.0) @@ -175,7 +173,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -185,7 +182,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -218,12 +214,10 @@ DEPENDENCIES rubocop-rspec (~> 2.20, < 2.21) simplecov! simplecov-cobertura (~> 2.1.0) - stripe typhoeus warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_opensearch_2.gemfile b/gemfiles/ruby_3.3_opensearch_2.gemfile index ff64c088fee..97c7bb50b6f 100644 --- a/gemfiles/ruby_3.3_opensearch_2.gemfile +++ b/gemfiles/ruby_3.3_opensearch_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_opensearch_2.gemfile.lock b/gemfiles/ruby_3.3_opensearch_2.gemfile.lock index 97a86359656..13563100d41 100644 --- a/gemfiles/ruby_3.3_opensearch_2.gemfile.lock +++ b/gemfiles/ruby_3.3_opensearch_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,13 +33,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -56,8 +55,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -152,7 +151,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -162,7 +160,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -193,7 +190,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_opensearch_3.gemfile b/gemfiles/ruby_3.3_opensearch_3.gemfile index 23a1083cb42..8d9d62f01d0 100644 --- a/gemfiles/ruby_3.3_opensearch_3.gemfile +++ b/gemfiles/ruby_3.3_opensearch_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_opensearch_3.gemfile.lock b/gemfiles/ruby_3.3_opensearch_3.gemfile.lock index fe53a210227..28b383d80bb 100644 --- a/gemfiles/ruby_3.3_opensearch_3.gemfile.lock +++ b/gemfiles/ruby_3.3_opensearch_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,13 +33,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -56,8 +55,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -147,7 +146,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -157,7 +155,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -188,7 +185,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_opensearch_latest.gemfile b/gemfiles/ruby_3.3_opensearch_latest.gemfile new file mode 100644 index 00000000000..1eb664e0fff --- /dev/null +++ b/gemfiles/ruby_3.3_opensearch_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "opensearch-ruby" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_opensearch_latest.gemfile.lock b/gemfiles/ruby_3.3_opensearch_latest.gemfile.lock new file mode 100644 index 00000000000..d6c18a2f672 --- /dev/null +++ b/gemfiles/ruby_3.3_opensearch_latest.gemfile.lock @@ -0,0 +1,194 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + faraday (2.12.0) + faraday-net_http (>= 2.0, < 3.4) + json + logger + faraday-net_http (3.3.0) + net-http + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + logger (1.6.1) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + multi_json (1.15.0) + net-http (0.4.1) + uri + opensearch-ruby (3.4.0) + faraday (>= 1.0, < 3) + multi_json (>= 1.0) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + uri (0.13.1) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opensearch-ruby + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_opentelemetry.gemfile b/gemfiles/ruby_3.3_opentelemetry.gemfile index a583eb93c65..17fe5120eed 100644 --- a/gemfiles/ruby_3.3_opentelemetry.gemfile +++ b/gemfiles/ruby_3.3_opentelemetry.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_opentelemetry.gemfile.lock b/gemfiles/ruby_3.3_opentelemetry.gemfile.lock index e3ffb745a2e..e87e7693dab 100644 --- a/gemfiles/ruby_3.3_opentelemetry.gemfile.lock +++ b/gemfiles/ruby_3.3_opentelemetry.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -49,8 +48,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -144,7 +143,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -154,7 +152,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -185,7 +182,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_opentelemetry_otlp.gemfile b/gemfiles/ruby_3.3_opentelemetry_otlp.gemfile new file mode 100644 index 00000000000..288ffc6f66b --- /dev/null +++ b/gemfiles/ruby_3.3_opentelemetry_otlp.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "opentelemetry-sdk", "~> 1.1" +gem "opentelemetry-exporter-otlp" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_opentelemetry_otlp.gemfile.lock b/gemfiles/ruby_3.3_opentelemetry_otlp.gemfile.lock new file mode 100644 index 00000000000..beb2996fa45 --- /dev/null +++ b/gemfiles/ruby_3.3_opentelemetry_otlp.gemfile.lock @@ -0,0 +1,202 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6) + binding_of_caller (1.0.0) + debug_inspector (>= 0.0.1) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.2.3) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.3-aarch64-linux) + google-protobuf (3.25.3-x86_64-linux) + googleapis-common-protos-types (1.13.0) + google-protobuf (~> 3.18) + hashdiff (1.1.0) + json (2.7.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.0.0) + msgpack (1.7.3) + opentelemetry-api (1.2.5) + opentelemetry-common (0.20.1) + opentelemetry-api (~> 1.0) + opentelemetry-exporter-otlp (0.26.3) + google-protobuf (~> 3.14) + googleapis-common-protos-types (~> 1.3) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.20) + opentelemetry-sdk (~> 1.2) + opentelemetry-semantic_conventions + opentelemetry-registry (0.3.0) + opentelemetry-api (~> 1.1) + opentelemetry-sdk (1.4.0) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.20) + opentelemetry-registry (~> 0.2) + opentelemetry-semantic_conventions + opentelemetry-semantic_conventions (1.10.0) + opentelemetry-api (~> 1.0) + os (1.1.4) + parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.0.4) + racc (1.7.3) + rainbow (3.1.1) + rake (13.1.0) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.0) + rexml (3.3.8) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.1) + parser (>= 3.3.0.4) + rubocop-capybara (2.20.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.20.2) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + thor (1.3.1) + unicode-display_width (2.5.0) + warning (1.3.0) + webmock (3.23.0) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opentelemetry-exporter-otlp + opentelemetry-sdk (~> 1.1) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_rack_2.gemfile b/gemfiles/ruby_3.3_rack_2.gemfile index 0c011068361..da057e50c25 100644 --- a/gemfiles/ruby_3.3_rack_2.gemfile +++ b/gemfiles/ruby_3.3_rack_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_rack_2.gemfile.lock b/gemfiles/ruby_3.3_rack_2.gemfile.lock index 5c384c6b5f1..5ed009d22bb 100644 --- a/gemfiles/ruby_3.3_rack_2.gemfile.lock +++ b/gemfiles/ruby_3.3_rack_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -49,8 +48,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -139,7 +138,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -149,7 +147,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -182,7 +179,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_rack_3.gemfile b/gemfiles/ruby_3.3_rack_3.gemfile index 929ad3909ac..2d1be5f7909 100644 --- a/gemfiles/ruby_3.3_rack_3.gemfile +++ b/gemfiles/ruby_3.3_rack_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_rack_3.gemfile.lock b/gemfiles/ruby_3.3_rack_3.gemfile.lock index 4b45b773be0..587e2ee39f4 100644 --- a/gemfiles/ruby_3.3_rack_3.gemfile.lock +++ b/gemfiles/ruby_3.3_rack_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -49,8 +48,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -139,7 +138,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -149,7 +147,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -182,7 +179,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_rack_latest.gemfile b/gemfiles/ruby_3.3_rack_latest.gemfile new file mode 100644 index 00000000000..e8a313cd70f --- /dev/null +++ b/gemfiles/ruby_3.3_rack_latest.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rack" +gem "rack-contrib" +gem "rack-test" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_rack_latest.gemfile.lock b/gemfiles/ruby_3.3_rack_latest.gemfile.lock new file mode 100644 index 00000000000..c8bf9df42d1 --- /dev/null +++ b/gemfiles/ruby_3.3_rack_latest.gemfile.lock @@ -0,0 +1,187 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.2) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.5-aarch64-linux) + google-protobuf (3.25.5-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.8) + rack-contrib (2.5.0) + rack (< 4) + rack-test (2.1.0) + rack (>= 1.3) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.2) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rack + rack-contrib + rack-test + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_rails61_mysql2.gemfile b/gemfiles/ruby_3.3_rails61_mysql2.gemfile index 398a657e92d..04cb6694650 100644 --- a/gemfiles/ruby_3.3_rails61_mysql2.gemfile +++ b/gemfiles/ruby_3.3_rails61_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_rails61_mysql2.gemfile.lock b/gemfiles/ruby_3.3_rails61_mysql2.gemfile.lock index 200cc102fa2..e3b42416d95 100644 --- a/gemfiles/ruby_3.3_rails61_mysql2.gemfile.lock +++ b/gemfiles/ruby_3.3_rails61_mysql2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -97,8 +97,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -115,8 +115,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -274,7 +274,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.34) zeitwerk (2.6.8) PLATFORMS @@ -285,7 +284,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -320,7 +318,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_rails61_postgres.gemfile b/gemfiles/ruby_3.3_rails61_postgres.gemfile index 08b13d77697..609da1f3595 100644 --- a/gemfiles/ruby_3.3_rails61_postgres.gemfile +++ b/gemfiles/ruby_3.3_rails61_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_rails61_postgres.gemfile.lock b/gemfiles/ruby_3.3_rails61_postgres.gemfile.lock index 2048a0e5a13..1cc75036d7b 100644 --- a/gemfiles/ruby_3.3_rails61_postgres.gemfile.lock +++ b/gemfiles/ruby_3.3_rails61_postgres.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -97,8 +97,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -115,8 +115,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -274,7 +274,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.34) zeitwerk (2.6.8) PLATFORMS @@ -285,7 +284,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -320,7 +318,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_rails61_postgres_redis.gemfile b/gemfiles/ruby_3.3_rails61_postgres_redis.gemfile index ad1938bbe3a..dde99290665 100644 --- a/gemfiles/ruby_3.3_rails61_postgres_redis.gemfile +++ b/gemfiles/ruby_3.3_rails61_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_rails61_postgres_redis.gemfile.lock b/gemfiles/ruby_3.3_rails61_postgres_redis.gemfile.lock index 0ac3d8621e1..6e544265f26 100644 --- a/gemfiles/ruby_3.3_rails61_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_3.3_rails61_postgres_redis.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -97,8 +97,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -115,8 +115,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -275,7 +275,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.34) zeitwerk (2.6.8) PLATFORMS @@ -286,7 +285,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -322,7 +320,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_rails61_postgres_sidekiq.gemfile b/gemfiles/ruby_3.3_rails61_postgres_sidekiq.gemfile index 2204a5ee12c..695aaf7c342 100644 --- a/gemfiles/ruby_3.3_rails61_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_3.3_rails61_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_rails61_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_3.3_rails61_postgres_sidekiq.gemfile.lock index 7d288c4dbfa..e6764c416c8 100644 --- a/gemfiles/ruby_3.3_rails61_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_3.3_rails61_postgres_sidekiq.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -98,8 +98,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -116,8 +116,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -288,7 +288,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.34) zeitwerk (2.6.8) PLATFORMS @@ -299,7 +298,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -336,7 +334,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_rails61_semantic_logger.gemfile b/gemfiles/ruby_3.3_rails61_semantic_logger.gemfile index eb5c71e6cc1..28a4d4adc26 100644 --- a/gemfiles/ruby_3.3_rails61_semantic_logger.gemfile +++ b/gemfiles/ruby_3.3_rails61_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_rails61_semantic_logger.gemfile.lock b/gemfiles/ruby_3.3_rails61_semantic_logger.gemfile.lock index 704076775d7..22676129f7d 100644 --- a/gemfiles/ruby_3.3_rails61_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_3.3_rails61_semantic_logger.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -97,8 +97,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.3) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -115,8 +115,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -273,7 +273,6 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.34) zeitwerk (2.6.8) PLATFORMS @@ -284,7 +283,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -319,7 +317,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_rails61_trilogy.gemfile b/gemfiles/ruby_3.3_rails61_trilogy.gemfile index ab9e1d596e7..a99d1f7c681 100644 --- a/gemfiles/ruby_3.3_rails61_trilogy.gemfile +++ b/gemfiles/ruby_3.3_rails61_trilogy.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_rails61_trilogy.gemfile.lock b/gemfiles/ruby_3.3_rails61_trilogy.gemfile.lock index 912d0fd4550..c605aaa476f 100644 --- a/gemfiles/ruby_3.3_rails61_trilogy.gemfile.lock +++ b/gemfiles/ruby_3.3_rails61_trilogy.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -101,8 +101,8 @@ GEM crack (0.4.5) rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.4) - debase-ruby_core_source (3.3.1) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -119,8 +119,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -282,7 +282,6 @@ GEM websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.34) zeitwerk (2.6.12) PLATFORMS @@ -294,7 +293,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -329,7 +327,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_rails7.gemfile b/gemfiles/ruby_3.3_rails7.gemfile new file mode 100644 index 00000000000..b7cc3caff02 --- /dev/null +++ b/gemfiles/ruby_3.3_rails7.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.0.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_rails7.gemfile.lock b/gemfiles/ruby_3.3_rails7.gemfile.lock new file mode 100644 index 00000000000..f9b6c790837 --- /dev/null +++ b/gemfiles/ruby_3.3_rails7.gemfile.lock @@ -0,0 +1,318 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.8.4) + actionpack (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.0) + actionpack (7.0.8.4) + actionview (= 7.0.8.4) + activesupport (= 7.0.8.4) + rack (~> 2.0, >= 2.2.4) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.8.4) + actionpack (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.8.4) + activesupport (= 7.0.8.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.3.6) + activemodel (7.0.8.4) + activesupport (= 7.0.8.4) + activerecord (7.0.8.4) + activemodel (= 7.0.8.4) + activesupport (= 7.0.8.4) + activestorage (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activesupport (= 7.0.8.4) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.8.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (7.0.8.4) + actioncable (= 7.0.8.4) + actionmailbox (= 7.0.8.4) + actionmailer (= 7.0.8.4) + actionpack (= 7.0.8.4) + actiontext (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activemodel (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + bundler (>= 1.15.0) + railties (= 7.0.8.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + method_source + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 7.0.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_rails71.gemfile b/gemfiles/ruby_3.3_rails71.gemfile new file mode 100644 index 00000000000..b5555633a60 --- /dev/null +++ b/gemfiles/ruby_3.3_rails71.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.1.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_rails71.gemfile.lock b/gemfiles/ruby_3.3_rails71.gemfile.lock new file mode 100644 index 00000000000..26cb36be8c4 --- /dev/null +++ b/gemfiles/ruby_3.3_rails71.gemfile.lock @@ -0,0 +1,348 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + zeitwerk (~> 2.6) + actionmailbox (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.1.3.4) + actionpack (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.2) + actionpack (7.1.3.4) + actionview (= 7.1.3.4) + activesupport (= 7.1.3.4) + nokogiri (>= 1.8.5) + racc + rack (>= 2.2.4) + rack-session (>= 1.0.1) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + actiontext (7.1.3.4) + actionpack (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.1.3.4) + activesupport (= 7.1.3.4) + builder (~> 3.1) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activejob (7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.3.6) + activemodel (7.1.3.4) + activesupport (= 7.1.3.4) + activerecord (7.1.3.4) + activemodel (= 7.1.3.4) + activesupport (= 7.1.3.4) + timeout (>= 0.4.0) + activestorage (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activesupport (= 7.1.3.4) + marcel (~> 1.0) + activesupport (7.1.3.4) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + drb (2.2.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + io-console (0.7.2) + irb (1.14.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + psych (5.1.2) + stringio + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.7) + rack-session (2.0.0) + rack (>= 3.0.0) + rack-test (2.1.0) + rack (>= 1.3) + rackup (2.1.0) + rack (>= 3) + webrick (~> 1.8) + rails (7.1.3.4) + actioncable (= 7.1.3.4) + actionmailbox (= 7.1.3.4) + actionmailer (= 7.1.3.4) + actionpack (= 7.1.3.4) + actiontext (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activemodel (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + bundler (>= 1.15.0) + railties (= 7.1.3.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + irb + rackup (>= 1.0.0) + rake (>= 12.2) + thor (~> 1.0, >= 1.2.2) + zeitwerk (~> 2.6) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rdoc (6.7.0) + psych (>= 4.0.0) + regexp_parser (2.9.2) + reline (0.5.9) + io-console (~> 0.5) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stringio (3.1.1) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 7.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_redis_3.gemfile b/gemfiles/ruby_3.3_redis_3.gemfile index b192548b1f2..f075759c264 100644 --- a/gemfiles/ruby_3.3_redis_3.gemfile +++ b/gemfiles/ruby_3.3_redis_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_redis_3.gemfile.lock b/gemfiles/ruby_3.3_redis_3.gemfile.lock index cb4dc3eb553..00104e84705 100644 --- a/gemfiles/ruby_3.3_redis_3.gemfile.lock +++ b/gemfiles/ruby_3.3_redis_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -49,8 +48,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -133,7 +132,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -143,7 +141,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -174,7 +171,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_redis_4.gemfile b/gemfiles/ruby_3.3_redis_4.gemfile index 568e746e55f..dc3e2d2b6cb 100644 --- a/gemfiles/ruby_3.3_redis_4.gemfile +++ b/gemfiles/ruby_3.3_redis_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_redis_4.gemfile.lock b/gemfiles/ruby_3.3_redis_4.gemfile.lock index 431c065f091..5585a731bbd 100644 --- a/gemfiles/ruby_3.3_redis_4.gemfile.lock +++ b/gemfiles/ruby_3.3_redis_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -49,8 +48,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -133,7 +132,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -143,7 +141,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -174,7 +171,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_redis_5.gemfile b/gemfiles/ruby_3.3_redis_5.gemfile index e3a505288a3..3bbc9ad0bed 100644 --- a/gemfiles/ruby_3.3_redis_5.gemfile +++ b/gemfiles/ruby_3.3_redis_5.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_redis_5.gemfile.lock b/gemfiles/ruby_3.3_redis_5.gemfile.lock index 37dbd789de9..71a3f630ec9 100644 --- a/gemfiles/ruby_3.3_redis_5.gemfile.lock +++ b/gemfiles/ruby_3.3_redis_5.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) connection_pool (2.4.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -50,8 +49,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -137,7 +136,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -147,7 +145,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -178,7 +175,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_relational_db.gemfile b/gemfiles/ruby_3.3_relational_db.gemfile index 2171adea069..11a7788b868 100644 --- a/gemfiles/ruby_3.3_relational_db.gemfile +++ b/gemfiles/ruby_3.3_relational_db.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -42,7 +40,7 @@ gem "makara", ">= 0.6.0.pre" gem "mysql2", ">= 0.5.3", platform: :ruby gem "pg", platform: :ruby gem "sqlite3", ">= 1.4.2", platform: :ruby -gem "sequel", "~> 5.54.0" +gem "sequel" gem "trilogy" group :check do diff --git a/gemfiles/ruby_3.3_relational_db.gemfile.lock b/gemfiles/ruby_3.3_relational_db.gemfile.lock index 75a30f3686a..5f152a218fc 100644 --- a/gemfiles/ruby_3.3_relational_db.gemfile.lock +++ b/gemfiles/ruby_3.3_relational_db.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -39,15 +39,15 @@ GEM benchmark-ips (2.12.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) + bigdecimal (3.1.8) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) delayed_job (4.1.11) activesupport (>= 3.0, < 8.0) @@ -66,8 +66,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -143,7 +143,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) - sequel (5.54.0) + sequel (5.83.1) + bigdecimal simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -163,7 +164,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -174,7 +174,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -204,7 +203,7 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) - sequel (~> 5.54.0) + sequel simplecov! simplecov-cobertura (~> 2.1.0) sqlite3 (>= 1.4.2) @@ -212,7 +211,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_resque2_redis3.gemfile b/gemfiles/ruby_3.3_resque2_redis3.gemfile index 8e7c468d5c5..ba9a57b22b9 100644 --- a/gemfiles/ruby_3.3_resque2_redis3.gemfile +++ b/gemfiles/ruby_3.3_resque2_redis3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_resque2_redis3.gemfile.lock b/gemfiles/ruby_3.3_resque2_redis3.gemfile.lock index ca687604c4d..321a0341fa4 100644 --- a/gemfiles/ruby_3.3_resque2_redis3.gemfile.lock +++ b/gemfiles/ruby_3.3_resque2_redis3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,13 +31,12 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -49,8 +48,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -154,7 +153,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -164,7 +162,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -196,7 +193,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_resque2_redis4.gemfile b/gemfiles/ruby_3.3_resque2_redis4.gemfile index 9edb58f733c..d56e77f5a5a 100644 --- a/gemfiles/ruby_3.3_resque2_redis4.gemfile +++ b/gemfiles/ruby_3.3_resque2_redis4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_resque2_redis4.gemfile.lock b/gemfiles/ruby_3.3_resque2_redis4.gemfile.lock index cb1a8aa5808..d34612a2945 100644 --- a/gemfiles/ruby_3.3_resque2_redis4.gemfile.lock +++ b/gemfiles/ruby_3.3_resque2_redis4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -31,14 +31,13 @@ GEM memory_profiler (~> 0.9) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) connection_pool (2.4.0) crack (0.4.5) rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.1.0) diff-lcs (1.5.0) docile (1.4.0) @@ -50,8 +49,8 @@ GEM json (2.6.3) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -158,7 +157,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.34) PLATFORMS aarch64-linux @@ -168,7 +166,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -200,7 +197,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_sinatra_2.gemfile b/gemfiles/ruby_3.3_sinatra_2.gemfile index 8f6b792698f..d3bb1ac1eb5 100644 --- a/gemfiles/ruby_3.3_sinatra_2.gemfile +++ b/gemfiles/ruby_3.3_sinatra_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_sinatra_2.gemfile.lock b/gemfiles/ruby_3.3_sinatra_2.gemfile.lock index 2c94ef26f3b..f045e4568ee 100644 --- a/gemfiles/ruby_3.3_sinatra_2.gemfile.lock +++ b/gemfiles/ruby_3.3_sinatra_2.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +33,13 @@ GEM bigdecimal (3.1.7) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -53,8 +52,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -155,7 +154,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -165,7 +163,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -198,7 +195,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_sinatra_3.gemfile b/gemfiles/ruby_3.3_sinatra_3.gemfile index d522a8127f6..019c7714d7a 100644 --- a/gemfiles/ruby_3.3_sinatra_3.gemfile +++ b/gemfiles/ruby_3.3_sinatra_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_sinatra_3.gemfile.lock b/gemfiles/ruby_3.3_sinatra_3.gemfile.lock index 29713002550..3a6a2272423 100644 --- a/gemfiles/ruby_3.3_sinatra_3.gemfile.lock +++ b/gemfiles/ruby_3.3_sinatra_3.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,14 +34,13 @@ GEM bigdecimal (3.1.7) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -54,8 +53,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -157,7 +156,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -167,7 +165,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -200,7 +197,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_sinatra_4.gemfile b/gemfiles/ruby_3.3_sinatra_4.gemfile index a6572fedbaa..3fa07ea81b7 100644 --- a/gemfiles/ruby_3.3_sinatra_4.gemfile +++ b/gemfiles/ruby_3.3_sinatra_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -27,7 +26,6 @@ gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false diff --git a/gemfiles/ruby_3.3_sinatra_4.gemfile.lock b/gemfiles/ruby_3.3_sinatra_4.gemfile.lock index 7567f9c69dd..bd7f990a369 100644 --- a/gemfiles/ruby_3.3_sinatra_4.gemfile.lock +++ b/gemfiles/ruby_3.3_sinatra_4.gemfile.lock @@ -11,9 +11,9 @@ GIT PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,14 +34,13 @@ GEM bigdecimal (3.1.7) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.2.4) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.2.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -54,8 +53,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -160,7 +159,6 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -170,7 +168,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -203,7 +200,6 @@ DEPENDENCIES warning (~> 1) webmock (>= 3.10.0) webrick (>= 1.7.0) - yard (~> 0.9) BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.3_stripe_10.gemfile b/gemfiles/ruby_3.3_stripe_10.gemfile new file mode 100644 index 00000000000..425478e78b2 --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_10.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 10" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_stripe_10.gemfile.lock b/gemfiles/ruby_3.3_stripe_10.gemfile.lock new file mode 100644 index 00000000000..e1f8e20a85b --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_10.gemfile.lock @@ -0,0 +1,183 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (10.15.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 10) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_stripe_11.gemfile b/gemfiles/ruby_3.3_stripe_11.gemfile new file mode 100644 index 00000000000..b8b49621a49 --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_11.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 11" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_stripe_11.gemfile.lock b/gemfiles/ruby_3.3_stripe_11.gemfile.lock new file mode 100644 index 00000000000..2c77873aab0 --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_11.gemfile.lock @@ -0,0 +1,183 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (11.7.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 11) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_stripe_12.gemfile b/gemfiles/ruby_3.3_stripe_12.gemfile new file mode 100644 index 00000000000..175d5f415ec --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_12.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 12" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_stripe_12.gemfile.lock b/gemfiles/ruby_3.3_stripe_12.gemfile.lock new file mode 100644 index 00000000000..4dfb7b175c5 --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_12.gemfile.lock @@ -0,0 +1,183 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (12.5.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 12) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_stripe_7.gemfile b/gemfiles/ruby_3.3_stripe_7.gemfile new file mode 100644 index 00000000000..b47fdc17a19 --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_7.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 7" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_stripe_7.gemfile.lock b/gemfiles/ruby_3.3_stripe_7.gemfile.lock new file mode 100644 index 00000000000..0ec9783f7c4 --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_7.gemfile.lock @@ -0,0 +1,183 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (7.1.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 7) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_stripe_8.gemfile b/gemfiles/ruby_3.3_stripe_8.gemfile new file mode 100644 index 00000000000..a603cf0b931 --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_8.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 8" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_stripe_8.gemfile.lock b/gemfiles/ruby_3.3_stripe_8.gemfile.lock new file mode 100644 index 00000000000..1607f6b5c29 --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_8.gemfile.lock @@ -0,0 +1,183 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (8.7.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 8) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_stripe_9.gemfile b/gemfiles/ruby_3.3_stripe_9.gemfile new file mode 100644 index 00000000000..c3e5f6f91f1 --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_9.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 9" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_stripe_9.gemfile.lock b/gemfiles/ruby_3.3_stripe_9.gemfile.lock new file mode 100644 index 00000000000..e836ea1a078 --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_9.gemfile.lock @@ -0,0 +1,183 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (9.4.0) + strscan (3.1.0) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 9) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_stripe_latest.gemfile b/gemfiles/ruby_3.3_stripe_latest.gemfile new file mode 100644 index 00000000000..8a1ea441f5b --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_stripe_latest.gemfile.lock b/gemfiles/ruby_3.3_stripe_latest.gemfile.lock new file mode 100644 index 00000000000..39ec7efb21f --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_latest.gemfile.lock @@ -0,0 +1,181 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (13.0.1) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_stripe_min.gemfile b/gemfiles/ruby_3.3_stripe_min.gemfile new file mode 100644 index 00000000000..014fd636730 --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_min.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "= 5.15.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_stripe_min.gemfile.lock b/gemfiles/ruby_3.3_stripe_min.gemfile.lock new file mode 100644 index 00000000000..b85f3846385 --- /dev/null +++ b/gemfiles/ruby_3.3_stripe_min.gemfile.lock @@ -0,0 +1,181 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.5-aarch64-linux) + google-protobuf (3.25.5-x86_64-linux) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + msgpack (1.7.2) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (5.15.0) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (= 5.15.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_activesupport.gemfile b/gemfiles/ruby_3.4_activesupport.gemfile index f754ab55dd0..59bb4dc9878 100644 --- a/gemfiles/ruby_3.4_activesupport.gemfile +++ b/gemfiles/ruby_3.4_activesupport.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -45,7 +43,7 @@ gem "racecar", ">= 0.3.5" gem "ruby-kafka", ">= 0.7.10" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_activesupport.gemfile.lock b/gemfiles/ruby_3.4_activesupport.gemfile.lock index e0f16f377dd..b1366db00fb 100644 --- a/gemfiles/ruby_3.4_activesupport.gemfile.lock +++ b/gemfiles/ruby_3.4_activesupport.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -78,7 +85,7 @@ GEM bigdecimal rexml crass (1.0.6) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) digest-crc (0.6.5) @@ -123,8 +130,8 @@ GEM addressable (>= 2.4) jsonapi-renderer (0.2.2) king_konf (1.0.1) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -254,6 +261,8 @@ GEM digest-crc ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -270,8 +279,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) zeitwerk (2.6.16) PLATFORMS @@ -286,7 +293,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -315,12 +321,12 @@ DEPENDENCIES rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) ruby-kafka (>= 0.7.10) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_aws.gemfile b/gemfiles/ruby_3.4_aws.gemfile index 18a9d279ca2..506f4e36d4b 100644 --- a/gemfiles/ruby_3.4_aws.gemfile +++ b/gemfiles/ruby_3.4_aws.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -39,7 +37,7 @@ gem "aws-sdk" gem "shoryuken" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_aws.gemfile.lock b/gemfiles/ruby_3.4_aws.gemfile.lock index b87925be6e9..60284a86503 100644 --- a/gemfiles/ruby_3.4_aws.gemfile.lock +++ b/gemfiles/ruby_3.4_aws.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -1581,14 +1588,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -1601,15 +1607,19 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -1673,6 +1683,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri shoryuken (6.2.1) aws-sdk-core (>= 2) concurrent-ruby @@ -1690,8 +1702,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -1702,7 +1712,6 @@ DEPENDENCIES aws-sdk benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -1727,13 +1736,13 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) shoryuken simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_contrib.gemfile b/gemfiles/ruby_3.4_contrib.gemfile index e8f0476f4c4..127c7833508 100644 --- a/gemfiles/ruby_3.4_contrib.gemfile +++ b/gemfiles/ruby_3.4_contrib.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -48,7 +46,7 @@ gem "sucker_punch" gem "que", ">= 1.0.0" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_contrib.gemfile.lock b/gemfiles/ruby_3.4_contrib.gemfile.lock index ccfab3b7163..e3b8f1471e7 100644 --- a/gemfiles/ruby_3.4_contrib.gemfile.lock +++ b/gemfiles/ruby_3.4_contrib.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -36,7 +43,6 @@ GEM binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) bson (4.15.0) - builder (3.3.0) bunny (2.22.0) amq-protocol (~> 2.3, >= 2.3.1) sorted_set (~> 1, >= 1.0.2) @@ -48,7 +54,7 @@ GEM bigdecimal rexml dalli (3.2.8) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -65,14 +71,15 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) mongo (2.14.1) bson (>= 4.8.2, < 5.0.0) mono_logger (1.1.2) @@ -80,6 +87,9 @@ GEM multi_json (1.15.0) mustermann (3.0.0) ruby2_keywords (~> 0.0.1) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -167,6 +177,8 @@ GEM rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) + ruby_memcheck (3.0.0) + nokogiri semantic_logger (4.15.0) concurrent-ruby (~> 1.0) serverengine (2.1.1) @@ -209,8 +221,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -220,7 +230,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (>= 3.0.0) @@ -252,6 +261,7 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) semantic_logger (~> 4.0) sidekiq (~> 7) simplecov! @@ -260,8 +270,7 @@ DEPENDENCIES sucker_punch warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_contrib_old.gemfile b/gemfiles/ruby_3.4_contrib_old.gemfile index 742cbf8c97a..972db18791e 100644 --- a/gemfiles/ruby_3.4_contrib_old.gemfile +++ b/gemfiles/ruby_3.4_contrib_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -41,7 +39,7 @@ gem "qless", "0.12.0" gem "racc" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_contrib_old.gemfile.lock b/gemfiles/ruby_3.4_contrib_old.gemfile.lock index 6c7db3b9d44..495247f0e94 100644 --- a/gemfiles/ruby_3.4_contrib_old.gemfile.lock +++ b/gemfiles/ruby_3.4_contrib_old.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -36,7 +43,6 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) @@ -45,7 +51,7 @@ GEM rexml daemons (1.4.1) dalli (2.7.11) - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -63,8 +69,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -75,10 +81,14 @@ GEM atomic (~> 1.0) avl_tree (~> 1.2.0) hitimes (~> 1.1) + mini_portile2 (2.8.7) msgpack (1.7.2) multipart-post (2.4.1) mustermann (1.1.2) ruby2_keywords (~> 0.0.1) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -161,6 +171,8 @@ GEM rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) + ruby_memcheck (3.0.0) + nokogiri rusage (0.2.0) sentry-raven (0.15.6) faraday (>= 0.7.6) @@ -190,8 +202,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -201,7 +211,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby dalli (< 3.0.0) @@ -230,12 +239,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_core_old.gemfile b/gemfiles/ruby_3.4_core_old.gemfile index 4f74cbee678..58438f9d976 100644 --- a/gemfiles/ruby_3.4_core_old.gemfile +++ b/gemfiles/ruby_3.4_core_old.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -37,7 +35,7 @@ gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_core_old.gemfile.lock b/gemfiles/ruby_3.4_core_old.gemfile.lock index f45d098d35d..e25fc39cf44 100644 --- a/gemfiles/ruby_3.4_core_old.gemfile.lock +++ b/gemfiles/ruby_3.4_core_old.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +40,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -52,15 +58,19 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -124,6 +134,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -137,8 +149,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -148,7 +158,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -173,12 +182,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_elasticsearch_7.gemfile b/gemfiles/ruby_3.4_elasticsearch_7.gemfile index 0a83db4600b..3439098a6df 100644 --- a/gemfiles/ruby_3.4_elasticsearch_7.gemfile +++ b/gemfiles/ruby_3.4_elasticsearch_7.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -38,7 +36,7 @@ gem "ffi", "~> 1.16.3", require: false gem "elasticsearch", "~> 7" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_elasticsearch_7.gemfile.lock b/gemfiles/ruby_3.4_elasticsearch_7.gemfile.lock index a1586cd4ced..bd63c221d99 100644 --- a/gemfiles/ruby_3.4_elasticsearch_7.gemfile.lock +++ b/gemfiles/ruby_3.4_elasticsearch_7.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,14 +41,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -66,18 +72,22 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) multi_json (1.15.0) net-http (0.4.1) uri + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -141,6 +151,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -155,8 +167,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -166,7 +176,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -192,12 +201,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_elasticsearch_8.gemfile b/gemfiles/ruby_3.4_elasticsearch_8.gemfile index c3569fd1935..2dac1c13c1e 100644 --- a/gemfiles/ruby_3.4_elasticsearch_8.gemfile +++ b/gemfiles/ruby_3.4_elasticsearch_8.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -38,7 +36,7 @@ gem "ffi", "~> 1.16.3", require: false gem "elasticsearch", "~> 8" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_elasticsearch_8.gemfile.lock b/gemfiles/ruby_3.4_elasticsearch_8.gemfile.lock index 80e9dc2c538..cb7838eba44 100644 --- a/gemfiles/ruby_3.4_elasticsearch_8.gemfile.lock +++ b/gemfiles/ruby_3.4_elasticsearch_8.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +40,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -64,18 +70,22 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) multi_json (1.15.0) net-http (0.4.1) uri + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -139,6 +149,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -153,8 +165,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -164,7 +174,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -190,12 +199,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_elasticsearch_latest.gemfile b/gemfiles/ruby_3.4_elasticsearch_latest.gemfile new file mode 100644 index 00000000000..1a5cd47e1ba --- /dev/null +++ b/gemfiles/ruby_3.4_elasticsearch_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "elasticsearch" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_elasticsearch_latest.gemfile.lock b/gemfiles/ruby_3.4_elasticsearch_latest.gemfile.lock new file mode 100644 index 00000000000..fb750e78d3a --- /dev/null +++ b/gemfiles/ruby_3.4_elasticsearch_latest.gemfile.lock @@ -0,0 +1,211 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + elastic-transport (8.3.5) + faraday (< 3) + multi_json + elasticsearch (8.15.0) + elastic-transport (~> 8.3) + elasticsearch-api (= 8.15.0) + elasticsearch-api (8.15.0) + multi_json + extlz4 (0.3.4) + faraday (2.12.0) + faraday-net_http (>= 2.0, < 3.4) + json + logger + faraday-net_http (3.3.0) + net-http + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + logger (1.6.1) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_portile2 (2.8.7) + msgpack (1.7.2) + multi_json (1.15.0) + net-http (0.4.1) + uri + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + uri (0.13.1) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + elasticsearch + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_graphql_1.13.gemfile b/gemfiles/ruby_3.4_graphql_1.13.gemfile index 5dab478d1ae..97a64449dca 100644 --- a/gemfiles/ruby_3.4_graphql_1.13.gemfile +++ b/gemfiles/ruby_3.4_graphql_1.13.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,10 +33,14 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 1.13.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" +gem "mutex_m", ">= 0.1.0" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_graphql_1.13.gemfile.lock b/gemfiles/ruby_3.4_graphql_1.13.gemfile.lock index c9459e8903e..cc235be6ca1 100644 --- a/gemfiles/ruby_3.4_graphql_1.13.gemfile.lock +++ b/gemfiles/ruby_3.4_graphql_1.13.gemfile.lock @@ -8,18 +8,84 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) appraisal (2.4.1) @@ -41,29 +107,66 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.3) graphql (1.13.23) base64 hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.1.0) + mini_mime (1.1.5) + mini_portile2 (2.8.7) + minitest (5.24.1) msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + nio4r (2.7.3) + nokogiri (1.16.6) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -78,11 +181,44 @@ GEM pry (~> 0.13) public_suffix (6.0.0) racc (1.8.0) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.2.1) rake-compiler (1.2.7) rake regexp_parser (2.9.2) + request_store (1.7.0) + rack (>= 1.4) rexml (3.3.1) strscan rspec (3.13.0) @@ -127,21 +263,36 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.1) thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.4.0) webmock (3.23.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -151,7 +302,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -161,11 +311,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 1.13.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) + mutex_m (>= 0.1.0) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -177,12 +330,13 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_graphql_2.0.gemfile b/gemfiles/ruby_3.4_graphql_2.0.gemfile index 8307e82e015..8b7df4199e5 100644 --- a/gemfiles/ruby_3.4_graphql_2.0.gemfile +++ b/gemfiles/ruby_3.4_graphql_2.0.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,10 +33,14 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.0.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" +gem "mutex_m", ">= 0.1.0" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_graphql_2.0.gemfile.lock b/gemfiles/ruby_3.4_graphql_2.0.gemfile.lock index f6da8ea65d6..b4274b2d8bc 100644 --- a/gemfiles/ruby_3.4_graphql_2.0.gemfile.lock +++ b/gemfiles/ruby_3.4_graphql_2.0.gemfile.lock @@ -8,18 +8,84 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) appraisal (2.4.1) @@ -41,29 +107,66 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.3) graphql (2.0.31) base64 hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.1.0) + mini_mime (1.1.5) + mini_portile2 (2.8.7) + minitest (5.24.1) msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + nio4r (2.7.3) + nokogiri (1.16.6) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -78,11 +181,44 @@ GEM pry (~> 0.13) public_suffix (6.0.0) racc (1.8.0) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.2.1) rake-compiler (1.2.7) rake regexp_parser (2.9.2) + request_store (1.7.0) + rack (>= 1.4) rexml (3.3.1) strscan rspec (3.13.0) @@ -127,21 +263,36 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.1) thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.4.0) webmock (3.23.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -151,7 +302,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -161,11 +311,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.0.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) + mutex_m (>= 0.1.0) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -177,12 +330,13 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_graphql_2.1.gemfile b/gemfiles/ruby_3.4_graphql_2.1.gemfile index 7c2295e3cc3..d014bdf8dce 100644 --- a/gemfiles/ruby_3.4_graphql_2.1.gemfile +++ b/gemfiles/ruby_3.4_graphql_2.1.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,10 +33,14 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.1.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" +gem "mutex_m", ">= 0.1.0" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_graphql_2.1.gemfile.lock b/gemfiles/ruby_3.4_graphql_2.1.gemfile.lock index 7e278b824d8..b05f83f5082 100644 --- a/gemfiles/ruby_3.4_graphql_2.1.gemfile.lock +++ b/gemfiles/ruby_3.4_graphql_2.1.gemfile.lock @@ -8,18 +8,84 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) appraisal (2.4.1) @@ -27,6 +93,7 @@ GEM rake thor (>= 0.14.0) ast (2.4.2) + base64 (0.2.0) benchmark-ips (2.13.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -40,29 +107,66 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.3) graphql (2.1.12) racc (~> 1.4) hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.1.0) + mini_mime (1.1.5) + mini_portile2 (2.8.7) + minitest (5.24.1) msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + nio4r (2.7.3) + nokogiri (1.16.6) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -77,11 +181,44 @@ GEM pry (~> 0.13) public_suffix (6.0.0) racc (1.8.0) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.2.1) rake-compiler (1.2.7) rake regexp_parser (2.9.2) + request_store (1.7.0) + rack (>= 1.4) rexml (3.3.1) strscan rspec (3.13.0) @@ -126,21 +263,36 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.1) thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.4.0) webmock (3.23.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -150,7 +302,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -160,11 +311,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.1.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) + mutex_m (>= 0.1.0) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -176,12 +330,13 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_graphql_2.2.gemfile b/gemfiles/ruby_3.4_graphql_2.2.gemfile index 8e7df05bcdb..ea36f6e0787 100644 --- a/gemfiles/ruby_3.4_graphql_2.2.gemfile +++ b/gemfiles/ruby_3.4_graphql_2.2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -35,10 +33,14 @@ gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" gem "graphql", "~> 2.2.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" +gem "mutex_m", ">= 0.1.0" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_graphql_2.2.gemfile.lock b/gemfiles/ruby_3.4_graphql_2.2.gemfile.lock index 2a9b9fc1e1e..9ee654099a2 100644 --- a/gemfiles/ruby_3.4_graphql_2.2.gemfile.lock +++ b/gemfiles/ruby_3.4_graphql_2.2.gemfile.lock @@ -8,18 +8,84 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack GEM remote: https://rubygems.org/ specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) appraisal (2.4.1) @@ -41,29 +107,66 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) dogstatsd-ruby (5.6.1) + erubi (1.13.0) extlz4 (0.3.4) ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) google-protobuf (3.25.3) graphql (2.2.15) base64 hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) memory_profiler (0.9.14) method_source (1.1.0) + mini_mime (1.1.5) + mini_portile2 (2.8.7) + minitest (5.24.1) msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + nio4r (2.7.3) + nokogiri (1.16.6) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -78,11 +181,44 @@ GEM pry (~> 0.13) public_suffix (6.0.0) racc (1.8.0) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) rainbow (3.1.1) rake (13.2.1) rake-compiler (1.2.7) rake regexp_parser (2.9.2) + request_store (1.7.0) + rack (>= 1.4) rexml (3.3.1) strscan rspec (3.13.0) @@ -127,21 +263,36 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) strscan (3.1.1) thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) warning (1.4.0) webmock (3.23.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) PLATFORMS aarch64-linux @@ -151,7 +302,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -161,11 +311,14 @@ DEPENDENCIES google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) graphql (~> 2.2.0) json-schema (< 3) + lograge (~> 0.11) memory_profiler (~> 0.9) + mutex_m (>= 0.1.0) os (~> 1.1) pimpmychangelog (>= 0.1.2) pry pry-stack_explorer + rails (~> 6.1.0) rake (>= 10.5) rake-compiler (~> 1.1, >= 1.1.1) rexml (>= 3.2.7) @@ -177,12 +330,13 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) + sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_graphql_2.3.gemfile b/gemfiles/ruby_3.4_graphql_2.3.gemfile new file mode 100644 index 00000000000..1af7e24a7bc --- /dev/null +++ b/gemfiles/ruby_3.4_graphql_2.3.gemfile @@ -0,0 +1,50 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 6.1.0" +gem "graphql", "~> 2.3.0" +gem "sprockets", "< 4" +gem "lograge", "~> 0.11" +gem "mutex_m", ">= 0.1.0" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_graphql_2.3.gemfile.lock b/gemfiles/ruby_3.4_graphql_2.3.gemfile.lock new file mode 100644 index 00000000000..88ade338a47 --- /dev/null +++ b/gemfiles/ruby_3.4_graphql_2.3.gemfile.lock @@ -0,0 +1,342 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (>= 2.7.1) + actionmailer (6.1.7.8) + actionpack (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activesupport (= 6.1.7.8) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.8) + actionview (= 6.1.7.8) + activesupport (= 6.1.7.8) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.8) + actionpack (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + nokogiri (>= 1.8.5) + actionview (6.1.7.8) + activesupport (= 6.1.7.8) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.8) + activesupport (= 6.1.7.8) + globalid (>= 0.3.6) + activemodel (6.1.7.8) + activesupport (= 6.1.7.8) + activerecord (6.1.7.8) + activemodel (= 6.1.7.8) + activesupport (= 6.1.7.8) + activestorage (6.1.7.8) + actionpack (= 6.1.7.8) + activejob (= 6.1.7.8) + activerecord (= 6.1.7.8) + activesupport (= 6.1.7.8) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.3) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.3) + graphql (2.3.7) + base64 + hashdiff (1.1.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + lograge (0.14.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + mini_portile2 (2.8.7) + minitest (5.24.1) + msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + nio4r (2.7.3) + nokogiri (1.16.6) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.25.1) + parser (3.3.3.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.0) + racc (1.8.0) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.8) + actioncable (= 6.1.7.8) + actionmailbox (= 6.1.7.8) + actionmailer (= 6.1.7.8) + actionpack (= 6.1.7.8) + actiontext (= 6.1.7.8) + actionview (= 6.1.7.8) + activejob (= 6.1.7.8) + activemodel (= 6.1.7.8) + activerecord (= 6.1.7.8) + activestorage (= 6.1.7.8) + activesupport (= 6.1.7.8) + bundler (>= 1.15.0) + railties (= 6.1.7.8) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.8) + actionpack (= 6.1.7.8) + activesupport (= 6.1.7.8) + method_source + rake (>= 12.2) + thor (~> 1.0) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + request_store (1.7.0) + rack (>= 1.4) + rexml (3.3.1) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sprockets (3.7.3) + base64 + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.5.1) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) + strscan (3.1.1) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.16) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + graphql (~> 2.3.0) + json-schema (< 3) + lograge (~> 0.11) + memory_profiler (~> 0.9) + mutex_m (>= 0.1.0) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 6.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + sprockets (< 4) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_http.gemfile b/gemfiles/ruby_3.4_http.gemfile index 52eb5867ce9..dd9ca2342f9 100644 --- a/gemfiles/ruby_3.4_http.gemfile +++ b/gemfiles/ruby_3.4_http.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -41,11 +39,10 @@ gem "faraday" gem "http" gem "httpclient" gem "rest-client" -gem "stripe" gem "typhoeus" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_http.gemfile.lock b/gemfiles/ruby_3.4_http.gemfile.lock index 9749c1da26f..1bca7452a47 100644 --- a/gemfiles/ruby_3.4_http.gemfile.lock +++ b/gemfiles/ruby_3.4_http.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,14 +41,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -75,8 +81,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -89,10 +95,14 @@ GEM mime-types (3.5.2) mime-types-data (~> 3.2015) mime-types-data (3.2024.0604) + mini_portile2 (2.8.7) msgpack (1.7.2) net-http (0.4.1) uri netrc (0.11.0) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -161,12 +171,13 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) - stripe (12.0.0) strscan (3.1.1) thor (1.3.1) typhoeus (1.4.1) @@ -178,8 +189,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -189,7 +198,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -220,14 +228,13 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) - stripe typhoeus warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_opensearch_2.gemfile b/gemfiles/ruby_3.4_opensearch_2.gemfile index ff64c088fee..d85979a9451 100644 --- a/gemfiles/ruby_3.4_opensearch_2.gemfile +++ b/gemfiles/ruby_3.4_opensearch_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -38,7 +36,7 @@ gem "ffi", "~> 1.16.3", require: false gem "opensearch-ruby", "~> 2" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_opensearch_2.gemfile.lock b/gemfiles/ruby_3.4_opensearch_2.gemfile.lock index c6783bb0337..4a66653d232 100644 --- a/gemfiles/ruby_3.4_opensearch_2.gemfile.lock +++ b/gemfiles/ruby_3.4_opensearch_2.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +40,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -56,18 +62,22 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) multi_json (1.15.0) net-http (0.4.1) uri + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) opensearch-api (2.2.0) multi_json opensearch-ruby (2.1.0) @@ -139,6 +149,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -153,8 +165,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -164,7 +174,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -190,12 +199,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_opensearch_3.gemfile b/gemfiles/ruby_3.4_opensearch_3.gemfile index 23a1083cb42..b1161e8261a 100644 --- a/gemfiles/ruby_3.4_opensearch_3.gemfile +++ b/gemfiles/ruby_3.4_opensearch_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -38,7 +36,7 @@ gem "ffi", "~> 1.16.3", require: false gem "opensearch-ruby", "~> 3" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_opensearch_3.gemfile.lock b/gemfiles/ruby_3.4_opensearch_3.gemfile.lock index 8779cf6ff13..7fd65f51a4b 100644 --- a/gemfiles/ruby_3.4_opensearch_3.gemfile.lock +++ b/gemfiles/ruby_3.4_opensearch_3.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +40,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -56,18 +62,22 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) multi_json (1.15.0) net-http (0.4.1) uri + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) opensearch-ruby (3.3.0) faraday (>= 1.0, < 3) multi_json (>= 1.0) @@ -134,6 +144,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -148,8 +160,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -159,7 +169,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -185,12 +194,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_opensearch_latest.gemfile b/gemfiles/ruby_3.4_opensearch_latest.gemfile new file mode 100644 index 00000000000..f49f2c0ebca --- /dev/null +++ b/gemfiles/ruby_3.4_opensearch_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "opensearch-ruby" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_opensearch_latest.gemfile.lock b/gemfiles/ruby_3.4_opensearch_latest.gemfile.lock new file mode 100644 index 00000000000..9a0dd0d91e4 --- /dev/null +++ b/gemfiles/ruby_3.4_opensearch_latest.gemfile.lock @@ -0,0 +1,206 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + faraday (2.12.0) + faraday-net_http (>= 2.0, < 3.4) + json + logger + faraday-net_http (3.3.0) + net-http + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + logger (1.6.1) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_portile2 (2.8.7) + msgpack (1.7.2) + multi_json (1.15.0) + net-http (0.4.1) + uri + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + opensearch-ruby (3.4.0) + faraday (>= 1.0, < 3) + multi_json (>= 1.0) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + uri (0.13.1) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opensearch-ruby + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_opentelemetry.gemfile b/gemfiles/ruby_3.4_opentelemetry.gemfile index a583eb93c65..eb012a97fc2 100644 --- a/gemfiles/ruby_3.4_opentelemetry.gemfile +++ b/gemfiles/ruby_3.4_opentelemetry.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -38,7 +36,7 @@ gem "ffi", "~> 1.16.3", require: false gem "opentelemetry-sdk", "~> 1.1" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_opentelemetry.gemfile.lock b/gemfiles/ruby_3.4_opentelemetry.gemfile.lock index 17aee662836..fa8e0f23903 100644 --- a/gemfiles/ruby_3.4_opentelemetry.gemfile.lock +++ b/gemfiles/ruby_3.4_opentelemetry.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +40,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -52,15 +58,19 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) opentelemetry-api (1.2.5) opentelemetry-common (0.21.0) opentelemetry-api (~> 1.0) @@ -136,6 +146,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -149,8 +161,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -160,7 +170,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -186,12 +195,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_opentelemetry_otlp.gemfile b/gemfiles/ruby_3.4_opentelemetry_otlp.gemfile new file mode 100644 index 00000000000..26d9038de6a --- /dev/null +++ b/gemfiles/ruby_3.4_opentelemetry_otlp.gemfile @@ -0,0 +1,47 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "opentelemetry-sdk", "~> 1.1" +gem "opentelemetry-exporter-otlp" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_opentelemetry_otlp.gemfile.lock b/gemfiles/ruby_3.4_opentelemetry_otlp.gemfile.lock new file mode 100644 index 00000000000..cda3e91ab99 --- /dev/null +++ b/gemfiles/ruby_3.4_opentelemetry_otlp.gemfile.lock @@ -0,0 +1,214 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.2) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.5) + googleapis-common-protos-types (1.16.0) + google-protobuf (>= 3.18, < 5.a) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_portile2 (2.8.7) + msgpack (1.7.3) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + opentelemetry-api (1.4.0) + opentelemetry-common (0.21.0) + opentelemetry-api (~> 1.0) + opentelemetry-exporter-otlp (0.29.0) + google-protobuf (>= 3.18) + googleapis-common-protos-types (~> 1.3) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.20) + opentelemetry-sdk (~> 1.2) + opentelemetry-semantic_conventions + opentelemetry-registry (0.3.1) + opentelemetry-api (~> 1.1) + opentelemetry-sdk (1.5.0) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.20) + opentelemetry-registry (~> 0.2) + opentelemetry-semantic_conventions + opentelemetry-semantic_conventions (1.10.1) + opentelemetry-api (~> 1.0) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.8) + rake + regexp_parser (2.9.2) + rexml (3.3.8) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.24.0) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + opentelemetry-exporter-otlp + opentelemetry-sdk (~> 1.1) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_rack_2.gemfile b/gemfiles/ruby_3.4_rack_2.gemfile index 0c011068361..2062d3f9754 100644 --- a/gemfiles/ruby_3.4_rack_2.gemfile +++ b/gemfiles/ruby_3.4_rack_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -40,7 +38,7 @@ gem "rack-contrib" gem "rack-test" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_rack_2.gemfile.lock b/gemfiles/ruby_3.4_rack_2.gemfile.lock index e075dd5697f..3d62fcee9fb 100644 --- a/gemfiles/ruby_3.4_rack_2.gemfile.lock +++ b/gemfiles/ruby_3.4_rack_2.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +40,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -52,15 +58,19 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -129,6 +139,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -142,8 +154,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -153,7 +163,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -181,12 +190,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_rack_3.gemfile b/gemfiles/ruby_3.4_rack_3.gemfile index 929ad3909ac..3bf8b6d8778 100644 --- a/gemfiles/ruby_3.4_rack_3.gemfile +++ b/gemfiles/ruby_3.4_rack_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -40,7 +38,7 @@ gem "rack-contrib" gem "rack-test" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_rack_3.gemfile.lock b/gemfiles/ruby_3.4_rack_3.gemfile.lock index 94cd6640d2a..25727ca55dc 100644 --- a/gemfiles/ruby_3.4_rack_3.gemfile.lock +++ b/gemfiles/ruby_3.4_rack_3.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +40,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -52,15 +58,19 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -129,6 +139,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -142,8 +154,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -153,7 +163,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -181,12 +190,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_rack_latest.gemfile b/gemfiles/ruby_3.4_rack_latest.gemfile new file mode 100644 index 00000000000..d3867558764 --- /dev/null +++ b/gemfiles/ruby_3.4_rack_latest.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rack" +gem "rack-contrib" +gem "rack-test" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_rack_latest.gemfile.lock b/gemfiles/ruby_3.4_rack_latest.gemfile.lock new file mode 100644 index 00000000000..1257e18efeb --- /dev/null +++ b/gemfiles/ruby_3.4_rack_latest.gemfile.lock @@ -0,0 +1,199 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.2) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.5) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_portile2 (2.8.7) + msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.8) + rack-contrib (2.5.0) + rack (< 4) + rack-test (2.1.0) + rack (>= 1.3) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rack + rack-contrib + rack-test + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_rails61_mysql2.gemfile b/gemfiles/ruby_3.4_rails61_mysql2.gemfile index 398a657e92d..bb82c27c994 100644 --- a/gemfiles/ruby_3.4_rails61_mysql2.gemfile +++ b/gemfiles/ruby_3.4_rails61_mysql2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -42,7 +40,7 @@ gem "lograge", "~> 0.11" gem "net-smtp" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_rails61_mysql2.gemfile.lock b/gemfiles/ruby_3.4_rails61_mysql2.gemfile.lock index af8dd5c7aec..a650844f841 100644 --- a/gemfiles/ruby_3.4_rails61_mysql2.gemfile.lock +++ b/gemfiles/ruby_3.4_rails61_mysql2.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -101,8 +108,8 @@ GEM bigdecimal rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.4) - debase-ruby_core_source (3.3.1) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -119,8 +126,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -254,6 +261,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -278,11 +287,9 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.36) zeitwerk (2.6.16) PLATFORMS @@ -293,7 +300,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -322,13 +328,13 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_rails61_postgres.gemfile b/gemfiles/ruby_3.4_rails61_postgres.gemfile index 08b13d77697..4bd81d2e1e0 100644 --- a/gemfiles/ruby_3.4_rails61_postgres.gemfile +++ b/gemfiles/ruby_3.4_rails61_postgres.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -42,7 +40,7 @@ gem "lograge", "~> 0.11" gem "net-smtp" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_rails61_postgres.gemfile.lock b/gemfiles/ruby_3.4_rails61_postgres.gemfile.lock index 80e6b16c26a..dfaef1289ef 100644 --- a/gemfiles/ruby_3.4_rails61_postgres.gemfile.lock +++ b/gemfiles/ruby_3.4_rails61_postgres.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -101,8 +108,8 @@ GEM bigdecimal rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.4) - debase-ruby_core_source (3.3.1) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -119,8 +126,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -254,6 +261,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -278,11 +287,9 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.36) zeitwerk (2.6.16) PLATFORMS @@ -293,7 +300,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -322,13 +328,13 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_rails61_postgres_redis.gemfile b/gemfiles/ruby_3.4_rails61_postgres_redis.gemfile index ad1938bbe3a..f36af749c3a 100644 --- a/gemfiles/ruby_3.4_rails61_postgres_redis.gemfile +++ b/gemfiles/ruby_3.4_rails61_postgres_redis.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -43,7 +41,7 @@ gem "lograge", "~> 0.11" gem "net-smtp" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_rails61_postgres_redis.gemfile.lock b/gemfiles/ruby_3.4_rails61_postgres_redis.gemfile.lock index 09a75f614a3..e70c454bdfe 100644 --- a/gemfiles/ruby_3.4_rails61_postgres_redis.gemfile.lock +++ b/gemfiles/ruby_3.4_rails61_postgres_redis.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -101,8 +108,8 @@ GEM bigdecimal rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.4) - debase-ruby_core_source (3.3.1) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -119,8 +126,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -255,6 +262,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -279,11 +288,9 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.36) zeitwerk (2.6.16) PLATFORMS @@ -294,7 +301,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -324,13 +330,13 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_rails61_postgres_sidekiq.gemfile b/gemfiles/ruby_3.4_rails61_postgres_sidekiq.gemfile index 2204a5ee12c..f8a8659e4ad 100644 --- a/gemfiles/ruby_3.4_rails61_postgres_sidekiq.gemfile +++ b/gemfiles/ruby_3.4_rails61_postgres_sidekiq.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -44,7 +42,7 @@ gem "rails_semantic_logger", "~> 4.0" gem "net-smtp" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_rails61_postgres_sidekiq.gemfile.lock b/gemfiles/ruby_3.4_rails61_postgres_sidekiq.gemfile.lock index 9405f584a55..8e717802db4 100644 --- a/gemfiles/ruby_3.4_rails61_postgres_sidekiq.gemfile.lock +++ b/gemfiles/ruby_3.4_rails61_postgres_sidekiq.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -102,8 +109,8 @@ GEM bigdecimal rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.4) - debase-ruby_core_source (3.3.1) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -120,8 +127,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -261,6 +268,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri semantic_logger (4.15.0) concurrent-ruby (~> 1.0) sidekiq (7.2.4) @@ -292,11 +301,9 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.36) zeitwerk (2.6.16) PLATFORMS @@ -307,7 +314,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -337,14 +343,14 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) sidekiq (>= 6.1.2) simplecov! simplecov-cobertura (~> 2.1.0) sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_rails61_semantic_logger.gemfile b/gemfiles/ruby_3.4_rails61_semantic_logger.gemfile index eb5c71e6cc1..77f37f82883 100644 --- a/gemfiles/ruby_3.4_rails61_semantic_logger.gemfile +++ b/gemfiles/ruby_3.4_rails61_semantic_logger.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -42,7 +40,7 @@ gem "rails_semantic_logger", "~> 4.0" gem "net-smtp" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_rails61_semantic_logger.gemfile.lock b/gemfiles/ruby_3.4_rails61_semantic_logger.gemfile.lock index 7614e56b7e3..655144115de 100644 --- a/gemfiles/ruby_3.4_rails61_semantic_logger.gemfile.lock +++ b/gemfiles/ruby_3.4_rails61_semantic_logger.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -101,8 +108,8 @@ GEM bigdecimal rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.4) - debase-ruby_core_source (3.3.1) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -119,8 +126,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -251,6 +258,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri semantic_logger (4.15.0) concurrent-ruby (~> 1.0) simplecov-cobertura (2.1.0) @@ -277,11 +286,9 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.36) zeitwerk (2.6.16) PLATFORMS @@ -292,7 +299,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -321,13 +327,13 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) sprockets (< 4) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_rails61_trilogy.gemfile b/gemfiles/ruby_3.4_rails61_trilogy.gemfile index ab9e1d596e7..813f1a3aa3a 100644 --- a/gemfiles/ruby_3.4_rails61_trilogy.gemfile +++ b/gemfiles/ruby_3.4_rails61_trilogy.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -43,7 +41,7 @@ gem "lograge", "~> 0.11" gem "net-smtp" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_rails61_trilogy.gemfile.lock b/gemfiles/ruby_3.4_rails61_trilogy.gemfile.lock index 764f77cdd82..2b2e7fc7705 100644 --- a/gemfiles/ruby_3.4_rails61_trilogy.gemfile.lock +++ b/gemfiles/ruby_3.4_rails61_trilogy.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -104,8 +111,8 @@ GEM bigdecimal rexml crass (1.0.6) + datadog-ruby_core_source (3.3.6) date (3.3.4) - debase-ruby_core_source (3.3.1) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -122,8 +129,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -256,6 +263,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -281,11 +290,9 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - yard (0.9.36) zeitwerk (2.6.16) PLATFORMS @@ -297,7 +304,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -325,14 +331,14 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) sprockets (< 4) trilogy warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_rails7.gemfile b/gemfiles/ruby_3.4_rails7.gemfile new file mode 100644 index 00000000000..7d0d780be56 --- /dev/null +++ b/gemfiles/ruby_3.4_rails7.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.0.0" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_rails7.gemfile.lock b/gemfiles/ruby_3.4_rails7.gemfile.lock new file mode 100644 index 00000000000..1e22982b283 --- /dev/null +++ b/gemfiles/ruby_3.4_rails7.gemfile.lock @@ -0,0 +1,329 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.8.4) + actionpack (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.0) + actionpack (7.0.8.4) + actionview (= 7.0.8.4) + activesupport (= 7.0.8.4) + rack (~> 2.0, >= 2.2.4) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.8.4) + actionpack (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.8.4) + activesupport (= 7.0.8.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.3.6) + activemodel (7.0.8.4) + activesupport (= 7.0.8.4) + activerecord (7.0.8.4) + activemodel (= 7.0.8.4) + activesupport (= 7.0.8.4) + activestorage (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activesupport (= 7.0.8.4) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.8.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + mini_portile2 (2.8.7) + minitest (5.25.1) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + nio4r (2.7.3) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (7.0.8.4) + actioncable (= 7.0.8.4) + actionmailbox (= 7.0.8.4) + actionmailer (= 7.0.8.4) + actionpack (= 7.0.8.4) + actiontext (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activemodel (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + bundler (>= 1.15.0) + railties (= 7.0.8.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + method_source + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + strscan (3.1.1) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + ruby + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 7.0.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_rails71.gemfile b/gemfiles/ruby_3.4_rails71.gemfile new file mode 100644 index 00000000000..aba3603f383 --- /dev/null +++ b/gemfiles/ruby_3.4_rails71.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.1.0" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_rails71.gemfile.lock b/gemfiles/ruby_3.4_rails71.gemfile.lock new file mode 100644 index 00000000000..3e223d4f2b8 --- /dev/null +++ b/gemfiles/ruby_3.4_rails71.gemfile.lock @@ -0,0 +1,359 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + zeitwerk (~> 2.6) + actionmailbox (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.1.3.4) + actionpack (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.2) + actionpack (7.1.3.4) + actionview (= 7.1.3.4) + activesupport (= 7.1.3.4) + nokogiri (>= 1.8.5) + racc + rack (>= 2.2.4) + rack-session (>= 1.0.1) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + actiontext (7.1.3.4) + actionpack (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.1.3.4) + activesupport (= 7.1.3.4) + builder (~> 3.1) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activejob (7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.3.6) + activemodel (7.1.3.4) + activesupport (= 7.1.3.4) + activerecord (7.1.3.4) + activemodel (= 7.1.3.4) + activesupport (= 7.1.3.4) + timeout (>= 0.4.0) + activestorage (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activesupport (= 7.1.3.4) + marcel (~> 1.0) + activesupport (7.1.3.4) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + datadog-ruby_core_source (3.3.6) + date (3.3.4) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + drb (2.2.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + io-console (0.7.2) + irb (1.14.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + mini_portile2 (2.8.7) + minitest (5.25.1) + msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + nio4r (2.7.3) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + psych (5.1.2) + stringio + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.7) + rack-session (2.0.0) + rack (>= 3.0.0) + rack-test (2.1.0) + rack (>= 1.3) + rackup (2.1.0) + rack (>= 3) + webrick (~> 1.8) + rails (7.1.3.4) + actioncable (= 7.1.3.4) + actionmailbox (= 7.1.3.4) + actionmailer (= 7.1.3.4) + actionpack (= 7.1.3.4) + actiontext (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activemodel (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + bundler (>= 1.15.0) + railties (= 7.1.3.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + irb + rackup (>= 1.0.0) + rake (>= 12.2) + thor (~> 1.0, >= 1.2.2) + zeitwerk (~> 2.6) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rdoc (6.7.0) + psych (>= 4.0.0) + regexp_parser (2.9.2) + reline (0.5.9) + io-console (~> 0.5) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stringio (3.1.1) + strscan (3.1.1) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + ruby + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 7.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_redis_3.gemfile b/gemfiles/ruby_3.4_redis_3.gemfile index b192548b1f2..db93183411c 100644 --- a/gemfiles/ruby_3.4_redis_3.gemfile +++ b/gemfiles/ruby_3.4_redis_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -38,7 +36,7 @@ gem "ffi", "~> 1.16.3", require: false gem "redis", "~> 3" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_redis_3.gemfile.lock b/gemfiles/ruby_3.4_redis_3.gemfile.lock index 6fe94f74b8c..47b6fbd3919 100644 --- a/gemfiles/ruby_3.4_redis_3.gemfile.lock +++ b/gemfiles/ruby_3.4_redis_3.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +40,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -52,15 +58,19 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -125,6 +135,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -138,8 +150,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -149,7 +159,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -175,12 +184,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_redis_4.gemfile b/gemfiles/ruby_3.4_redis_4.gemfile index 568e746e55f..be0b22ffae5 100644 --- a/gemfiles/ruby_3.4_redis_4.gemfile +++ b/gemfiles/ruby_3.4_redis_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -38,7 +36,7 @@ gem "ffi", "~> 1.16.3", require: false gem "redis", "~> 4" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_redis_4.gemfile.lock b/gemfiles/ruby_3.4_redis_4.gemfile.lock index 19f531d38d2..48dfb66cbcc 100644 --- a/gemfiles/ruby_3.4_redis_4.gemfile.lock +++ b/gemfiles/ruby_3.4_redis_4.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +40,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -52,15 +58,19 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -125,6 +135,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -138,8 +150,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -149,7 +159,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -175,12 +184,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_redis_5.gemfile b/gemfiles/ruby_3.4_redis_5.gemfile index e3a505288a3..b6d2efd4b4e 100644 --- a/gemfiles/ruby_3.4_redis_5.gemfile +++ b/gemfiles/ruby_3.4_redis_5.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -38,7 +36,7 @@ gem "ffi", "~> 1.16.3", require: false gem "redis", "~> 5" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_redis_5.gemfile.lock b/gemfiles/ruby_3.4_redis_5.gemfile.lock index 1238c340ea1..a0396760406 100644 --- a/gemfiles/ruby_3.4_redis_5.gemfile.lock +++ b/gemfiles/ruby_3.4_redis_5.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,7 +40,6 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) @@ -41,7 +47,7 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -53,15 +59,19 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -129,6 +139,8 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -142,8 +154,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -153,7 +163,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -179,12 +188,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_relational_db.gemfile b/gemfiles/ruby_3.4_relational_db.gemfile index 2171adea069..0bae5a049cf 100644 --- a/gemfiles/ruby_3.4_relational_db.gemfile +++ b/gemfiles/ruby_3.4_relational_db.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -42,11 +40,11 @@ gem "makara", ">= 0.6.0.pre" gem "mysql2", ">= 0.5.3", platform: :ruby gem "pg", platform: :ruby gem "sqlite3", ">= 1.4.2", platform: :ruby -gem "sequel", "~> 5.54.0" +gem "sequel" gem "trilogy" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_relational_db.gemfile.lock b/gemfiles/ruby_3.4_relational_db.gemfile.lock index 5db154c201e..f3926aed65b 100644 --- a/gemfiles/ruby_3.4_relational_db.gemfile.lock +++ b/gemfiles/ruby_3.4_relational_db.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -50,7 +57,6 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) @@ -58,7 +64,7 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) delayed_job (4.1.11) activesupport (>= 3.0, < 8.0) @@ -78,8 +84,8 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) @@ -93,6 +99,9 @@ GEM msgpack (1.7.2) mutex_m (0.2.0) mysql2 (0.5.6) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -157,7 +166,10 @@ GEM rubocop (~> 1.33) rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) - sequel (5.54.0) + ruby_memcheck (3.0.0) + nokogiri + sequel (5.83.1) + bigdecimal simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -177,8 +189,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -189,7 +199,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -219,15 +228,15 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) - sequel (~> 5.54.0) + ruby_memcheck (>= 3) + sequel simplecov! simplecov-cobertura (~> 2.1.0) sqlite3 (>= 1.4.2) trilogy warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_resque2_redis3.gemfile b/gemfiles/ruby_3.4_resque2_redis3.gemfile index 8e7c468d5c5..b0ff82b0f24 100644 --- a/gemfiles/ruby_3.4_resque2_redis3.gemfile +++ b/gemfiles/ruby_3.4_resque2_redis3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -39,7 +37,7 @@ gem "redis", "< 4.0" gem "resque", ">= 2.0" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_resque2_redis3.gemfile.lock b/gemfiles/ruby_3.4_resque2_redis3.gemfile.lock index d8822451cec..2c2ee35b740 100644 --- a/gemfiles/ruby_3.4_resque2_redis3.gemfile.lock +++ b/gemfiles/ruby_3.4_resque2_redis3.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,14 +41,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -53,19 +59,23 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) mono_logger (1.1.2) msgpack (1.7.2) multi_json (1.15.0) mustermann (3.0.0) ruby2_keywords (~> 0.0.1) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -144,6 +154,8 @@ GEM rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -164,8 +176,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -175,7 +185,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -202,12 +211,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_resque2_redis4.gemfile b/gemfiles/ruby_3.4_resque2_redis4.gemfile index 9edb58f733c..ceb5e3c91f3 100644 --- a/gemfiles/ruby_3.4_resque2_redis4.gemfile +++ b/gemfiles/ruby_3.4_resque2_redis4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -39,7 +37,7 @@ gem "redis", ">= 4.0" gem "resque", ">= 2.0" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_resque2_redis4.gemfile.lock b/gemfiles/ruby_3.4_resque2_redis4.gemfile.lock index d05be52b58a..94c1ae6cd35 100644 --- a/gemfiles/ruby_3.4_resque2_redis4.gemfile.lock +++ b/gemfiles/ruby_3.4_resque2_redis4.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,7 +41,6 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) @@ -42,7 +48,7 @@ GEM crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -54,19 +60,23 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) mono_logger (1.1.2) msgpack (1.7.2) multi_json (1.15.0) mustermann (3.0.0) ruby2_keywords (~> 0.0.1) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -148,6 +158,8 @@ GEM rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -168,8 +180,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -179,7 +189,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -206,12 +215,12 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_sinatra_2.gemfile b/gemfiles/ruby_3.4_sinatra_2.gemfile index 8f6b792698f..72d404ba8e6 100644 --- a/gemfiles/ruby_3.4_sinatra_2.gemfile +++ b/gemfiles/ruby_3.4_sinatra_2.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -40,7 +38,7 @@ gem "rack-contrib" gem "rack-test" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_sinatra_2.gemfile.lock b/gemfiles/ruby_3.4_sinatra_2.gemfile.lock index 24d3ec180c1..bf443908a4f 100644 --- a/gemfiles/ruby_3.4_sinatra_2.gemfile.lock +++ b/gemfiles/ruby_3.4_sinatra_2.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -33,14 +40,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -52,17 +58,21 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) mustermann (2.0.2) ruby2_keywords (~> 0.0.1) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -134,6 +144,8 @@ GEM rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -153,8 +165,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -164,7 +174,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -191,13 +200,13 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) sinatra (~> 2) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_sinatra_3.gemfile b/gemfiles/ruby_3.4_sinatra_3.gemfile index d522a8127f6..93d5581d41e 100644 --- a/gemfiles/ruby_3.4_sinatra_3.gemfile +++ b/gemfiles/ruby_3.4_sinatra_3.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -40,7 +38,7 @@ gem "rack-contrib" gem "rack-test" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_sinatra_3.gemfile.lock b/gemfiles/ruby_3.4_sinatra_3.gemfile.lock index 63391e206e7..6c93057d89e 100644 --- a/gemfiles/ruby_3.4_sinatra_3.gemfile.lock +++ b/gemfiles/ruby_3.4_sinatra_3.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,14 +41,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -53,17 +59,21 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) mustermann (3.0.0) ruby2_keywords (~> 0.0.1) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -136,6 +146,8 @@ GEM rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -155,8 +167,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -166,7 +176,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -193,13 +202,13 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) sinatra (~> 3) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_sinatra_4.gemfile b/gemfiles/ruby_3.4_sinatra_4.gemfile index a6572fedbaa..4d35f74043e 100644 --- a/gemfiles/ruby_3.4_sinatra_4.gemfile +++ b/gemfiles/ruby_3.4_sinatra_4.gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" gem "appraisal", "~> 2.4.0" gem "benchmark-ips", "~> 2.8" gem "benchmark-memory", "< 0.2" -gem "builder" gem "climate_control", "~> 0.2.0" gem "concurrent-ruby" gem "extlz4", "~> 0.3", ">= 0.3.3" @@ -26,8 +25,7 @@ gem "simplecov-cobertura", "~> 2.1.0" gem "warning", "~> 1" gem "webmock", ">= 3.10.0" gem "rexml", ">= 3.2.7" -gem "webrick", ">= 1.7.0" -gem "yard", "~> 0.9" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" gem "rubocop", "~> 1.50.0", require: false gem "rubocop-packaging", "~> 0.5.2", require: false gem "rubocop-performance", "~> 1.9", require: false @@ -40,7 +38,7 @@ gem "rack-contrib" gem "rack-test" group :check do - + gem "ruby_memcheck", ">= 3" end group :dev do diff --git a/gemfiles/ruby_3.4_sinatra_4.gemfile.lock b/gemfiles/ruby_3.4_sinatra_4.gemfile.lock index 0713e8742e3..b2fa68ce2f3 100644 --- a/gemfiles/ruby_3.4_sinatra_4.gemfile.lock +++ b/gemfiles/ruby_3.4_sinatra_4.gemfile.lock @@ -8,12 +8,19 @@ GIT simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + PATH remote: .. specs: - datadog (2.2.0) - debase-ruby_core_source (= 3.3.1) - libdatadog (~> 10.0.0.1.0) + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) libddwaf (~> 1.14.0.0.0) msgpack @@ -34,14 +41,13 @@ GEM bigdecimal (3.1.8) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - builder (3.3.0) climate_control (0.2.0) coderay (1.1.3) concurrent-ruby (1.3.3) crack (1.0.0) bigdecimal rexml - debase-ruby_core_source (3.3.1) + datadog-ruby_core_source (3.3.6) debug_inspector (1.2.0) diff-lcs (1.5.1) docile (1.4.0) @@ -53,17 +59,21 @@ GEM json (2.7.2) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (10.0.0.1.0-aarch64-linux) - libdatadog (10.0.0.1.0-x86_64-linux) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) libddwaf (1.14.0.0.0-aarch64-linux) ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) memory_profiler (0.9.14) method_source (1.1.0) + mini_portile2 (2.8.7) msgpack (1.7.2) mustermann (3.0.0) ruby2_keywords (~> 0.0.1) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) os (1.1.4) parallel (1.25.1) parser (3.3.3.0) @@ -138,6 +148,8 @@ GEM rubocop-capybara (~> 2.17) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) + ruby_memcheck (3.0.0) + nokogiri simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) @@ -158,8 +170,6 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) - yard (0.9.36) PLATFORMS aarch64-linux @@ -169,7 +179,6 @@ DEPENDENCIES appraisal (~> 2.4.0) benchmark-ips (~> 2.8) benchmark-memory (< 0.2) - builder climate_control (~> 0.2.0) concurrent-ruby datadog! @@ -196,13 +205,13 @@ DEPENDENCIES rubocop-packaging (~> 0.5.2) rubocop-performance (~> 1.9) rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) simplecov! simplecov-cobertura (~> 2.1.0) sinatra (~> 4) warning (~> 1) webmock (>= 3.10.0) - webrick (>= 1.7.0) - yard (~> 0.9) + webrick! BUNDLED WITH 2.3.26 diff --git a/gemfiles/ruby_3.4_stripe_10.gemfile b/gemfiles/ruby_3.4_stripe_10.gemfile new file mode 100644 index 00000000000..10e98aeac64 --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_10.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 10" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_stripe_10.gemfile.lock b/gemfiles/ruby_3.4_stripe_10.gemfile.lock new file mode 100644 index 00000000000..f3ec24666f3 --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_10.gemfile.lock @@ -0,0 +1,195 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_portile2 (2.8.7) + msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (10.15.0) + strscan (3.1.1) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 10) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_stripe_11.gemfile b/gemfiles/ruby_3.4_stripe_11.gemfile new file mode 100644 index 00000000000..6ee719b4879 --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_11.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 11" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_stripe_11.gemfile.lock b/gemfiles/ruby_3.4_stripe_11.gemfile.lock new file mode 100644 index 00000000000..00abe0388dc --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_11.gemfile.lock @@ -0,0 +1,195 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_portile2 (2.8.7) + msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (11.7.0) + strscan (3.1.1) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 11) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_stripe_12.gemfile b/gemfiles/ruby_3.4_stripe_12.gemfile new file mode 100644 index 00000000000..81f3a444611 --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_12.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 12" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_stripe_12.gemfile.lock b/gemfiles/ruby_3.4_stripe_12.gemfile.lock new file mode 100644 index 00000000000..d9d02759a22 --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_12.gemfile.lock @@ -0,0 +1,195 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_portile2 (2.8.7) + msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (12.5.0) + strscan (3.1.1) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 12) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_stripe_7.gemfile b/gemfiles/ruby_3.4_stripe_7.gemfile new file mode 100644 index 00000000000..9055ea843fd --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_7.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 7" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_stripe_7.gemfile.lock b/gemfiles/ruby_3.4_stripe_7.gemfile.lock new file mode 100644 index 00000000000..a33bd41845a --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_7.gemfile.lock @@ -0,0 +1,195 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_portile2 (2.8.7) + msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (7.1.0) + strscan (3.1.1) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 7) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_stripe_8.gemfile b/gemfiles/ruby_3.4_stripe_8.gemfile new file mode 100644 index 00000000000..f5fc747b303 --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_8.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 8" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_stripe_8.gemfile.lock b/gemfiles/ruby_3.4_stripe_8.gemfile.lock new file mode 100644 index 00000000000..d76ae327679 --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_8.gemfile.lock @@ -0,0 +1,195 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_portile2 (2.8.7) + msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (8.7.0) + strscan (3.1.1) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 8) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_stripe_9.gemfile b/gemfiles/ruby_3.4_stripe_9.gemfile new file mode 100644 index 00000000000..dc4d1da020a --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_9.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "~> 9" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_stripe_9.gemfile.lock b/gemfiles/ruby_3.4_stripe_9.gemfile.lock new file mode 100644 index 00000000000..9f8d5b63d75 --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_9.gemfile.lock @@ -0,0 +1,195 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_portile2 (2.8.7) + msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stripe (9.4.0) + strscan (3.1.1) + thor (1.3.2) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (~> 9) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_stripe_latest.gemfile b/gemfiles/ruby_3.4_stripe_latest.gemfile new file mode 100644 index 00000000000..e25e21f3346 --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_latest.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_stripe_latest.gemfile.lock b/gemfiles/ruby_3.4_stripe_latest.gemfile.lock new file mode 100644 index 00000000000..37936e98c11 --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_latest.gemfile.lock @@ -0,0 +1,193 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.4) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_portile2 (2.8.7) + msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (13.0.1) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_stripe_min.gemfile b/gemfiles/ruby_3.4_stripe_min.gemfile new file mode 100644 index 00000000000..b8d734f25fc --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_min.gemfile @@ -0,0 +1,46 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "stripe", "= 5.15.0" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_stripe_min.gemfile.lock b/gemfiles/ruby_3.4_stripe_min.gemfile.lock new file mode 100644 index 00000000000..84a5f95a3f7 --- /dev/null +++ b/gemfiles/ruby_3.4_stripe_min.gemfile.lock @@ -0,0 +1,193 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.4.0) + datadog-ruby_core_source (= 3.3.6) + libdatadog (~> 13.1.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.14.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + datadog-ruby_core_source (3.3.6) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + extlz4 (0.3.4) + ffi (1.16.3) + google-protobuf (3.25.5) + hashdiff (1.1.1) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (13.1.0.1.0-aarch64-linux) + libdatadog (13.1.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_portile2 (2.8.7) + msgpack (1.7.2) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.5.0) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.7) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.3) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.22.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.1) + simplecov_json_formatter (0.1.4) + stripe (5.15.0) + thor (1.3.2) + unicode-display_width (2.6.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + stripe (= 5.15.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + +BUNDLED WITH + 2.3.26 diff --git a/integration/README.md b/integration/README.md index 1fa83813908..0f1e86f0622 100644 --- a/integration/README.md +++ b/integration/README.md @@ -10,19 +10,19 @@ Integration tests for `datadog` that use a variety of real applications. ./script/build-images ``` -You can specify which ruby version to build using the `-v` option. +You can specify which ruby version to build using the `-v` option. If you are running on ARM architecture (e.g. mac), include `DOCKER_DEFAULT_PLATFORM=linux/arm64` as a prefix to the script. -2. Choose an application and follow instructions (in corresponding `README.md`.) +2. Choose an application, and follow the instructions in the corresponding `README.md`. ## Demo applications -Ruby demo applications are configured with Datadog APM, which can be used to generate sample traces/profiles. These are used to drive tests in the integration suite. +Ruby demo applications are configured with Datadog APM, which can be used to generate sample traces and profiles. These are used to drive tests in the integration suite. ### Applications See `README.md` in each directory for more information: -- `apps/opentelemetry`: Generates OpenTelemetry traces +- `apps/opentelemetry`: OpenTelemetry traces - `apps/rack`: Rack application - `apps/rails-five`: Rails 5 application - `apps/rails-six`: Rails 6 application diff --git a/integration/apps/hanami/README.md b/integration/apps/hanami/README.md index bfaf77fcebd..d12a8ac0c68 100644 --- a/integration/apps/hanami/README.md +++ b/integration/apps/hanami/README.md @@ -136,11 +136,11 @@ You can also define your own custom scenario by creating a LUA file, mounting it ### Running integration tests -You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`) +You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`). If you are running on ARM architecture (e.g. mac), include `DOCKER_DEFAULT_PLATFORM=linux/arm64` as a prefix for the build script and `DOCKER_BUILDKIT=0` as a prefix for the ci script. ```sh -./bin/build-images -v -./bin/ci -v +./script/build-images -v +./script/ci -v ``` Or inside a running container: diff --git a/integration/apps/opentelemetry/README.md b/integration/apps/opentelemetry/README.md index ccf65e26f3c..2d0078bb3db 100644 --- a/integration/apps/opentelemetry/README.md +++ b/integration/apps/opentelemetry/README.md @@ -56,7 +56,7 @@ e.g. `DD_DEMO_ENV_FEATURES=tracing,profiling` ### Running integration tests -You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`) +You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`). If you are running on ARM architecture (e.g. mac), include `DOCKER_DEFAULT_PLATFORM=linux/arm64` as a prefix for the build script and `DOCKER_BUILDKIT=0` as a prefix for the ci script. ```sh ./script/build-images -v diff --git a/integration/apps/rack/Gemfile b/integration/apps/rack/Gemfile index 3d69edf7514..28b027890ea 100644 --- a/integration/apps/rack/Gemfile +++ b/integration/apps/rack/Gemfile @@ -4,21 +4,17 @@ source "https://rubygems.org" gem 'puma' gem 'unicorn' -gem 'passenger' -gem 'rack' -gem 'rackup' if RUBY_VERSION >= '2.4' # The `rackup` is its own gem since Rack 3.0 - -if RUBY_VERSION < '2.3' - gem 'redis', '< 4.1.1' # 4.1.1 "claims" to support 2.2 but is actually broken -else - # Known compatibility issue: https://github.com/redis/redis-rb/issues/1142 - gem 'redis', '< 5' -end -if RUBY_VERSION < '2.2' - gem 'sidekiq', '< 5' # 5.0.3 checks for older Rubies and breaks, but does not declare it on the gemspec :( +if RUBY_VERSION < '2.6.0' + gem 'passenger', '< 6.0.23' else - gem 'sidekiq' + gem 'passenger' end +gem 'rack' +gem 'rackup' + +# Known compatibility issue: https://github.com/redis/redis-rb/issues/1142 +gem 'redis', '< 5' +gem 'sidekiq' gem 'resque' gem 'rake' @@ -27,12 +23,11 @@ gem 'dogstatsd-ruby' gem 'datadog', *Datadog::DemoEnv.gem_spec('datadog') # Development -gem 'pry-byebug' if RUBY_VERSION >= '2.3.0' && RUBY_ENGINE != 'truffleruby' && RUBY_VERSION < '3.2.0' -gem 'pry-nav' if RUBY_VERSION < '2.3.0' +gem 'pry-byebug' if RUBY_ENGINE != 'truffleruby' && RUBY_VERSION < '3.2.0' # gem 'pry-stack_explorer', platform: :ruby # gem 'rbtrace' # gem 'ruby-prof' gem 'rspec' gem 'rspec-wait' -gem 'webrick' if RUBY_VERSION >= '2.3' # Older Rubies can just use the built-in version of webrick +gem 'webrick' diff --git a/integration/apps/rack/README.md b/integration/apps/rack/README.md index 08a5f1dd831..b6f3fb2d6dc 100644 --- a/integration/apps/rack/README.md +++ b/integration/apps/rack/README.md @@ -10,7 +10,7 @@ Install [direnv](https://github.com/direnv/direnv) for applying local settings. 1. `cp .envrc.sample .envrc` and add your Datadog API key. 2. `direnv allow` to load the env var. -4. `docker-compose run --rm app bin/setup` +3. `docker-compose run --rm app bin/setup` ## Running the application @@ -103,7 +103,7 @@ You can also define your own custom scenario by creating a LUA file, mounting it ### Running integration tests -You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`) +You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`). If you are running on ARM architecture (e.g. mac), include `DOCKER_DEFAULT_PLATFORM=linux/arm64` as a prefix for the build script and `DOCKER_BUILDKIT=0` as a prefix for the ci script. ```sh ./script/build-images -v diff --git a/integration/apps/rails-five/README.md b/integration/apps/rails-five/README.md index 477fdb86e70..228a52aab6b 100644 --- a/integration/apps/rails-five/README.md +++ b/integration/apps/rails-five/README.md @@ -140,11 +140,11 @@ You can also define your own custom scenario by creating a LUA file, mounting it ### Running integration tests -You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`) +You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`). If you are running on ARM architecture (e.g. mac), include `DOCKER_DEFAULT_PLATFORM=linux/arm64` as a prefix for the build script and `DOCKER_BUILDKIT=0` as a prefix for the ci script. ```sh -./bin/build-images -v -./bin/ci -v +./script/build-images -v +./script/ci -v ``` Or inside a running container: diff --git a/integration/apps/rails-seven/README.md b/integration/apps/rails-seven/README.md index fa59006d526..e65bd6e1329 100644 --- a/integration/apps/rails-seven/README.md +++ b/integration/apps/rails-seven/README.md @@ -140,11 +140,11 @@ You can also define your own custom scenario by creating a LUA file, mounting it ### Running integration tests -You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`) +You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`). If you are running on ARM architecture (e.g. mac), include `DOCKER_DEFAULT_PLATFORM=linux/arm64` as a prefix for the build script and `DOCKER_BUILDKIT=0` as a prefix for the ci script. ```sh -./bin/build-images -v -./bin/ci -v +./script/build-images -v +./script/ci -v ``` Or inside a running container: diff --git a/integration/apps/rails-six/README.md b/integration/apps/rails-six/README.md index 54b18c84956..b266643400b 100644 --- a/integration/apps/rails-six/README.md +++ b/integration/apps/rails-six/README.md @@ -140,11 +140,11 @@ You can also define your own custom scenario by creating a LUA file, mounting it ### Running integration tests -You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`) +You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`). If you are running on ARM architecture (e.g. mac), include `DOCKER_DEFAULT_PLATFORM=linux/arm64` as a prefix for the build script and `DOCKER_BUILDKIT=0` as a prefix for the ci script. ```sh -./bin/build-images -v -./bin/ci -v +./script/build-images -v +./script/ci -v ``` Or inside a running container: diff --git a/integration/apps/rspec/README.md b/integration/apps/rspec/README.md index a285bbeec78..ffc8a06e181 100644 --- a/integration/apps/rspec/README.md +++ b/integration/apps/rspec/README.md @@ -10,7 +10,7 @@ Install [direnv](https://github.com/direnv/direnv) for applying local settings. 1. `cp .envrc.sample .envrc` and add your Datadog API key. 2. `direnv allow` to load the env var. -4. `docker-compose run --rm app bin/setup` +3. `docker-compose run --rm app bin/setup` ## Running the application @@ -78,7 +78,7 @@ e.g. `DD_DEMO_ENV_FEATURES=tracing,profiling` ### Running integration tests -You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`) +You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`). Currently, this integration test has nothing to do in CI, and there are no RSpec tests in `/bin/test`. ```sh ./script/build-images -v diff --git a/integration/apps/ruby/README.md b/integration/apps/ruby/README.md index c250e661fba..9c1600ddad1 100644 --- a/integration/apps/ruby/README.md +++ b/integration/apps/ruby/README.md @@ -10,7 +10,7 @@ Install [direnv](https://github.com/direnv/direnv) for applying local settings. 1. `cp .envrc.sample .envrc` and add your Datadog API key. 2. `direnv allow` to load the env var. -4. `docker-compose run --rm app bin/setup` +3. `docker-compose run --rm app bin/setup` ## Running the application @@ -78,7 +78,7 @@ e.g. `DD_DEMO_ENV_FEATURES=tracing,profiling` ### Running integration tests -You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`) +You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`). Currently, this integration test has nothing to do in CI, and there are no Ruby tests in `/bin/test`. ```sh ./script/build-images -v diff --git a/integration/apps/sinatra2-classic/README.md b/integration/apps/sinatra2-classic/README.md index 3ec388b0899..5424aa4082c 100644 --- a/integration/apps/sinatra2-classic/README.md +++ b/integration/apps/sinatra2-classic/README.md @@ -99,7 +99,7 @@ You can also define your own custom scenario by creating a LUA file, mounting it ### Running integration tests -You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`) +You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`). If you are running on ARM architecture (e.g. mac), include `DOCKER_DEFAULT_PLATFORM=linux/arm64` as a prefix for the build script and `DOCKER_BUILDKIT=0` as a prefix for the ci script. ```sh ./script/build-images -v diff --git a/integration/apps/sinatra2-modular/README.md b/integration/apps/sinatra2-modular/README.md index 14566ae20a9..2f322d17fbe 100644 --- a/integration/apps/sinatra2-modular/README.md +++ b/integration/apps/sinatra2-modular/README.md @@ -99,7 +99,7 @@ You can also define your own custom scenario by creating a LUA file, mounting it ### Running integration tests -You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`) +You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`). If you are running on ARM architecture (e.g. mac), include `DOCKER_DEFAULT_PLATFORM=linux/arm64` as a prefix for the build script and `DOCKER_BUILDKIT=0` as a prefix for the ci script. ```sh ./script/build-images -v diff --git a/lib-injection/Dockerfile b/lib-injection/Dockerfile deleted file mode 100644 index 4f49a27c0ee..00000000000 --- a/lib-injection/Dockerfile +++ /dev/null @@ -1,24 +0,0 @@ -# This image provides the files needed to install the dd-trace-rb -# and auto instrument Ruby applications in containerized environments. -FROM alpine:3.20 - -# Set high UID to prevent possible conflict with existing users: http://www.linfo.org/uid.html -ARG UID=10000 - -ARG DATADOG_RUBY_GEM_VERSION -ENV DATADOG_RUBY_GEM_VERSION=$DATADOG_RUBY_GEM_VERSION - -ARG DATADOG_RUBY_GEM_SHA -ENV DATADOG_RUBY_GEM_SHA=$DATADOG_RUBY_GEM_SHA - -RUN addgroup -g 10000 -S datadog && \ - adduser -u ${UID} -S datadog -G datadog - -USER ${UID} -WORKDIR /datadog-init -ADD auto_inject.rb /datadog-init/auto_inject.rb - -RUN sed -i "s~~${DATADOG_RUBY_GEM_SHA}~g" /datadog-init/auto_inject.rb -RUN sed -i "s~~${DATADOG_RUBY_GEM_VERSION}~g" /datadog-init/auto_inject.rb - -ADD copy-lib.sh /datadog-init/copy-lib.sh diff --git a/lib-injection/auto_inject.rb b/lib-injection/auto_inject.rb deleted file mode 100644 index 7691233ba69..00000000000 --- a/lib-injection/auto_inject.rb +++ /dev/null @@ -1,90 +0,0 @@ -# Keep in sync with host_inject.rb - -return if ENV['DD_TRACE_SKIP_LIB_INJECTION'] == 'true' - -begin - require 'open3' - support_message = 'For help solving this issue, please contact Datadog support at https://docs.datadoghq.com/help/.' - - def debug_log(msg) - $stdout.puts msg if ENV['DD_TRACE_DEBUG'] == 'true' - end - - _, status = Open3.capture2e({ 'DD_TRACE_SKIP_LIB_INJECTION' => 'true' }, 'bundle show datadog') - if status.success? - debug_log '[datadog] datadog already installed... skipping injection' - return - end - - require 'bundler' - require 'bundler/cli' - require 'shellwords' - - if Bundler.frozen_bundle? - warn '[datadog] Injection failed: Unable to inject into a frozen Gemfile '\ - '(Bundler is configured with `deployment` or `frozen`)' - return - end - - unless Bundler::CLI.commands['add'] && Bundler::CLI.commands['add'].options.key?('require') - warn "[datadog] Injection failed: Bundler version #{Bundler::VERSION} is not supported. "\ - 'Upgrade to Bundler >= 2.3 to enable injection.' - return - end - - # `version` and `sha` should be replaced by docker build arguments - version = '' - sha = '' - - bundle_add_datadog_cmd = - if !version.empty? - # For public release - "bundle add datadog --require datadog/auto_instrument --version #{version.gsub(/^v/, '').shellescape}" - elsif !sha.empty? - # For internal testing - "bundle add datadog --require datadog/auto_instrument --github datadog/dd-trace-rb --ref #{sha.shellescape}" - end - - unless bundle_add_datadog_cmd - warn "[datadog] Injection failed: Missing version specification. #{support_message}" - return - end - - debug_log "[datadog] Injection with `#{bundle_add_datadog_cmd}`" - - gemfile = Bundler::SharedHelpers.default_gemfile - lockfile = Bundler::SharedHelpers.default_lockfile - - datadog_gemfile = gemfile.dirname + 'datadog-Gemfile' - datadog_lockfile = lockfile.dirname + 'datadog-Gemfile.lock' - - require 'fileutils' - - begin - # Copies for trial - FileUtils.cp gemfile, datadog_gemfile - FileUtils.cp lockfile, datadog_lockfile - - output, status = Open3.capture2e( - { 'DD_TRACE_SKIP_LIB_INJECTION' => 'true', 'BUNDLE_GEMFILE' => datadog_gemfile.to_s }, - bundle_add_datadog_cmd - ) - - if status.success? - $stdout.puts '[datadog] Successfully injected datadog into the application.' - - FileUtils.cp datadog_gemfile, gemfile - FileUtils.cp datadog_lockfile, lockfile - else - warn "[datadog] Injection failed: Unable to add datadog. Error output:\n#{output.split("\n").map do |l| - "[datadog] #{l}" - end.join("\n")}\n#{support_message}" - end - ensure - # Remove the copies - FileUtils.rm(datadog_gemfile, force: true) - FileUtils.rm(datadog_lockfile, force: true) - end -rescue Exception => e - warn "[datadog] Injection failed: #{e.class.name} #{e.message}\nBacktrace: #{e.backtrace.join("\n")}\n#{support_message}" -end diff --git a/lib-injection/copy-lib.sh b/lib-injection/copy-lib.sh deleted file mode 100755 index fa74f8292d7..00000000000 --- a/lib-injection/copy-lib.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -# This script is used by the admission controller to install the library from the -# init container into the application container. -cp auto_inject.rb "$1/auto_inject.rb" diff --git a/lib-injection/host_inject.rb b/lib-injection/host_inject.rb index 1f1b56a6837..2db6a690e7d 100644 --- a/lib-injection/host_inject.rb +++ b/lib-injection/host_inject.rb @@ -1,219 +1,249 @@ -return if ENV['DD_TRACE_SKIP_LIB_INJECTION'] == 'true' - -begin - require 'rubygems' - require 'open3' - require 'bundler' - require 'bundler/cli' - require 'shellwords' - require 'fileutils' - require 'json' - - def dd_debug_log(msg) - pid = Process.respond_to?(:pid) ? Process.pid : 0 # Not available on all platforms - $stdout.puts "[datadog][#{pid}][#{$0}] #{msg}" if ENV['DD_TRACE_DEBUG'] == 'true' - end - - def dd_error_log(msg) - pid = Process.respond_to?(:pid) ? Process.pid : 0 # Not available on all platforms - warn "[datadog][#{pid}][#{$0}] #{msg}" - end - - def dd_skip_injection! - ENV['DD_TRACE_SKIP_LIB_INJECTION'] = 'true' - end - - def dd_send_telemetry(events) - pid = Process.respond_to?(:pid) ? Process.pid : 0 # Not available on all platforms - - tracer_version = if File.exist?('/opt/datadog/apm/library/ruby/version.txt') - File.read('/opt/datadog/apm/library/ruby/version.txt').chomp - else - 'unknown' - end - - payload = { - metadata: { - language_name: 'ruby', - language_version: RUBY_VERSION, - runtime_name: RUBY_ENGINE, - runtime_version: RUBY_VERSION, - tracer_version: tracer_version, - pid: pid - }, - points: events - }.to_json - - fowarder = ENV['DD_TELEMETRY_FORWARDER_PATH'] - - return if fowarder.nil? || fowarder.empty? - - Open3.capture2e([fowarder, 'library_entrypoint'], stdin_data: payload) - end +if ENV['DD_TRACE_SKIP_LIB_INJECTION'] == 'true' + # Skip +else + utils = Module.new do + module_function + + def debug(msg) + $stdout.puts "[datadog][#{pid}][#{$0}] #{msg}" if ENV['DD_TRACE_DEBUG'] == 'true' + end - unless Bundler::SharedHelpers.in_bundle? - dd_debug_log 'Not in bundle... skipping injection' - return - end + def error(msg) + warn "[datadog][#{pid}][#{$0}] #{msg}" + end - major, minor, = RUBY_VERSION.split('.') - ruby_api_version = "#{major}.#{minor}.0" - dd_lib_injection_path = "/opt/datadog/apm/library/ruby/#{ruby_api_version}" - dd_debug_log "Loading from #{dd_lib_injection_path}..." - - supported_ruby_api_versions = ['2.7.0', '3.0.0', '3.1.0', '3.2.0'].freeze - - # Handle unsupported runtimes - # - RUBY_ENGINE (Only supports `ruby`, not `jruby` or `truffleruby`) - # - ruby api versions (Only supports `2.7.0`, `3.0.0`, `3.1.0`, and `3.2.0`) - if RUBY_ENGINE != 'ruby' || supported_ruby_api_versions.none? { |v| ruby_api_version == v } - dd_send_telemetry( - [ - { name: 'library_entrypoint.abort', tags: ['reason:incompatible_runtime'] }, - { name: 'library_entrypoint.abort.runtime' } - ] - ) - dd_skip_injection! - return # Skip injection - end + def pid + Process.respond_to?(:pid) ? Process.pid : 0 + end - local_platform = Gem::Platform.local - platform_support_matrix = { - cpu: ['x86_64', 'aarch64'].freeze, - os: ['linux'].freeze, - version: ['gnu', nil].freeze # nil is equivalent to `gnu` for local platform - } - - if platform_support_matrix.fetch(:cpu).none? { |v| local_platform.cpu == v } || - platform_support_matrix.fetch(:os).none? { |v| local_platform.os == v } || - platform_support_matrix.fetch(:version).none? { |v| local_platform.version == v } - - dd_debug_log "Platform check failed: #{local_platform}" - dd_send_telemetry([{ name: 'library_entrypoint.abort', tags: ['reason:incompatible_platform'] }]) - dd_skip_injection! - return # Skip injection - end + def root + File.expand_path(File.join(File.dirname(__FILE__), '.')) + end - unless Process.respond_to?(:fork) - dd_debug_log 'Fork not supported... skipping injection' - return - end + def path + major, minor, = RUBY_VERSION.split('.') + ruby_api_version = "#{major}.#{minor}.0" - already_installed = ['ddtrace', 'datadog'].any? do |gem| - fork { - $stdout = File.new("/dev/null", "w") - $stderr = File.new("/dev/null", "w") - Bundler::CLI::Common.select_spec(gem) - } - _, status = Process.wait2 - status.success? - end + "#{root}/#{ruby_api_version}" + end - if already_installed - dd_debug_log 'Skip injection: already installed' - return + def version + File.exist?("#{root}/version") ? File.read("#{root}/version").chomp : 'unknown' + end end - if Bundler.frozen_bundle? - dd_error_log "Skip injection: bundler is configured with 'deployment' or 'frozen'" + telemetry = Module.new do + module_function - dd_send_telemetry([{ name: 'library_entrypoint.abort', tags: ['reason:bundler'] }]) - dd_skip_injection! - return - end + def emit(pid, version, events) + payload = { + metadata: { + language_name: 'ruby', + language_version: RUBY_VERSION, + runtime_name: RUBY_ENGINE, + runtime_version: RUBY_VERSION, + tracer_version: version, + pid: pid + }, + points: events + } - unless Bundler::CLI.commands['add'] && Bundler::CLI.commands['add'].options.key?('require') - dd_error_log "Skip injection: bundler version #{Bundler::VERSION} is not supported, please upgrade to >= 2.3." + fowarder = ENV['DD_TELEMETRY_FORWARDER_PATH'] - dd_send_telemetry([{ name: 'library_entrypoint.abort', tags: ['reason:bundler_version'] }]) - dd_skip_injection! - return - end + if fowarder && !fowarder.empty? + require 'open3' + require 'json' - lock_file_parser = Bundler::LockfileParser.new(Bundler.read_file("#{dd_lib_injection_path}/Gemfile.lock")) - gem_version_mapping = lock_file_parser.specs.each_with_object({}) do |spec, hash| - hash[spec.name] = spec.version.to_s - hash + Open3.capture2e(fowarder, 'library_entrypoint', stdin_data: payload.to_json) + end + end end - gemfile = Bundler::SharedHelpers.default_gemfile - lockfile = Bundler::SharedHelpers.default_lockfile - - datadog_gemfile = gemfile.dirname + '.datadog-Gemfile' - datadog_lockfile = lockfile.dirname + '.datadog-Gemfile.lock' - - # Copies for trial - ::FileUtils.cp gemfile, datadog_gemfile - ::FileUtils.cp lockfile, datadog_lockfile - - injection_failure = false - - # This is order dependent - [ - 'msgpack', - 'ffi', - 'debase-ruby_core_source', - 'libdatadog', - 'libddwaf', - 'datadog' - ].each do |gem| - fork { - $stdout = File.new("/dev/null", "w") - $stderr = File.new("/dev/null", "w") - Bundler::CLI::Common.select_spec(gem) - } - - _, status = Process.wait2 - if status.success? - dd_debug_log "#{gem} already installed... skipping..." - next + pid = utils.pid + + if Process.respond_to?(:fork) + utils.debug 'Starts injection' + + require 'rubygems' + + read, write = IO.pipe + + fork do + read.close + + require 'open3' + require 'bundler' + require 'bundler/cli' + require 'fileutils' + + precheck = Module.new do + module_function + + def in_bundle? + Bundler::SharedHelpers.in_bundle? + end + + def runtime_supported? + major, minor, = RUBY_VERSION.split('.') + ruby_api_version = "#{major}.#{minor}.0" + + supported_ruby_api_versions = ['2.7.0', '3.0.0', '3.1.0', '3.2.0'].freeze + + RUBY_ENGINE == 'ruby' && supported_ruby_api_versions.any? { |v| ruby_api_version == v } + end + + def platform_supported? + platform_support_matrix = { + cpu: ['x86_64', 'aarch64'].freeze, + os: ['linux'].freeze, + version: ['gnu', nil].freeze # nil is equivalent to `gnu` for local platform + } + local_platform = Gem::Platform.local + + platform_support_matrix.fetch(:cpu).any? { |v| local_platform.cpu == v } && + platform_support_matrix.fetch(:os).any? { |v| local_platform.os == v } && + platform_support_matrix.fetch(:version).any? { |v| local_platform.version == v } + end + + def already_installed? + ['ddtrace', 'datadog'].any? do |gem| + fork do + $stdout = File.new('/dev/null', 'w') + $stderr = File.new('/dev/null', 'w') + Bundler::CLI::Common.select_spec(gem) + end + _, status = Process.wait2 + status.success? + end + end + + def frozen_bundle? + Bundler.frozen_bundle? + end + + def bundler_supported? + Bundler::CLI.commands['add'] && Bundler::CLI.commands['add'].options.key?('require') + end + end + + if !precheck.in_bundle? + utils.debug 'Not in bundle... skipping injection' + exit!(1) + elsif !precheck.runtime_supported? + utils.debug "Runtime not supported: #{RUBY_DESCRIPTION}" + telemetry.emit( + pid, + utils.version, + [{ name: 'library_entrypoint.abort', tags: ['reason:incompatible_runtime'] }, + { name: 'library_entrypoint.abort.runtime' }] + ) + exit!(1) + elsif !precheck.platform_supported? + utils.debug "Platform not supported: #{local_platform}" + telemetry.emit(pid, utils.version, [{ name: 'library_entrypoint.abort', tags: ['reason:incompatible_platform'] }]) + exit!(1) + elsif precheck.already_installed? + utils.debug 'Skip injection: already installed' + elsif precheck.frozen_bundle? + utils.error "Skip injection: bundler is configured with 'deployment' or 'frozen'" + telemetry.emit(pid, utils.version, [{ name: 'library_entrypoint.abort', tags: ['reason:bundler'] }]) + exit!(1) + elsif !precheck.bundler_supported? + utils.error "Skip injection: bundler version #{Bundler::VERSION} is not supported, please upgrade to >= 2.3." + telemetry.emit(pid, utils.version, [{ name: 'library_entrypoint.abort', tags: ['reason:bundler_version'] }]) + exit!(1) + else + # Injection + path = utils.path + utils.debug "Loading from #{path}" + lock_file_parser = Bundler::LockfileParser.new(Bundler.read_file("#{path}/Gemfile.lock")) + gem_version_mapping = lock_file_parser.specs.each_with_object({}) do |spec, hash| + hash[spec.name] = spec.version.to_s + hash + end + + gemfile = Bundler::SharedHelpers.default_gemfile + lockfile = Bundler::SharedHelpers.default_lockfile + + datadog_gemfile = gemfile.dirname + '.datadog-Gemfile' + datadog_lockfile = lockfile.dirname + '.datadog-Gemfile.lock' + + # Copies for trial + ::FileUtils.cp gemfile, datadog_gemfile + ::FileUtils.cp lockfile, datadog_lockfile + + injection_failure = false + + # This is order dependent + [ + 'msgpack', + 'ffi', + 'datadog-ruby_core_source', + 'libdatadog', + 'libddwaf', + 'datadog' + ].each do |gem| + fork do + $stdout = File.new('/dev/null', 'w') + $stderr = File.new('/dev/null', 'w') + Bundler::CLI::Common.select_spec(gem) + end + + _, status = Process.wait2 + if status.success? + utils.debug "#{gem} already installed... skipping..." + next + end + + bundle_add_cmd = "bundle add #{gem} --skip-install --version #{gem_version_mapping[gem]} " + bundle_add_cmd << ' --verbose ' if ENV['DD_TRACE_DEBUG'] == 'true' + bundle_add_cmd << '--require datadog/single_step_instrument' if gem == 'datadog' + + utils.debug "Injection with `#{bundle_add_cmd}`" + + env = { 'BUNDLE_GEMFILE' => datadog_gemfile.to_s, + 'DD_TRACE_SKIP_LIB_INJECTION' => 'true', + 'GEM_PATH' => utils.path } + add_output, add_status = Open3.capture2e(env, bundle_add_cmd) + + if add_status.success? + utils.debug "Successfully injected #{gem} into the application." + else + injection_failure = true + utils.error "Injection failed: Unable to add datadog. Error output: #{add_output}" + end + end + + if injection_failure + ::FileUtils.rm datadog_gemfile + ::FileUtils.rm datadog_lockfile + telemetry.emit(pid, utils.version, [{ name: 'library_entrypoint.error', tags: ['error_type:injection_failure'] }]) + exit!(1) + else + write.puts datadog_gemfile.to_s + telemetry.emit(pid, utils.version, [{ name: 'library_entrypoint.complete', tags: ['injection_forced:false'] }]) + end + end end - bundle_add_cmd = "bundle add #{gem} --skip-install --version #{gem_version_mapping[gem]} " - bundle_add_cmd << '--require datadog/auto_instrument' if gem == 'datadog' + write.close + gemfile = read.read.to_s.chomp - dd_debug_log "Injection with `#{bundle_add_cmd}`" + _, status = Process.wait2 + ENV['DD_TRACE_SKIP_LIB_INJECTION'] = 'true' - env = { 'BUNDLE_GEMFILE' => datadog_gemfile.to_s, - 'DD_TRACE_SKIP_LIB_INJECTION' => 'true', - 'GEM_PATH' => dd_lib_injection_path } - add_output, add_status = Open3.capture2e(env, bundle_add_cmd) + if status.success? + dd_lib_injection_path = utils.path - if add_status.success? - dd_debug_log "Successfully injected #{gem} into the application." + Gem.paths = { 'GEM_PATH' => "#{dd_lib_injection_path}:#{ENV['GEM_PATH']}" } + ENV['GEM_PATH'] = Gem.path.join(':') + ENV['BUNDLE_GEMFILE'] = gemfile + utils.debug "Fork success: Using Gemfile `#{gemfile}`" else - injection_failure = true - dd_error_log "Injection failed: Unable to add datadog. Error output: #{add_output}" + utils.debug 'Fork abort' end - end - - dd_skip_injection! - if injection_failure - ::FileUtils.rm datadog_gemfile - ::FileUtils.rm datadog_lockfile - dd_send_telemetry([{ name: 'library_entrypoint.error', tags: ['error_type:injection_failure'] }]) else - # Look for pre-installed tracers - Gem.paths = { 'GEM_PATH' => "#{dd_lib_injection_path}:#{ENV['GEM_PATH']}" } - - # Also apply to the environment variable, to guarantee any spawned processes will respected the modified `GEM_PATH`. - ENV['GEM_PATH'] = Gem.path.join(':') - ENV['BUNDLE_GEMFILE'] = datadog_gemfile.to_s - - dd_send_telemetry([{ name: 'library_entrypoint.complete', tags: ['injection_forced:false'] }]) + utils.debug 'Fork not supported... skipping injection' + telemetry.emit(pid, utils.version, [{ name: 'library_entrypoint.abort', tags: ['reason:fork_not_supported'] }]) end -rescue Exception => e - if respond_to?(:dd_send_telemetry) - dd_send_telemetry( - [ - { name: 'library_entrypoint.error', - tags: ["error_type:#{e.class.name}"] } - ] - ) - end - pid = Process.respond_to?(:pid) ? Process.pid : 0 # Not available on all platforms - warn "[datadog][#{pid}][#{$0}] Injection failed: #{e.class.name} #{e.message}\nBacktrace: #{e.backtrace.join("\n")}" - - # Skip injection if the environment variable is set - ENV['DD_TRACE_SKIP_LIB_INJECTION'] = 'true' end diff --git a/lib/datadog/appsec.rb b/lib/datadog/appsec.rb index da38e6d749d..a00403bc5f2 100644 --- a/lib/datadog/appsec.rb +++ b/lib/datadog/appsec.rb @@ -4,6 +4,7 @@ require_relative 'appsec/extensions' require_relative 'appsec/scope' require_relative 'appsec/ext' +require_relative 'appsec/utils' module Datadog # Namespace for Datadog AppSec instrumentation @@ -23,12 +24,12 @@ def processor appsec_component.processor if appsec_component end - def reconfigure(ruleset:, actions:) + def reconfigure(ruleset:, actions:, telemetry:) appsec_component = components.appsec return unless appsec_component - appsec_component.reconfigure(ruleset: ruleset, actions: actions) + appsec_component.reconfigure(ruleset: ruleset, actions: actions, telemetry: telemetry) end def reconfigure_lock(&block) @@ -56,5 +57,6 @@ def components require_relative 'appsec/contrib/sinatra/integration' require_relative 'appsec/contrib/rails/integration' require_relative 'appsec/contrib/devise/integration' +require_relative 'appsec/contrib/graphql/integration' require_relative 'appsec/autoload' diff --git a/lib/datadog/appsec/assets/waf_rules/recommended.json b/lib/datadog/appsec/assets/waf_rules/recommended.json index a6e01468548..d05b1e629b2 100644 --- a/lib/datadog/appsec/assets/waf_rules/recommended.json +++ b/lib/datadog/appsec/assets/waf_rules/recommended.json @@ -1,7 +1,7 @@ { "version": "2.2", "metadata": { - "rules_version": "1.8.0" + "rules_version": "1.13.1" }, "rules": [ { @@ -118,6 +118,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "list": [ @@ -138,7 +141,10 @@ "appscan_fingerprint", "w00tw00t.at.isc.sans.dfind", "w00tw00t.at.blackhats.romanian.anti-sec" - ] + ], + "options": { + "enforce_word_boundary": true + } }, "operator": "phrase_match" } @@ -346,6 +352,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "list": [ @@ -1772,7 +1781,10 @@ "windows\\win.ini", "default\\ntuser.dat", "/var/run/secrets/kubernetes.io/serviceaccount" - ] + ], + "options": { + "enforce_word_boundary": true + } }, "operator": "phrase_match" } @@ -1839,6 +1851,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "^(?i:file|ftps?)://.*?\\?+$", @@ -1881,8 +1896,14 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], + "options": { + "enforce_word_boundary": true + }, "list": [ "${cdpath}", "${dirstack}", @@ -1900,7 +1921,6 @@ "$ifs", "$oldpwd", "$ostype", - "$path", "$pwd", "dev/fd/", "dev/null", @@ -2391,6 +2411,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "^\\(\\s*\\)\\s+{", @@ -2456,7 +2479,10 @@ "settings.local.php", "local.xml", ".env" - ] + ], + "options": { + "enforce_word_boundary": true + } }, "operator": "phrase_match" } @@ -2547,8 +2573,14 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], + "options": { + "enforce_word_boundary": true + }, "list": [ "$globals", "$_cookie", @@ -2608,6 +2640,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?:HTTP_(?:ACCEPT(?:_(?:ENCODING|LANGUAGE|CHARSET))?|(?:X_FORWARDED_FO|REFERE)R|(?:USER_AGEN|HOS)T|CONNECTION|KEEP_ALIVE)|PATH_(?:TRANSLATED|INFO)|ORIG_PATH_INFO|QUERY_STRING|REQUEST_URI|AUTH_TYPE)", @@ -2650,6 +2685,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "php://(?:std(?:in|out|err)|(?:in|out)put|fd|memory|temp|filter)", @@ -2691,6 +2729,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "list": [ @@ -2738,7 +2779,10 @@ "wp_safe_remote_post", "wp_safe_remote_request", "zlib_decode" - ] + ], + "options": { + "enforce_word_boundary": true + } }, "operator": "phrase_match" } @@ -2775,6 +2819,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "\\b(?:s(?:e(?:t(?:_(?:e(?:xception|rror)_handler|magic_quotes_runtime|include_path)|defaultstub)|ssion_s(?:et_save_handler|tart))|qlite_(?:(?:(?:unbuffered|single|array)_)?query|create_(?:aggregate|function)|p?open|exec)|tr(?:eam_(?:context_create|socket_client)|ipc?slashes|rev)|implexml_load_(?:string|file)|ocket_c(?:onnect|reate)|h(?:ow_sourc|a1_fil)e|pl_autoload_register|ystem)|p(?:r(?:eg_(?:replace(?:_callback(?:_array)?)?|match(?:_all)?|split)|oc_(?:(?:terminat|clos|nic)e|get_status|open)|int_r)|o(?:six_(?:get(?:(?:e[gu]|g)id|login|pwnam)|mk(?:fifo|nod)|ttyname|kill)|pen)|hp(?:_(?:strip_whitespac|unam)e|version|info)|g_(?:(?:execut|prepar)e|connect|query)|a(?:rse_(?:ini_file|str)|ssthru)|utenv)|r(?:unkit_(?:function_(?:re(?:defin|nam)e|copy|add)|method_(?:re(?:defin|nam)e|copy|add)|constant_(?:redefine|add))|e(?:(?:gister_(?:shutdown|tick)|name)_function|ad(?:(?:gz)?file|_exif_data|dir))|awurl(?:de|en)code)|i(?:mage(?:createfrom(?:(?:jpe|pn)g|x[bp]m|wbmp|gif)|(?:jpe|pn)g|g(?:d2?|if)|2?wbmp|xbm)|s_(?:(?:(?:execut|write?|read)ab|fi)le|dir)|ni_(?:get(?:_all)?|set)|terator_apply|ptcembed)|g(?:et(?:_(?:c(?:urrent_use|fg_va)r|meta_tags)|my(?:[gpu]id|inode)|(?:lastmo|cw)d|imagesize|env)|z(?:(?:(?:defla|wri)t|encod|fil)e|compress|open|read)|lob)|a(?:rray_(?:u(?:intersect(?:_u?assoc)?|diff(?:_u?assoc)?)|intersect_u(?:assoc|key)|diff_u(?:assoc|key)|filter|reduce|map)|ssert(?:_options)?|tob)|h(?:tml(?:specialchars(?:_decode)?|_entity_decode|entities)|(?:ash(?:_(?:update|hmac))?|ighlight)_file|e(?:ader_register_callback|x2bin))|f(?:i(?:le(?:(?:[acm]tim|inod)e|(?:_exist|perm)s|group)?|nfo_open)|tp_(?:nb_(?:ge|pu)|connec|ge|pu)t|(?:unction_exis|pu)ts|write|open)|o(?:b_(?:get_(?:c(?:ontents|lean)|flush)|end_(?:clean|flush)|clean|flush|start)|dbc_(?:result(?:_all)?|exec(?:ute)?|connect)|pendir)|m(?:b_(?:ereg(?:_(?:replace(?:_callback)?|match)|i(?:_replace)?)?|parse_str)|(?:ove_uploaded|d5)_file|ethod_exists|ysql_query|kdir)|e(?:x(?:if_(?:t(?:humbnail|agname)|imagetype|read_data)|ec)|scapeshell(?:arg|cmd)|rror_reporting|val)|c(?:url_(?:file_create|exec|init)|onvert_uuencode|reate_function|hr)|u(?:n(?:serialize|pack)|rl(?:de|en)code|[ak]?sort)|b(?:(?:son_(?:de|en)|ase64_en)code|zopen|toa)|(?:json_(?:de|en)cod|debug_backtrac|tmpfil)e|var_dump)(?:\\s|/\\*.*\\*/|//.*|#.*|\\\"|')*\\((?:(?:\\s|/\\*.*\\*/|//.*|#.*)*(?:\\$\\w+|[A-Z\\d]\\w*|\\w+\\(.*\\)|\\\\?\"(?:[^\"]|\\\\\"|\"\"|\"\\+\")*\\\\?\"|\\\\?'(?:[^']|''|'\\+')*\\\\?')(?:\\s|/\\*.*\\*/|//.*|#.*)*(?:(?:::|\\.|->)(?:\\s|/\\*.*\\*/|//.*|#.*)*\\w+(?:\\(.*\\))?)?,)*(?:(?:\\s|/\\*.*\\*/|//.*|#.*)*(?:\\$\\w+|[A-Z\\d]\\w*|\\w+\\(.*\\)|\\\\?\"(?:[^\"]|\\\\\"|\"\"|\"\\+\")*\\\\?\"|\\\\?'(?:[^']|''|'\\+')*\\\\?')(?:\\s|/\\*.*\\*/|//.*|#.*)*(?:(?:::|\\.|->)(?:\\s|/\\*.*\\*/|//.*|#.*)*\\w+(?:\\(.*\\))?)?)?\\)", @@ -2820,6 +2867,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "[oOcC]:\\d+:\\\".+?\\\":\\d+:{[\\W\\w]*}", @@ -2861,6 +2911,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?:(?:bzip|ssh)2|z(?:lib|ip)|(?:ph|r)ar|expect|glob|ogg)://", @@ -2904,6 +2957,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "\\b(?:(?:l(?:(?:utimes|chmod)(?:Sync)?|(?:stat|ink)Sync)|w(?:rite(?:(?:File|v)(?:Sync)?|Sync)|atchFile)|u(?:n(?:watchFile|linkSync)|times(?:Sync)?)|s(?:(?:ymlink|tat)Sync|pawn(?:File|Sync))|ex(?:ec(?:File(?:Sync)?|Sync)|istsSync)|a(?:ppendFile|ccess)(?:Sync)?|(?:Caveat|Inode)s|open(?:dir)?Sync|new\\s+Function|Availability|\\beval)\\s*\\(|m(?:ain(?:Module\\s*(?:\\W*\\s*(?:constructor|require)|\\[)|\\s*(?:\\W*\\s*(?:constructor|require)|\\[))|kd(?:temp(?:Sync)?|irSync)\\s*\\(|odule\\.exports\\s*=)|c(?:(?:(?:h(?:mod|own)|lose)Sync|reate(?:Write|Read)Stream|p(?:Sync)?)\\s*\\(|o(?:nstructor\\s*(?:\\W*\\s*_load|\\[)|pyFile(?:Sync)?\\s*\\())|f(?:(?:(?:s(?:(?:yncS)?|tatS)|datas(?:yncS)?)ync|ch(?:mod|own)(?:Sync)?)\\s*\\(|u(?:nction\\s*\\(\\s*\\)\\s*{|times(?:Sync)?\\s*\\())|r(?:e(?:(?:ad(?:(?:File|link|dir)?Sync|v(?:Sync)?)|nameSync)\\s*\\(|quire\\s*(?:\\W*\\s*main|\\[))|m(?:Sync)?\\s*\\()|process\\s*(?:\\W*\\s*(?:mainModule|binding)|\\[)|t(?:his\\.constructor|runcateSync\\s*\\()|_(?:\\$\\$ND_FUNC\\$\\$_|_js_function)|global\\s*(?:\\W*\\s*process|\\[)|String\\s*\\.\\s*fromCharCode|binding\\s*\\[)", @@ -2942,10 +2998,10 @@ "address": "server.request.path_params" }, { - "address": "grpc.server.request.message" + "address": "graphql.server.all_resolvers" }, { - "address": "graphql.server.all_resolvers" + "address": "graphql.server.resolver" } ], "regex": "\\b(?:w(?:atch|rite)|(?:spaw|ope)n|exists|close|fork|read)\\s*\\(", @@ -2996,14 +3052,15 @@ "address": "server.request.path_params" }, { - "address": "grpc.server.request.message" + "address": "graphql.server.all_resolvers" }, { - "address": "graphql.server.all_resolvers" + "address": "graphql.server.resolver" } ], "regex": "]*>[\\s\\S]*?", "options": { + "case_sensitive": false, "min_length": 8 } }, @@ -3056,6 +3113,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "\\bon(?:d(?:r(?:ag(?:en(?:ter|d)|leave|start|over)?|op)|urationchange|blclick)|s(?:e(?:ek(?:ing|ed)|arch|lect)|u(?:spend|bmit)|talled|croll|how)|m(?:ouse(?:(?:lea|mo)ve|o(?:ver|ut)|enter|down|up)|essage)|p(?:a(?:ge(?:hide|show)|(?:st|us)e)|lay(?:ing)?|rogress|aste|ointer(?:cancel|down|enter|leave|move|out|over|rawupdate|up))|c(?:anplay(?:through)?|o(?:ntextmenu|py)|hange|lick|ut)|a(?:nimation(?:iteration|start|end)|(?:fterprin|bor)t|uxclick|fterscriptexecute)|t(?:o(?:uch(?:cancel|start|move|end)|ggle)|imeupdate)|f(?:ullscreen(?:change|error)|ocus(?:out|in)?|inish)|(?:(?:volume|hash)chang|o(?:ff|n)lin)e|b(?:efore(?:unload|print)|lur)|load(?:ed(?:meta)?data|start|end)?|r(?:es(?:ize|et)|atechange)|key(?:press|down|up)|w(?:aiting|heel)|in(?:valid|put)|e(?:nded|rror)|unload)[\\s\\x0B\\x09\\x0C\\x3B\\x2C\\x28\\x3B]*?=[^=]", @@ -3112,6 +3172,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "[a-z]+=(?:[^:=]+:.+;)*?[^:=]+:url\\(javascript", @@ -3168,6 +3231,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?:\\W|^)(?:javascript:(?:[\\s\\S]+[=\\x5c\\(\\[\\.<]|[\\s\\S]*?(?:\\bname\\b|\\x5c[ux]\\d)))|@\\W*?i\\W*?m\\W*?p\\W*?o\\W*?r\\W*?t\\W*?(?:/\\*[\\s\\S]*?)?(?:[\\\"']|\\W*?u\\W*?r\\W*?l[\\s\\S]*?\\()|[^-]*?-\\W*?m\\W*?o\\W*?z\\W*?-\\W*?b\\W*?i\\W*?n\\W*?d\\W*?i\\W*?n\\W*?g[^:]*?:\\W*?u\\W*?r\\W*?l[\\s\\S]*?\\(", @@ -3211,8 +3277,14 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], + "options": { + "enforce_word_boundary": true + }, "list": [ "document.cookie", "document.write", @@ -3259,6 +3331,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?i:<.*[:]?vmlframe.*?[\\s/+]*?src[\\s/+]*=)", @@ -3303,6 +3378,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?i:(?:j|&#x?0*(?:74|4A|106|6A);?)(?:\\t|\\n|\\r|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:a|&#x?0*(?:65|41|97|61);?)(?:\\t|\\n|\\r|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:v|&#x?0*(?:86|56|118|76);?)(?:\\t|\\n|\\r|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:a|&#x?0*(?:65|41|97|61);?)(?:\\t|\\n|\\r|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:s|&#x?0*(?:83|53|115|73);?)(?:\\t|\\n|\\r|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:c|&#x?0*(?:67|43|99|63);?)(?:\\t|\\n|\\r|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:r|&#x?0*(?:82|52|114|72);?)(?:\\t|\\n|\\r|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:i|&#x?0*(?:73|49|105|69);?)(?:\\t|\\n|\\r|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:p|&#x?0*(?:80|50|112|70);?)(?:\\t|\\n|\\r|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:t|&#x?0*(?:84|54|116|74);?)(?:\\t|\\n|\\r|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?::|&(?:#x?0*(?:58|3A);?|colon;)).)", @@ -3347,6 +3425,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?i:(?:v|&#x?0*(?:86|56|118|76);?)(?:\\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:b|&#x?0*(?:66|42|98|62);?)(?:\\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:s|&#x?0*(?:83|53|115|73);?)(?:\\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:c|&#x?0*(?:67|43|99|63);?)(?:\\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:r|&#x?0*(?:82|52|114|72);?)(?:\\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:i|&#x?0*(?:73|49|105|69);?)(?:\\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:p|&#x?0*(?:80|50|112|70);?)(?:\\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:t|&#x?0*(?:84|54|116|74);?)(?:\\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?::|&(?:#x?0*(?:58|3A);?|colon;)).)", @@ -3391,6 +3472,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "]", @@ -3607,6 +3700,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": ")|<.*\\+AD4-", @@ -3691,6 +3790,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "![!+ ]\\[\\]", @@ -3733,6 +3835,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "\\b(?i:eval|settimeout|setinterval|new\\s+Function|alert|prompt)[\\s+]*\\([^\\)]", @@ -3770,10 +3875,10 @@ "address": "server.request.path_params" }, { - "address": "grpc.server.request.message" + "address": "graphql.server.all_resolvers" }, { - "address": "graphql.server.all_resolvers" + "address": "graphql.server.resolver" } ] }, @@ -3813,6 +3918,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?i:sleep\\(\\s*?\\d*?\\s*?\\)|benchmark\\(.*?\\,.*?\\))", @@ -3855,6 +3963,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?:[\\\"'`](?:;*?\\s*?waitfor\\s+(?:delay|time)\\s+[\\\"'`]|;.*?:\\s*?goto)|alter\\s*?\\w+.*?cha(?:racte)?r\\s+set\\s+\\w+)", @@ -3895,6 +4006,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?i:merge.*?using\\s*?\\(|execute\\s*?immediate\\s*?[\\\"'`]|match\\s*?[\\w(?:),+-]+\\s*?against\\s*?\\()", @@ -3936,6 +4050,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "union.*?select.*?from", @@ -3977,6 +4094,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?:;\\s*?shutdown\\s*?(?:[#;{]|\\/\\*|--)|waitfor\\s*?delay\\s?[\\\"'`]+\\s?\\d|select\\s*?pg_sleep)", @@ -4017,6 +4137,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?i:(?:\\[?\\$(?:(?:s(?:lic|iz)|wher)e|e(?:lemMatch|xists|q)|n(?:o[rt]|in?|e)|l(?:ike|te?)|t(?:ext|ype)|a(?:ll|nd)|jsonSchema|between|regex|x?or|div|mod)\\]?)\\b)", @@ -4060,6 +4183,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?:^[\\W\\d]+\\s*?(?:alter\\s*(?:a(?:(?:pplication\\s*rol|ggregat)e|s(?:ymmetric\\s*ke|sembl)y|u(?:thorization|dit)|vailability\\s*group)|c(?:r(?:yptographic\\s*provider|edential)|o(?:l(?:latio|um)|nversio)n|ertificate|luster)|s(?:e(?:rv(?:ice|er)|curity|quence|ssion|arch)|y(?:mmetric\\s*key|nonym)|togroup|chema)|m(?:a(?:s(?:ter\\s*key|k)|terialized)|e(?:ssage\\s*type|thod)|odule)|l(?:o(?:g(?:file\\s*group|in)|ckdown)|a(?:ngua|r)ge|ibrary)|t(?:(?:abl(?:espac)?|yp)e|r(?:igger|usted)|hreshold|ext)|p(?:a(?:rtition|ckage)|ro(?:cedur|fil)e|ermission)|d(?:i(?:mension|skgroup)|atabase|efault|omain)|r(?:o(?:l(?:lback|e)|ute)|e(?:sourc|mot)e)|f(?:u(?:lltext|nction)|lashback|oreign)|e(?:xte(?:nsion|rnal)|(?:ndpoi|ve)nt)|in(?:dex(?:type)?|memory|stance)|b(?:roker\\s*priority|ufferpool)|x(?:ml\\s*schema|srobject)|w(?:ork(?:load)?|rapper)|hi(?:erarchy|stogram)|o(?:perator|utline)|(?:nicknam|queu)e|us(?:age|er)|group|java|view)|union\\s*(?:(?:distin|sele)ct|all))\\b|\\b(?:(?:(?:trunc|cre|upd)at|renam)e|(?:inser|selec)t|de(?:lete|sc)|alter|load)\\s+(?:group_concat|load_file|char)\\b\\s*\\(?|[\\s(]load_file\\s*?\\(|[\\\"'`]\\s+regexp\\W)", @@ -4100,6 +4226,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?i:/\\*[!+](?:[\\w\\s=_\\-(?:)]+)?\\*/)", @@ -4142,6 +4271,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?i:\\.cookie\\b.*?;\\W*?(?:expires|domain)\\W*?=|\\bhttp-equiv\\W+set-cookie\\b)", @@ -4187,6 +4319,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "java\\.lang\\.(?:runtime|processbuilder)", @@ -4207,7 +4342,6 @@ "name": "Remote Command Execution: Java process spawn (CVE-2017-9805)", "tags": { "type": "java_code_injection", - "crs_id": "944110", "category": "attack_attempt", "cwe": "94", "capec": "1000/152/242" @@ -4233,50 +4367,21 @@ }, { "address": "graphql.server.all_resolvers" - } - ], - "regex": "(?:runtime|processbuilder)", - "options": { - "case_sensitive": true, - "min_length": 7 - } - }, - "operator": "match_regex" - }, - { - "parameters": { - "inputs": [ - { - "address": "server.request.query" - }, - { - "address": "server.request.body" - }, - { - "address": "server.request.path_params" }, { - "address": "server.request.headers.no_cookies" - }, - { - "address": "grpc.server.request.message" - }, - { - "address": "graphql.server.all_resolvers" + "address": "graphql.server.resolver" } ], - "regex": "(?:unmarshaller|base64data|java\\.)", + "regex": "(?:unmarshaller|base64data|java\\.).*(?:runtime|processbuilder)", "options": { - "case_sensitive": true, - "min_length": 5 + "case_sensitive": false, + "min_length": 13 } }, "operator": "match_regex" } ], - "transformers": [ - "lowercase" - ] + "transformers": [] }, { "id": "crs-944-130", @@ -4309,6 +4414,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "list": [ @@ -4344,6 +4452,7 @@ "java.lang.object", "java.lang.process", "java.lang.reflect", + "java.lang.runtime", "java.lang.string", "java.lang.stringbuilder", "java.lang.system", @@ -4353,7 +4462,10 @@ "org.apache.struts2", "org.omg.corba", "java.beans.xmldecode" - ] + ], + "options": { + "enforce_word_boundary": true + } }, "operator": "phrase_match" } @@ -4394,6 +4506,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?:class\\.module\\.classLoader\\.resources\\.context\\.parent\\.pipeline|springframework\\.context\\.support\\.FileSystemXmlApplicationContext)", @@ -4435,6 +4550,9 @@ { "address": "graphql.server.all_resolvers" }, + { + "address": "graphql.server.resolver" + }, { "address": "server.request.headers.no_cookies" } @@ -4475,10 +4593,13 @@ "address": "server.request.path_params" }, { - "address": "grpc.server.request.message" + "address": "graphql.server.all_resolvers" }, { - "address": "graphql.server.all_resolvers" + "address": "graphql.server.resolver" + }, + { + "address": "server.request.headers.no_cookies" } ], "regex": "[#%$]{(?:[^}]+[^\\w\\s}\\-_][^}]+|\\d+-\\d+)}", @@ -4522,6 +4643,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "[@#]ognl", @@ -4668,6 +4792,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "#(?:set|foreach|macro|parse|if)\\(.*\\)|<#assign.*>" @@ -4709,6 +4836,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "\\b(?:burpcollaborator\\.net|oastify\\.com)\\b" @@ -4750,9 +4880,12 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], - "regex": "\\bqualysperiscope\\.com\\b" + "regex": "\\bqualysperiscope\\.com\\b|\\.oscomm\\." }, "operator": "match_regex" } @@ -4791,6 +4924,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "\\bprbly\\.win\\b" @@ -4831,9 +4967,12 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], - "regex": "\\b(?:webhook\\.site|\\.canarytokens\\.com|vii\\.one|act1on3\\.ru|gdsburp\\.com)\\b" + "regex": "\\b(?:webhook\\.site|\\.canarytokens\\.com|vii\\.one|act1on3\\.ru|gdsburp\\.com|arcticwolf\\.net|oob\\.li|htbiw\\.com|h4\\.vc|mochan\\.cloud|imshopping\\.com|bootstrapnodejs\\.com|mooo-ng\\.com|securitytrails\\.com|canyouhackit\\.io|7bae\\.xyz)\\b" }, "operator": "match_regex" } @@ -4871,6 +5010,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "\\b(?:\\.ngrok\\.io|requestbin\\.com|requestbin\\.net)\\b" @@ -4912,6 +5054,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "\\bappspidered\\.rapid7\\." @@ -4953,9 +5098,12 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], - "regex": "\\b(?:interact\\.sh|oast\\.(?:pro|live|site|online|fun|me))\\b" + "regex": "\\b(?:interact\\.sh|oast\\.(?:pro|live|site|online|fun|me)|indusfacefinder\\.in|where\\.land|syhunt\\.net|tssrt\\.de|boardofcyber\\.io|assetnote-callback\\.com|praetorianlabs\\.dev|netspi\\.sh)\\b" }, "operator": "match_regex" } @@ -4994,9 +5142,12 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], - "regex": "\\b(?:\\.|(?:\\\\|&#)(?:0*46|x0*2e);)r87(?:\\.|(?:\\\\|&#)(?:0*46|x0*2e);)(?:me|com)\\b", + "regex": "\\b(?:\\.|(?:\\\\|&#)(?:0*46|x0*2e);)?r87(?:\\.|(?:\\\\|&#)(?:0*46|x0*2e);)(?:me|com)\\b", "options": { "case_sensitive": false, "min_length": 7 @@ -5008,14 +5159,15 @@ "transformers": [] }, { - "id": "dog-931-001", - "name": "RFI: URL Payload to well known RFI target", + "id": "dog-913-009", + "name": "WhiteHat Security OOB domain", "tags": { - "type": "rfi", + "type": "commercial_scanner", "category": "attack_attempt", - "cwe": "98", - "capec": "1000/152/175/253/193", - "confidence": "1" + "tool_name": "WhiteHatSecurity", + "cwe": "200", + "capec": "1000/118/169", + "confidence": "0" }, "conditions": [ { @@ -5030,17 +5182,23 @@ { "address": "server.request.path_params" }, + { + "address": "server.request.headers.no_cookies" + }, { "address": "grpc.server.request.message" }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], - "regex": "^(?i:file|ftps?|https?).*/rfiinc\\.txt\\?+$", + "regex": "\\bwhsec(?:\\.|(?:\\\\|&#)(?:0*46|x0*2e);)us\\b", "options": { - "case_sensitive": true, - "min_length": 17 + "case_sensitive": false, + "min_length": 8 } }, "operator": "match_regex" @@ -5049,33 +5207,46 @@ "transformers": [] }, { - "id": "dog-934-001", - "name": "XXE - XML file loads external entity", + "id": "dog-913-010", + "name": "Nessus OOB domain", "tags": { - "type": "xxe", + "type": "commercial_scanner", "category": "attack_attempt", - "cwe": "91", - "capec": "1000/152/248/250", + "tool_name": "Nessus", + "cwe": "200", + "capec": "1000/118/169", "confidence": "0" }, "conditions": [ { "parameters": { "inputs": [ + { + "address": "server.request.query" + }, { "address": "server.request.body" }, + { + "address": "server.request.path_params" + }, + { + "address": "server.request.headers.no_cookies" + }, { "address": "grpc.server.request.message" }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], - "regex": "(?:<\\?xml[^>]*>.*)]+SYSTEM\\s+[^>]+>", + "regex": "\\b\\.nessus\\.org\\b", "options": { "case_sensitive": false, - "min_length": 24 + "min_length": 8 } }, "operator": "match_regex" @@ -5084,31 +5255,20 @@ "transformers": [] }, { - "id": "dog-941-001", - "name": "XSS in source property", + "id": "dog-913-011", + "name": "Watchtowr OOB domain", "tags": { - "type": "xss", + "type": "commercial_scanner", "category": "attack_attempt", - "cwe": "83", - "capec": "1000/152/242/63/591/243", + "tool_name": "Watchtowr", + "cwe": "200", + "capec": "1000/118/169", "confidence": "0" }, "conditions": [ { "parameters": { "inputs": [ - { - "address": "server.request.headers.no_cookies", - "key_path": [ - "user-agent" - ] - }, - { - "address": "server.request.headers.no_cookies", - "key_path": [ - "referer" - ] - }, { "address": "server.request.query" }, @@ -5118,28 +5278,301 @@ { "address": "server.request.path_params" }, + { + "address": "server.request.headers.no_cookies" + }, { "address": "grpc.server.request.message" }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], - "regex": "<(?:iframe|esi:include)(?:(?:\\s|/)*\\w+=[\"'\\w]+)*(?:\\s|/)*src(?:doc)?=[\"']?(?:data:|javascript:|http:|//)[^\\s'\"]+['\"]?", + "regex": "\\bwatchtowr\\.com\\b", "options": { - "min_length": 14 + "case_sensitive": false, + "min_length": 8 } }, "operator": "match_regex" } ], - "transformers": [ - "removeNulls", - "urlDecodeUni" - ] + "transformers": [] }, { - "id": "dog-942-001", + "id": "dog-913-012", + "name": "AppCheck NG OOB domain", + "tags": { + "type": "commercial_scanner", + "category": "attack_attempt", + "tool_name": "AppCheckNG", + "cwe": "200", + "capec": "1000/118/169", + "confidence": "0" + }, + "conditions": [ + { + "parameters": { + "inputs": [ + { + "address": "server.request.query" + }, + { + "address": "server.request.body" + }, + { + "address": "server.request.path_params" + }, + { + "address": "server.request.headers.no_cookies" + }, + { + "address": "grpc.server.request.message" + }, + { + "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" + } + ], + "regex": "\\bptst\\.io\\b", + "options": { + "case_sensitive": false, + "min_length": 7 + } + }, + "operator": "match_regex" + } + ], + "transformers": [] + }, + { + "id": "dog-920-001", + "name": "JWT authentication bypass", + "tags": { + "type": "http_protocol_violation", + "category": "attack_attempt", + "cwe": "287", + "capec": "1000/225/115", + "confidence": "0" + }, + "conditions": [ + { + "parameters": { + "inputs": [ + { + "address": "server.request.cookies" + }, + { + "address": "server.request.headers.no_cookies", + "key_path": [ + "authorization" + ] + } + ], + "regex": "^(?:Bearer )?ey[A-Za-z0-9+_\\-/]*([QY][UW]x[Hn]Ij([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gOiAi[Tb][km]9[Ou][RZ][Q-Za-f]|[QY][UW]x[Hn]Ij([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ciID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]IDogI[km]5[Pv][Tb][km][U-X]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[QY][UW]x[Hn]IiA6ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]IDoi[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]Ij([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gOiAi[Tb][km]9[Ou][RZ][Q-Za-f]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ciOiAi[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*IDogI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]IDogI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]yIgO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ciIDoi[Tb][km]9[Ou][RZ][Q-Za-f]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*IDogI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]yIgOiJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ciO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]IDoi[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ciID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]IDogI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]yI6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]yI6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]IiA6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*IDogI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]yIgO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]Ij([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6ICJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ciOiJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*IDoi[Tb][km]9[Ou][RZ][Q-Za-f]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gOiJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ciO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]yIgOiAi[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]IDoi[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ciID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6ICJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]IjogI[km]5[Pv][Tb][km][U-X]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ciO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[QY][UW]x[Hn]IiA6I[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ciID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6I[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]yI6I[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]yI6ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ciIDogI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[QY][UW]x[Hn]IiA6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]IiA6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*IDoi[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ciO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6I[km]5[Pv][Tb][km][U-X]|[QY][UW]x[Hn]IiA6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]yI6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]yIgO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gOiJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ID([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gI[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]yIgO([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[\\x2b\\x2f-9A-Za-z]ICJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*ICJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]I([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*IDoi[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]A6I[km]5[Pv][Tb][km][U-X]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]y([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gOiJ[Ou][Tb][02]5[Fl]|[QY][UW]x[Hn]Ijoi[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z]{2}[159BFJNRVZdhlptx][Bh][Tb][EG]ci([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[048AEIMQUYcgkosw]gOiAi[Tb][km]9[Ou][RZ][Q-Za-f]|[\\x2b\\x2f-9A-Za-z][02EGUWkm]F[Ms][RZ]yI6([048ACEIMQSUYcgikoswy]|[\\x2b\\x2f-9A-Za-z]I)*[CSiy]Ai[Tb][km]9[Ou][RZ][Q-Za-f])[A-Za-z0-9+-/]*\\.[A-Za-z0-9+_\\-/]+\\.(?:[A-Za-z0-9+_\\-/]+)?$", + "options": { + "case_sensitive": true + } + }, + "operator": "match_regex" + } + ], + "transformers": [] + }, + { + "id": "dog-931-001", + "name": "RFI: URL Payload to well known RFI target", + "tags": { + "type": "rfi", + "category": "attack_attempt", + "cwe": "98", + "capec": "1000/152/175/253/193", + "confidence": "1" + }, + "conditions": [ + { + "parameters": { + "inputs": [ + { + "address": "server.request.query" + }, + { + "address": "server.request.body" + }, + { + "address": "server.request.path_params" + }, + { + "address": "grpc.server.request.message" + }, + { + "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" + } + ], + "regex": "^(?i:file|ftps?|https?).*/rfiinc\\.txt\\?+$", + "options": { + "case_sensitive": true, + "min_length": 17 + } + }, + "operator": "match_regex" + } + ], + "transformers": [] + }, + { + "id": "dog-932-100", + "name": "Shell spawn executing network command", + "tags": { + "type": "command_injection", + "category": "attack_attempt", + "cwe": "77", + "capec": "1000/152/248/88", + "confidence": "0" + }, + "conditions": [ + { + "parameters": { + "inputs": [ + { + "address": "server.request.query" + }, + { + "address": "server.request.body" + }, + { + "address": "server.request.path_params" + }, + { + "address": "server.request.headers.no_cookies" + }, + { + "address": "grpc.server.request.message" + }, + { + "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" + } + ], + "regex": "(?:(?:['\"\\x60({|;&]|(?:^|['\"\\x60({|;&])(?:cmd(?:\\.exe)?\\s+(?:/\\w(?::\\w+)?\\s+)*))(?:ping|curl|wget|telnet)|\\bnslookup)[\\s,]", + "options": { + "case_sensitive": true, + "min_length": 5 + } + }, + "operator": "match_regex" + } + ], + "transformers": [] + }, + { + "id": "dog-934-001", + "name": "XXE - XML file loads external entity", + "tags": { + "type": "xxe", + "category": "attack_attempt", + "cwe": "91", + "capec": "1000/152/248/250", + "confidence": "1" + }, + "conditions": [ + { + "parameters": { + "inputs": [ + { + "address": "server.request.body" + }, + { + "address": "grpc.server.request.message" + }, + { + "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" + } + ], + "regex": "(?:<\\?xml[^>]*>.*)]+SYSTEM\\s+[^>]+>", + "options": { + "case_sensitive": false, + "min_length": 24 + } + }, + "operator": "match_regex" + } + ], + "transformers": [] + }, + { + "id": "dog-941-001", + "name": "XSS in source property", + "tags": { + "type": "xss", + "category": "attack_attempt", + "cwe": "83", + "capec": "1000/152/242/63/591/243", + "confidence": "1" + }, + "conditions": [ + { + "parameters": { + "inputs": [ + { + "address": "server.request.headers.no_cookies", + "key_path": [ + "user-agent" + ] + }, + { + "address": "server.request.headers.no_cookies", + "key_path": [ + "referer" + ] + }, + { + "address": "server.request.query" + }, + { + "address": "server.request.body" + }, + { + "address": "server.request.path_params" + }, + { + "address": "grpc.server.request.message" + }, + { + "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" + } + ], + "regex": "<(?:iframe|esi:include)(?:(?:\\s|/)*\\w+=[\"'\\w]+)*(?:\\s|/)*src(?:doc)?=[\"']?(?:data:|javascript:|http:|dns:|//)[^\\s'\"]+['\"]?", + "options": { + "min_length": 14 + } + }, + "operator": "match_regex" + } + ], + "transformers": [ + "removeNulls", + "urlDecodeUni" + ] + }, + { + "id": "dog-942-001", "name": "Blind XSS callback domains", "tags": { "type": "xss", @@ -5169,9 +5602,12 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], - "regex": "https?:\\/\\/(?:.*\\.)?(?:bxss\\.in|xss\\.ht|js\\.rip)", + "regex": "https?:\\/\\/(?:.*\\.)?(?:bxss\\.(?:in|me)|xss\\.ht|js\\.rip)", "options": { "case_sensitive": false } @@ -5209,6 +5645,9 @@ { "operator": "phrase_match", "parameters": { + "options": { + "enforce_word_boundary": true + }, "inputs": [ { "address": "server.request.uri.raw" @@ -5409,7 +5848,8 @@ "/website.php", "/stats.php", "/assets/plugins/mp3_id/mp3_id.php", - "/siteminderagent/forms/smpwservices.fcc" + "/siteminderagent/forms/smpwservices.fcc", + "/eval-stdin.php" ] } } @@ -5755,10 +6195,246 @@ "transformers": [] }, { - "id": "sqr-000-001", - "name": "SSRF: Try to access the credential manager of the main cloud services", + "id": "nfd-000-010", + "name": "Detect failed attempts to find API documentation", "tags": { - "type": "ssrf", + "type": "security_scanner", + "category": "attack_attempt", + "cwe": "200", + "capec": "1000/118/169", + "confidence": "0" + }, + "conditions": [ + { + "operator": "match_regex", + "parameters": { + "inputs": [ + { + "address": "server.response.status" + } + ], + "regex": "^404$", + "options": { + "case_sensitive": true + } + } + }, + { + "operator": "match_regex", + "parameters": { + "inputs": [ + { + "address": "server.request.uri.raw" + } + ], + "regex": "(?:/swagger\\b|/api[-/]docs?\\b)", + "options": { + "case_sensitive": false + } + } + } + ], + "transformers": [] + }, + { + "id": "rasp-930-100", + "name": "Local file inclusion exploit", + "tags": { + "type": "lfi", + "category": "vulnerability_trigger", + "cwe": "22", + "capec": "1000/255/153/126", + "confidence": "0", + "module": "rasp" + }, + "conditions": [ + { + "parameters": { + "resource": [ + { + "address": "server.io.fs.file" + } + ], + "params": [ + { + "address": "server.request.query" + }, + { + "address": "server.request.body" + }, + { + "address": "server.request.path_params" + }, + { + "address": "grpc.server.request.message" + }, + { + "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" + } + ] + }, + "operator": "lfi_detector" + } + ], + "transformers": [], + "on_match": [ + "stack_trace" + ] + }, + { + "id": "rasp-932-100", + "name": "Shell injection exploit", + "tags": { + "type": "command_injection", + "category": "vulnerability_trigger", + "cwe": "77", + "capec": "1000/152/248/88", + "confidence": "0", + "module": "rasp" + }, + "conditions": [ + { + "parameters": { + "resource": [ + { + "address": "server.sys.shell.cmd" + } + ], + "params": [ + { + "address": "server.request.query" + }, + { + "address": "server.request.body" + }, + { + "address": "server.request.path_params" + }, + { + "address": "grpc.server.request.message" + }, + { + "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" + } + ] + }, + "operator": "shi_detector" + } + ], + "transformers": [], + "on_match": [ + "stack_trace" + ] + }, + { + "id": "rasp-934-100", + "name": "Server-side request forgery exploit", + "tags": { + "type": "ssrf", + "category": "vulnerability_trigger", + "cwe": "918", + "capec": "1000/225/115/664", + "confidence": "0", + "module": "rasp" + }, + "conditions": [ + { + "parameters": { + "resource": [ + { + "address": "server.io.net.url" + } + ], + "params": [ + { + "address": "server.request.query" + }, + { + "address": "server.request.body" + }, + { + "address": "server.request.path_params" + }, + { + "address": "grpc.server.request.message" + }, + { + "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" + } + ] + }, + "operator": "ssrf_detector" + } + ], + "transformers": [], + "on_match": [ + "stack_trace" + ] + }, + { + "id": "rasp-942-100", + "name": "SQL injection exploit", + "tags": { + "type": "sql_injection", + "category": "vulnerability_trigger", + "cwe": "89", + "capec": "1000/152/248/66", + "confidence": "0", + "module": "rasp" + }, + "conditions": [ + { + "parameters": { + "resource": [ + { + "address": "server.db.statement" + } + ], + "params": [ + { + "address": "server.request.query" + }, + { + "address": "server.request.body" + }, + { + "address": "server.request.path_params" + }, + { + "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" + } + ], + "db_type": [ + { + "address": "server.db.system" + } + ] + }, + "operator": "sqli_detector" + } + ], + "transformers": [], + "on_match": [ + "stack_trace" + ] + }, + { + "id": "sqr-000-001", + "name": "SSRF: Try to access the credential manager of the main cloud services", + "tags": { + "type": "ssrf", "category": "attack_attempt", "cwe": "918", "capec": "1000/225/115/664", @@ -5782,6 +6458,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?i)^\\W*((http|ftp)s?://)?\\W*((::f{4}:)?(169|(0x)?0*a9|0+251)\\.?(254|(0x)?0*fe|0+376)[0-9a-fx\\.:]+|metadata\\.google\\.internal|metadata\\.goog)\\W*/", @@ -5823,6 +6502,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "require\\(['\"][\\w\\.]+['\"]\\)|process\\.\\w+\\([\\w\\.]*\\)|\\.toString\\(\\)", @@ -5868,6 +6550,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?i)[&|]\\s*type\\s+%\\w+%\\\\+\\w+\\.ini\\s*[&|]" @@ -5908,6 +6593,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?i)[&|]\\s*cat\\s*\\/etc\\/[\\w\\.\\/]*passwd\\s*[&|]" @@ -5950,6 +6638,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?i)[&|]\\s*timeout\\s+/t\\s+\\d+\\s*[&|]" @@ -5987,6 +6678,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "http(s?):\\/\\/([A-Za-z0-9\\.\\-\\_]+|\\[[A-Fa-f0-9\\:]+\\]|):5986\\/wsman", @@ -6027,6 +6721,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "^(jar:)?(http|https):\\/\\/([0-9oq]{1,5}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}|[0-9]{1,10})(:[0-9]{1,5})?(\\/[^:@]*)?$" @@ -6066,6 +6763,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "^(jar:)?(http|https):\\/\\/((\\[)?[:0-9a-f\\.x]{2,}(\\])?)(:[0-9]{1,5})?(\\/[^:@]*)?$" @@ -6108,9 +6808,12 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], - "regex": "(http|https):\\/\\/(?:.*\\.)?(?:burpcollaborator\\.net|localtest\\.me|mail\\.ebc\\.apple\\.com|bugbounty\\.dod\\.network|.*\\.[nx]ip\\.io|oastify\\.com|oast\\.(?:pro|live|site|online|fun|me)|sslip\\.io|requestbin\\.com|requestbin\\.net|hookbin\\.com|webhook\\.site|canarytokens\\.com|interact\\.sh|ngrok\\.io|bugbounty\\.click|prbly\\.win|qualysperiscope\\.com|vii.one|act1on3.ru)" + "regex": "(http|https):\\/\\/(?:.*\\.)?(?:burpcollaborator\\.net|localtest\\.me|mail\\.ebc\\.apple\\.com|bugbounty\\.dod\\.network|.*\\.[nx]ip\\.io|oastify\\.com|oast\\.(?:pro|live|site|online|fun|me)|sslip\\.io|requestbin\\.com|requestbin\\.net|hookbin\\.com|webhook\\.site|canarytokens\\.com|interact\\.sh|ngrok\\.io|bugbounty\\.click|prbly\\.win|qualysperiscope\\.com|vii\\.one|act1on3\\.ru)" }, "operator": "match_regex" } @@ -6144,10 +6847,10 @@ "address": "server.request.headers.no_cookies" }, { - "address": "grpc.server.request.message" + "address": "graphql.server.all_resolvers" }, { - "address": "graphql.server.all_resolvers" + "address": "graphql.server.resolver" } ], "regex": "^(jar:)?((file|netdoc):\\/\\/[\\\\\\/]+|(dict|gopher|ldap|sftp|tftp):\\/\\/.*:[0-9]{1,5})" @@ -6189,10 +6892,10 @@ "address": "server.request.headers.no_cookies" }, { - "address": "grpc.server.request.message" + "address": "graphql.server.all_resolvers" }, { - "address": "graphql.server.all_resolvers" + "address": "graphql.server.resolver" } ], "regex": "\\${[^j]*j[^n]*n[^d]*d[^i]*i[^:]*:[^}]*}" @@ -7610,6 +8313,35 @@ ], "transformers": [] }, + { + "id": "ua0-600-63x", + "name": "FeroxBuster", + "tags": { + "type": "attack_tool", + "category": "attack_attempt", + "cwe": "200", + "capec": "1000/118/169", + "tool_name": "feroxbuster", + "confidence": "1" + }, + "conditions": [ + { + "parameters": { + "inputs": [ + { + "address": "server.request.headers.no_cookies", + "key_path": [ + "user-agent" + ] + } + ], + "regex": "^feroxbuster/" + }, + "operator": "match_regex" + } + ], + "transformers": [] + }, { "id": "ua0-600-6xx", "name": "Stealthy scanner", @@ -7631,7 +8363,7 @@ ] } ], - "regex": "mozilla/4\\.0 \\(compatible(; msie (?:6\\.0; win32|4\\.0; Windows NT))?\\)", + "regex": "mozilla/4\\.0 \\(compatible(; msie (?:6\\.0; (?:win32|Windows NT 5\\.0)|4\\.0; Windows NT))?\\)", "options": { "case_sensitive": false } @@ -7699,5 +8431,1349 @@ ], "transformers": [] } + ], + "processors": [ + { + "id": "http-endpoint-fingerprint", + "generator": "http_endpoint_fingerprint", + "conditions": [ + { + "operator": "exists", + "parameters": { + "inputs": [ + { + "address": "waf.context.event" + }, + { + "address": "server.business_logic.users.login.failure" + }, + { + "address": "server.business_logic.users.login.success" + } + ] + } + } + ], + "parameters": { + "mappings": [ + { + "method": [ + { + "address": "server.request.method" + } + ], + "uri_raw": [ + { + "address": "server.request.uri.raw" + } + ], + "body": [ + { + "address": "server.request.body" + } + ], + "query": [ + { + "address": "server.request.query" + } + ], + "output": "_dd.appsec.fp.http.endpoint" + } + ] + }, + "evaluate": false, + "output": true + }, + { + "id": "extract-content", + "generator": "extract_schema", + "conditions": [ + { + "operator": "equals", + "parameters": { + "inputs": [ + { + "address": "waf.context.processor", + "key_path": [ + "extract-schema" + ] + } + ], + "type": "boolean", + "value": true + } + } + ], + "parameters": { + "mappings": [ + { + "inputs": [ + { + "address": "server.request.body" + } + ], + "output": "_dd.appsec.s.req.body" + }, + { + "inputs": [ + { + "address": "server.request.cookies" + } + ], + "output": "_dd.appsec.s.req.cookies" + }, + { + "inputs": [ + { + "address": "server.request.query" + } + ], + "output": "_dd.appsec.s.req.query" + }, + { + "inputs": [ + { + "address": "server.request.path_params" + } + ], + "output": "_dd.appsec.s.req.params" + }, + { + "inputs": [ + { + "address": "server.response.body" + } + ], + "output": "_dd.appsec.s.res.body" + }, + { + "inputs": [ + { + "address": "graphql.server.all_resolvers" + } + ], + "output": "_dd.appsec.s.graphql.all_resolvers" + }, + { + "inputs": [ + { + "address": "graphql.server.resolver" + } + ], + "output": "_dd.appsec.s.graphql.resolver" + } + ], + "scanners": [ + { + "tags": { + "category": "payment" + } + }, + { + "tags": { + "category": "pii" + } + } + ] + }, + "evaluate": false, + "output": true + }, + { + "id": "extract-headers", + "generator": "extract_schema", + "conditions": [ + { + "operator": "equals", + "parameters": { + "inputs": [ + { + "address": "waf.context.processor", + "key_path": [ + "extract-schema" + ] + } + ], + "type": "boolean", + "value": true + } + } + ], + "parameters": { + "mappings": [ + { + "inputs": [ + { + "address": "server.request.headers.no_cookies" + } + ], + "output": "_dd.appsec.s.req.headers" + }, + { + "inputs": [ + { + "address": "server.response.headers.no_cookies" + } + ], + "output": "_dd.appsec.s.res.headers" + } + ], + "scanners": [ + { + "tags": { + "category": "credentials" + } + }, + { + "tags": { + "category": "pii" + } + } + ] + }, + "evaluate": false, + "output": true + }, + { + "id": "http-header-fingerprint", + "generator": "http_header_fingerprint", + "conditions": [ + { + "operator": "exists", + "parameters": { + "inputs": [ + { + "address": "waf.context.event" + }, + { + "address": "server.business_logic.users.login.failure" + }, + { + "address": "server.business_logic.users.login.success" + } + ] + } + } + ], + "parameters": { + "mappings": [ + { + "headers": [ + { + "address": "server.request.headers.no_cookies" + } + ], + "output": "_dd.appsec.fp.http.header" + } + ] + }, + "evaluate": false, + "output": true + }, + { + "id": "http-network-fingerprint", + "generator": "http_network_fingerprint", + "conditions": [ + { + "operator": "exists", + "parameters": { + "inputs": [ + { + "address": "waf.context.event" + }, + { + "address": "server.business_logic.users.login.failure" + }, + { + "address": "server.business_logic.users.login.success" + } + ] + } + } + ], + "parameters": { + "mappings": [ + { + "headers": [ + { + "address": "server.request.headers.no_cookies" + } + ], + "output": "_dd.appsec.fp.http.network" + } + ] + }, + "evaluate": false, + "output": true + }, + { + "id": "session-fingerprint", + "generator": "session_fingerprint", + "conditions": [ + { + "operator": "exists", + "parameters": { + "inputs": [ + { + "address": "waf.context.event" + }, + { + "address": "server.business_logic.users.login.failure" + }, + { + "address": "server.business_logic.users.login.success" + } + ] + } + } + ], + "parameters": { + "mappings": [ + { + "cookies": [ + { + "address": "server.request.cookies" + } + ], + "session_id": [ + { + "address": "usr.session_id" + } + ], + "user_id": [ + { + "address": "usr.id" + } + ], + "output": "_dd.appsec.fp.session" + } + ] + }, + "evaluate": false, + "output": true + } + ], + "scanners": [ + { + "id": "406f8606-52c4-4663-8db9-df70f9e8766c", + "name": "ZIP Code", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:zip|postal)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "^[0-9]{5}(?:-[0-9]{4})?$", + "options": { + "case_sensitive": true, + "min_length": 5 + } + } + }, + "tags": { + "type": "zipcode", + "category": "address" + } + }, + { + "id": "JU1sRk3mSzqSUJn6GrVn7g", + "name": "American Express Card Scanner (4+4+4+3 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b3[47]\\d{2}(?:(?:\\s\\d{4}\\s\\d{4}\\s\\d{3})|(?:\\,\\d{4}\\,\\d{4}\\,\\d{3})|(?:-\\d{4}-\\d{4}-\\d{3})|(?:\\.\\d{4}\\.\\d{4}\\.\\d{3}))\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "amex", + "category": "payment" + } + }, + { + "id": "edmH513UTQWcRiQ9UnzHlw-mod", + "name": "American Express Card Scanner (4+6|5+5|6 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b3[47]\\d{2}(?:(?:\\s\\d{5,6}\\s\\d{5,6})|(?:\\.\\d{5,6}\\.\\d{5,6})|(?:-\\d{5,6}-\\d{5,6})|(?:,\\d{5,6},\\d{5,6}))\\b", + "options": { + "case_sensitive": false, + "min_length": 17 + } + } + }, + "tags": { + "type": "card", + "card_type": "amex", + "category": "payment" + } + }, + { + "id": "e6K4h_7qTLaMiAbaNXoSZA", + "name": "American Express Card Scanner (8+7 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b3[47]\\d{6}(?:(?:\\s\\d{7})|(?:\\,\\d{7})|(?:-\\d{7})|(?:\\.\\d{7}))\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "amex", + "category": "payment" + } + }, + { + "id": "K2rZflWzRhGM9HiTc6whyQ", + "name": "American Express Card Scanner (1x15 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b3[47]\\d{13}\\b", + "options": { + "case_sensitive": false, + "min_length": 15 + } + } + }, + "tags": { + "type": "card", + "card_type": "amex", + "category": "payment" + } + }, + { + "id": "9d7756e343cefa22a5c098e1092590f806eb5446", + "name": "Basic Authentication Scanner", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\bauthorization\\b", + "options": { + "case_sensitive": false, + "min_length": 13 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "^basic\\s+[A-Za-z0-9+/=]+", + "options": { + "case_sensitive": false, + "min_length": 7 + } + } + }, + "tags": { + "type": "basic_auth", + "category": "credentials" + } + }, + { + "id": "mZy8XjZLReC9smpERXWnnw", + "name": "Bearer Authentication Scanner", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\bauthorization\\b", + "options": { + "case_sensitive": false, + "min_length": 13 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "^bearer\\s+[-a-z0-9._~+/]{4,}", + "options": { + "case_sensitive": false, + "min_length": 11 + } + } + }, + "tags": { + "type": "bearer_token", + "category": "credentials" + } + }, + { + "id": "450239afc250a19799b6c03dc0e16fd6a4b2a1af", + "name": "Canadian Social Insurance Number Scanner", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:social[\\s_]?(?:insurance(?:\\s+number)?)?|SIN|Canadian[\\s_]?(?:social[\\s_]?(?:insurance)?|insurance[\\s_]?number)?)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b\\d{3}-\\d{3}-\\d{3}\\b", + "options": { + "case_sensitive": false, + "min_length": 11 + } + } + }, + "tags": { + "type": "canadian_sin", + "category": "pii" + } + }, + { + "id": "87a879ff33693b46c8a614d8211f5a2c289beca0", + "name": "Digest Authentication Scanner", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\bauthorization\\b", + "options": { + "case_sensitive": false, + "min_length": 13 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "^digest\\s+", + "options": { + "case_sensitive": false, + "min_length": 7 + } + } + }, + "tags": { + "type": "digest_auth", + "category": "credentials" + } + }, + { + "id": "qWumeP1GQUa_E4ffAnT-Yg", + "name": "American Express Card Scanner (1x14 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "(?:30[0-59]\\d|3[689]\\d{2})(?:\\d{10})", + "options": { + "case_sensitive": false, + "min_length": 14 + } + } + }, + "tags": { + "type": "card", + "card_type": "diners", + "category": "payment" + } + }, + { + "id": "NlTWWM5LS6W0GSqBLuvtRw", + "name": "Diners Card Scanner (4+4+4+2 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:30[0-59]\\d|3[689]\\d{2})(?:(?:\\s\\d{4}\\s\\d{4}\\s\\d{2})|(?:\\,\\d{4}\\,\\d{4}\\,\\d{2})|(?:-\\d{4}-\\d{4}-\\d{2})|(?:\\.\\d{4}\\.\\d{4}\\.\\d{2}))\\b", + "options": { + "case_sensitive": false, + "min_length": 17 + } + } + }, + "tags": { + "type": "card", + "card_type": "diners", + "category": "payment" + } + }, + { + "id": "Xr5VdbQSTXitYGGiTfxBpw", + "name": "Diners Card Scanner (4+6+4 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:30[0-59]\\d|3[689]\\d{2})(?:(?:\\s\\d{6}\\s\\d{4})|(?:\\.\\d{6}\\.\\d{4})|(?:-\\d{6}-\\d{4})|(?:,\\d{6},\\d{4}))\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "diners", + "category": "payment" + } + }, + { + "id": "gAbunN_WQNytxu54DjcbAA-mod", + "name": "Diners Card Scanner (8+6 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:30[0-59]\\d{5}|3[689]\\d{6})\\s?(?:(?:\\s\\d{6})|(?:\\,\\d{6})|(?:-\\d{6})|(?:\\.\\d{6}))\\b", + "options": { + "case_sensitive": false, + "min_length": 14 + } + } + }, + "tags": { + "type": "card", + "card_type": "diners", + "category": "payment" + } + }, + { + "id": "9cs4qCfEQBeX17U7AepOvQ", + "name": "MasterCard Scanner (2x8 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:6221(?:2[6-9]|[3-9][0-9])\\d{2}(?:,\\d{8}|\\s\\d{8}|-\\d{8}|\\.\\d{8})|6229(?:[01][0-9]|2[0-5])\\d{2}(?:,\\d{8}|\\s\\d{8}|-\\d{8}|\\.\\d{8})|(?:6011|65\\d{2}|64[4-9]\\d|622[2-8])\\d{4}(?:,\\d{8}|\\s\\d{8}|-\\d{8}|\\.\\d{8}))\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "discover", + "category": "payment" + } + }, + { + "id": "YBIDWJIvQWW_TFOyU0CGJg", + "name": "Discover Card Scanner (4x4 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:(?:(?:6221(?:2[6-9]|[3-9][0-9])\\d{2}(?:,\\d{4}){2})|(?:6221\\s(?:2[6-9]|[3-9][0-9])\\d{2}(?:\\s\\d{4}){2})|(?:6221\\.(?:2[6-9]|[3-9][0-9])\\d{2}(?:\\.\\d{4}){2})|(?:6221-(?:2[6-9]|[3-9][0-9])\\d{2}(?:-\\d{4}){2}))|(?:(?:6229(?:[01][0-9]|2[0-5])\\d{2}(?:,\\d{4}){2})|(?:6229\\s(?:[01][0-9]|2[0-5])\\d{2}(?:\\s\\d{4}){2})|(?:6229\\.(?:[01][0-9]|2[0-5])\\d{2}(?:\\.\\d{4}){2})|(?:6229-(?:[01][0-9]|2[0-5])\\d{2}(?:-\\d{4}){2}))|(?:(?:6011|65\\d{2}|64[4-9]\\d|622[2-8])(?:(?:\\s\\d{4}){3}|(?:\\.\\d{4}){3}|(?:-\\d{4}){3}|(?:,\\d{4}){3})))\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "discover", + "category": "payment" + } + }, + { + "id": "12cpbjtVTMaMutFhh9sojQ", + "name": "Discover Card Scanner (1x16 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:6221(?:2[6-9]|[3-9][0-9])\\d{10}|6229(?:[01][0-9]|2[0-5])\\d{10}|(?:6011|65\\d{2}|64[4-9]\\d|622[2-8])\\d{12})\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "discover", + "category": "payment" + } + }, + { + "id": "PuXiVTCkTHOtj0Yad1ppsw", + "name": "Standard E-mail Address", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:(?:e[-\\s]?)?mail|address|sender|\\bto\\b|from|recipient)\\b", + "options": { + "case_sensitive": false, + "min_length": 2 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b[\\w!#$%&'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+/=?`{|}~^-]+)*(%40|@)(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}\\b", + "options": { + "case_sensitive": false, + "min_length": 5 + } + } + }, + "tags": { + "type": "email", + "category": "pii" + } + }, + { + "id": "8VS2RKxzR8a_95L5fuwaXQ", + "name": "IBAN", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:iban|account|sender|receiver)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:NO\\d{2}(?:[ \\-]?\\d{4}){2}[ \\-]?\\d{3}|BE\\d{2}(?:[ \\-]?\\d{4}){3}|(?:DK|FO|FI|GL|SD)\\d{2}(?:[ \\-]?\\d{4}){3}[ \\-]?\\d{2}|NL\\d{2}[ \\-]?[A-Z]{4}(?:[ \\-]?\\d{4}){2}[ \\-]?\\d{2}|MK\\d{2}[ \\-]?\\d{3}[A-Z0-9](?:[ \\-]?[A-Z0-9]{4}){2}[ \\-]?[A-Z0-9]\\d{2}|SI\\d{17}|(?:AT|BA|EE|LT|XK)\\d{18}|(?:LU|KZ|EE|LT)\\d{5}[A-Z0-9]{13}|LV\\d{2}[A-Z]{4}[A-Z0-9]{13}|(?:LI|CH)\\d{2}[ \\-]?\\d{4}[ \\-]?\\d[A-Z0-9]{3}(?:[ \\-]?[A-Z0-9]{4}){2}[ \\-]?[A-Z0-9]|HR\\d{2}(?:[ \\-]?\\d{4}){4}[ \\-]?\\d|GE\\d{2}[ \\-]?[A-Z0-9]{2}\\d{2}\\d{14}|VA\\d{20}|BG\\d{2}[A-Z]{4}\\d{6}[A-Z0-9]{8}|BH\\d{2}[A-Z]{4}[A-Z0-9]{14}|GB\\d{2}[A-Z]{4}(?:[ \\-]?\\d{4}){3}[ \\-]?\\d{2}|IE\\d{2}[ \\-]?[A-Z0-9]{4}(?:[ \\-]?\\d{4}){3}[ \\-]?\\d{2}|(?:CR|DE|ME|RS)\\d{2}(?:[ \\-]?\\d{4}){4}[ \\-]?\\d{2}|(?:AE|TL|IL)\\d{2}(?:[ \\-]?\\d{4}){4}[ \\-]?\\d{3}|GI\\d{2}[ \\-]?[A-Z]{4}(?:[ \\-]?[A-Z0-9]{4}){3}[ \\-]?[A-Z0-9]{3}|IQ\\d{2}[ \\-]?[A-Z]{4}(?:[ \\-]?\\d{4}){3}[ \\-]?\\d{3}|MD\\d{2}(?:[ \\-]?[A-Z0-9]{4}){5}|SA\\d{2}[ \\-]?\\d{2}[A-Z0-9]{2}(?:[ \\-]?[A-Z0-9]{4}){4}|RO\\d{2}[ \\-]?[A-Z]{4}(?:[ \\-]?[A-Z0-9]{4}){4}|(?:PK|VG)\\d{2}[ \\-]?[A-Z0-9]{4}(?:[ \\-]?\\d{4}){4}|AD\\d{2}(?:[ \\-]?\\d{4}){2}(?:[ \\-]?[A-Z0-9]{4}){3}|(?:CZ|SK|ES|SE|TN)\\d{2}(?:[ \\-]?\\d{4}){5}|(?:LY|PT|ST)\\d{2}(?:[ \\-]?\\d{4}){5}[ \\-]?\\d|TR\\d{2}[ \\-]?\\d{4}[ \\-]?\\d[A-Z0-9]{3}(?:[ \\-]?[A-Z0-9]{4}){3}[ \\-]?[A-Z0-9]{2}|IS\\d{2}(?:[ \\-]?\\d{4}){5}[ \\-]?\\d{2}|(?:IT|SM)\\d{2}[ \\-]?[A-Z]\\d{3}[ \\-]?\\d{4}[ \\-]?\\d{3}[A-Z0-9](?:[ \\-]?[A-Z0-9]{4}){2}[ \\-]?[A-Z0-9]{3}|GR\\d{2}[ \\-]?\\d{4}[ \\-]?\\d{3}[A-Z0-9](?:[ \\-]?[A-Z0-9]{4}){3}[A-Z0-9]{3}|(?:FR|MC)\\d{2}(?:[ \\-]?\\d{4}){2}[ \\-]?\\d{2}[A-Z0-9]{2}(?:[ \\-]?[A-Z0-9]{4}){2}[ \\-]?[A-Z0-9]\\d{2}|MR\\d{2}(?:[ \\-]?\\d{4}){5}[ \\-]?\\d{3}|(?:SV|DO)\\d{2}[ \\-]?[A-Z]{4}(?:[ \\-]?\\d{4}){5}|BY\\d{2}[ \\-]?[A-Z]{4}[ \\-]?\\d{4}(?:[ \\-]?[A-Z0-9]{4}){4}|GT\\d{2}(?:[ \\-]?[A-Z0-9]{4}){6}|AZ\\d{2}[ \\-]?[A-Z0-9]{4}(?:[ \\-]?\\d{5}){4}|LB\\d{2}[ \\-]?\\d{4}(?:[ \\-]?[A-Z0-9]{5}){4}|(?:AL|CY)\\d{2}(?:[ \\-]?\\d{4}){2}(?:[ \\-]?[A-Z0-9]{4}){4}|(?:HU|PL)\\d{2}(?:[ \\-]?\\d{4}){6}|QA\\d{2}[ \\-]?[A-Z]{4}(?:[ \\-]?[A-Z0-9]{4}){5}[ \\-]?[A-Z0-9]|PS\\d{2}[ \\-]?[A-Z0-9]{4}(?:[ \\-]?\\d{4}){5}[ \\-]?\\d|UA\\d{2}[ \\-]?\\d{4}[ \\-]?\\d{2}[A-Z0-9]{2}(?:[ \\-]?[A-Z0-9]{4}){4}[ \\-]?[A-Z0-9]|BR\\d{2}(?:[ \\-]?\\d{4}){5}[ \\-]?\\d{3}[A-Z0-9][ \\-]?[A-Z0-9]|EG\\d{2}(?:[ \\-]?\\d{4}){6}\\d|MU\\d{2}[ \\-]?[A-Z]{4}(?:[ \\-]?\\d{4}){4}\\d{3}[A-Z][ \\-]?[A-Z]{2}|(?:KW|JO)\\d{2}[ \\-]?[A-Z]{4}(?:[ \\-]?[A-Z0-9]{4}){5}[ \\-]?[A-Z0-9]{2}|MT\\d{2}[ \\-]?[A-Z]{4}[ \\-]?\\d{4}[ \\-]?\\d[A-Z0-9]{3}(?:[ \\-]?[A-Z0-9]{3}){4}[ \\-]?[A-Z0-9]{3}|SC\\d{2}[ \\-]?[A-Z]{4}(?:[ \\-]?\\d{4}){5}[ \\-]?[A-Z]{3}|LC\\d{2}[ \\-]?[A-Z]{4}(?:[ \\-]?[A-Z0-9]{4}){6})\\b", + "options": { + "case_sensitive": false, + "min_length": 15 + } + } + }, + "tags": { + "type": "iban", + "category": "payment" + } + }, + { + "id": "h6WJcecQTwqvN9KeEtwDvg", + "name": "JCB Card Scanner (1x16 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b35(?:2[89]|[3-9][0-9])(?:\\d{12})\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "jcb", + "category": "payment" + } + }, + { + "id": "gcEaMu_VSJ2-bGCEkgyC0w", + "name": "JCB Card Scanner (2x8 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b35(?:2[89]|[3-9][0-9])\\d{4}(?:(?:,\\d{8})|(?:-\\d{8})|(?:\\s\\d{8})|(?:\\.\\d{8}))\\b", + "options": { + "case_sensitive": false, + "min_length": 17 + } + } + }, + "tags": { + "type": "card", + "card_type": "jcb", + "category": "payment" + } + }, + { + "id": "imTliuhXT5GAeRNhqChXQQ", + "name": "JCB Card Scanner (4x4 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b35(?:2[89]|[3-9][0-9])(?:(?:\\s\\d{4}){3}|(?:\\.\\d{4}){3}|(?:-\\d{4}){3}|(?:,\\d{4}){3})\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "jcb", + "category": "payment" + } + }, + { + "id": "9osY3xc9Q7ONAV0zw9Uz4A", + "name": "JSON Web Token", + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\bey[I-L][\\w=-]+\\.ey[I-L][\\w=-]+(\\.[\\w.+\\/=-]+)?\\b", + "options": { + "case_sensitive": false, + "min_length": 20 + } + } + }, + "tags": { + "type": "json_web_token", + "category": "credentials" + } + }, + { + "id": "d1Q9D3YMRxuVKf6CZInJPw", + "name": "Maestro Card Scanner (1x16 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:5[06-9]\\d{2}|6\\d{3})(?:\\d{12})\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "maestro", + "category": "payment" + } + }, + { + "id": "M3YIQKKjRVmoeQuM3pjzrw", + "name": "Maestro Card Scanner (2x8 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:5[06-9]\\d{6}|6\\d{7})(?:\\s\\d{8}|\\.\\d{8}|-\\d{8}|,\\d{8})\\b", + "options": { + "case_sensitive": false, + "min_length": 17 + } + } + }, + "tags": { + "type": "card", + "card_type": "maestro", + "category": "payment" + } + }, + { + "id": "hRxiQBlSSVKcjh5U7LZYLA", + "name": "Maestro Card Scanner (4x4 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:5[06-9]\\d{2}|6\\d{3})(?:(?:\\s\\d{4}){3}|(?:\\.\\d{4}){3}|(?:-\\d{4}){3}|(?:,\\d{4}){3})\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "maestro", + "category": "payment" + } + }, + { + "id": "NwhIYNS4STqZys37WlaIKA", + "name": "MasterCard Scanner (2x8 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:(?:5[1-5]\\d{2})|(?:222[1-9])|(?:22[3-9]\\d)|(?:2[3-6]\\d{2})|(?:27[0-1]\\d)|(?:2720))(?:(?:\\d{4}(?:(?:,\\d{8})|(?:-\\d{8})|(?:\\s\\d{8})|(?:\\.\\d{8}))))\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "mastercard", + "category": "payment" + } + }, + { + "id": "axxJkyjhRTOuhjwlsA35Vw", + "name": "MasterCard Scanner (4x4 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:(?:5[1-5]\\d{2})|(?:222[1-9])|(?:22[3-9]\\d)|(?:2[3-6]\\d{2})|(?:27[0-1]\\d)|(?:2720))(?:(?:\\s\\d{4}){3}|(?:\\.\\d{4}){3}|(?:-\\d{4}){3}|(?:,\\d{4}){3})\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "mastercard", + "category": "payment" + } + }, + { + "id": "76EhmoK3TPqJcpM-fK0pLw", + "name": "MasterCard Scanner (1x16 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:(?:5[1-5]\\d{2})|(?:222[1-9])|(?:22[3-9]\\d)|(?:2[3-6]\\d{2})|(?:27[0-1]\\d)|(?:2720))(?:\\d{12})\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "mastercard", + "category": "payment" + } + }, + { + "id": "18b608bd7a764bff5b2344c0", + "name": "Phone number", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\bphone|number|mobile\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "^(?:\\(\\+\\d{1,3}\\)|\\+\\d{1,3}|00\\d{1,3})?[-\\s\\.]?(?:\\(\\d{3}\\)[-\\s\\.]?)?(?:\\d[-\\s\\.]?){6,10}$", + "options": { + "case_sensitive": false, + "min_length": 6 + } + } + }, + "tags": { + "type": "phone", + "category": "pii" + } + }, + { + "id": "de0899e0cbaaa812bb624cf04c912071012f616d-mod", + "name": "UK National Insurance Number Scanner", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "^nin$|\\binsurance\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b[A-Z]{2}[\\s-]?\\d{6}[\\s-]?[A-Z]?\\b", + "options": { + "case_sensitive": false, + "min_length": 8 + } + } + }, + "tags": { + "type": "uk_nin", + "category": "pii" + } + }, + { + "id": "d962f7ddb3f55041e39195a60ff79d4814a7c331", + "name": "US Passport Scanner", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\bpassport\\b", + "options": { + "case_sensitive": false, + "min_length": 8 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b[0-9A-Z]{9}\\b|\\b[0-9]{6}[A-Z][0-9]{2}\\b", + "options": { + "case_sensitive": false, + "min_length": 8 + } + } + }, + "tags": { + "type": "passport_number", + "category": "pii" + } + }, + { + "id": "7771fc3b-b205-4b93-bcef-28608c5c1b54", + "name": "United States Social Security Number Scanner", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:SSN|(?:(?:social)?[\\s_]?(?:security)?[\\s_]?(?:number)?)?)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b\\d{3}[-\\s\\.]{1}\\d{2}[-\\s\\.]{1}\\d{4}\\b", + "options": { + "case_sensitive": false, + "min_length": 11 + } + } + }, + "tags": { + "type": "us_ssn", + "category": "pii" + } + }, + { + "id": "ac6d683cbac77f6e399a14990793dd8fd0fca333", + "name": "US Vehicle Identification Number Scanner", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:vehicle[_\\s-]*identification[_\\s-]*number|vin)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b[A-HJ-NPR-Z0-9]{17}\\b", + "options": { + "case_sensitive": false, + "min_length": 17 + } + } + }, + "tags": { + "type": "vin", + "category": "pii" + } + }, + { + "id": "wJIgOygRQhKkR69b_9XbRQ", + "name": "Visa Card Scanner (2x8 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b4\\d{3}(?:(?:\\d{4}(?:(?:,\\d{8})|(?:-\\d{8})|(?:\\s\\d{8})|(?:\\.\\d{8}))))\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "visa", + "category": "payment" + } + }, + { + "id": "0o71SJxXQNK7Q6gMbBesFQ", + "name": "Visa Card Scanner (4x4 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "\\b4\\d{3}(?:(?:,\\d{4}){3}|(?:\\s\\d{4}){3}|(?:\\.\\d{4}){3}|(?:-\\d{4}){3})\\b", + "options": { + "case_sensitive": false, + "min_length": 16 + } + } + }, + "tags": { + "type": "card", + "card_type": "visa", + "category": "payment" + } + }, + { + "id": "QrHD6AfgQm6z-j0wStxTvA", + "name": "Visa Card Scanner (1x15 & 1x16 & 1x19 digits)", + "key": { + "operator": "match_regex", + "parameters": { + "regex": "\\b(?:card|cc|credit|debit|payment|amex|visa|mastercard|maestro|discover|jcb|diner)\\b", + "options": { + "case_sensitive": false, + "min_length": 3 + } + } + }, + "value": { + "operator": "match_regex", + "parameters": { + "regex": "4[0-9]{12}(?:[0-9]{3})?", + "options": { + "case_sensitive": false, + "min_length": 13 + } + } + }, + "tags": { + "type": "card", + "card_type": "visa", + "category": "payment" + } + } ] -} \ No newline at end of file +} diff --git a/lib/datadog/appsec/assets/waf_rules/strict.json b/lib/datadog/appsec/assets/waf_rules/strict.json index f316a003f54..91b99a81902 100644 --- a/lib/datadog/appsec/assets/waf_rules/strict.json +++ b/lib/datadog/appsec/assets/waf_rules/strict.json @@ -1,7 +1,7 @@ { "version": "2.2", "metadata": { - "rules_version": "1.8.0" + "rules_version": "1.13.1" }, "rules": [ { @@ -101,6 +101,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "[\\r\\n]\\W*?(?:content-(?:type|length)|set-cookie|location):\\s*\\w", @@ -168,6 +171,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?:[;\\n\\r`]|\\$(?:\\(?\\(|{)|(?:\\|)?\\||\\(\\s*\\)|[<>]\\(|&?&|\\{)\\s*(?:(?:\\w+=(?:[^\\s]*|\\$.*|\\$.*|<.*|>.*|\\'.*\\'|\\\".*\\\")\\s+|(?:\\s*\\(|!)\\s*|\\{|\\$))*\\s*(?:['\\\"])*(?:[\\?\\*\\[\\]\\(\\)\\-\\|+\\w'\\\"\\./\\x5c]+/)?[\\x5c'\\\"]*(?:l[\\x5c'\\\"]*(?:w[\\x5c'\\\"]*p[\\x5c'\\\"]*-[\\x5c'\\\"]*(?:d[\\x5c'\\\"]*(?:o[\\x5c'\\\"]*w[\\x5c'\\\"]*n[\\x5c'\\\"]*l[\\x5c'\\\"]*o[\\x5c'\\\"]*a[\\x5c'\\\"]*d|u[\\x5c'\\\"]*m[\\x5c'\\\"]*p)|r[\\x5c'\\\"]*e[\\x5c'\\\"]*q[\\x5c'\\\"]*u[\\x5c'\\\"]*e[\\x5c'\\\"]*s[\\x5c'\\\"]*t|m[\\x5c'\\\"]*i[\\x5c'\\\"]*r[\\x5c'\\\"]*r[\\x5c'\\\"]*o[\\x5c'\\\"]*r)|s(?:[\\x5c'\\\"]*(?:b[\\x5c'\\\"]*_[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*l[\\x5c'\\\"]*e[\\x5c'\\\"]*a[\\x5c'\\\"]*s[\\x5c'\\\"]*e|c[\\x5c'\\\"]*p[\\x5c'\\\"]*u|m[\\x5c'\\\"]*o[\\x5c'\\\"]*d|p[\\x5c'\\\"]*c[\\x5c'\\\"]*i|u[\\x5c'\\\"]*s[\\x5c'\\\"]*b|-[\\x5c'\\\"]*F|h[\\x5c'\\\"]*w|o[\\x5c'\\\"]*f))?|z[\\x5c'\\\"]*(?:(?:[ef][\\x5c'\\\"]*)?g[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*p|c[\\x5c'\\\"]*(?:a[\\x5c'\\\"]*t|m[\\x5c'\\\"]*p)|m[\\x5c'\\\"]*(?:o[\\x5c'\\\"]*r[\\x5c'\\\"]*e|a)|d[\\x5c'\\\"]*i[\\x5c'\\\"]*f[\\x5c'\\\"]*f|l[\\x5c'\\\"]*e[\\x5c'\\\"]*s[\\x5c'\\\"]*s)|o[\\x5c'\\\"]*(?:g[\\x5c'\\\"]*(?:(?:n[\\x5c'\\\"]*a[\\x5c'\\\"]*m|s[\\x5c'\\\"]*a[\\x5c'\\\"]*v)[\\x5c'\\\"]*e|i[\\x5c'\\\"]*n[\\x5c'\\\"]*c[\\x5c'\\\"]*t[\\x5c'\\\"]*l)|c[\\x5c'\\\"]*a[\\x5c'\\\"]*(?:t[\\x5c'\\\"]*e|l)[\\x5c'\\\"]*(?:\\s|<|>).*)|e[\\x5c'\\\"]*s[\\x5c'\\\"]*s[\\x5c'\\\"]*(?:(?:f[\\x5c'\\\"]*i[\\x5c'\\\"]*l|p[\\x5c'\\\"]*i[\\x5c'\\\"]*p)[\\x5c'\\\"]*e|e[\\x5c'\\\"]*c[\\x5c'\\\"]*h[\\x5c'\\\"]*o|(?:\\s|<|>).*)|a[\\x5c'\\\"]*s[\\x5c'\\\"]*t[\\x5c'\\\"]*(?:l[\\x5c'\\\"]*o[\\x5c'\\\"]*g(?:[\\x5c'\\\"]*i[\\x5c'\\\"]*n)?|c[\\x5c'\\\"]*o[\\x5c'\\\"]*m[\\x5c'\\\"]*m|(?:\\s|<|>).*)|d[\\x5c'\\\"]*(?:c[\\x5c'\\\"]*o[\\x5c'\\\"]*n[\\x5c'\\\"]*f[\\x5c'\\\"]*i[\\x5c'\\\"]*g|d[\\x5c'\\\"]*(?:\\s|<|>).*)|(?:[np]|i[\\x5c'\\\"]*n[\\x5c'\\\"]*k[\\x5c'\\\"]*s|y[\\x5c'\\\"]*n[\\x5c'\\\"]*x)[\\x5c'\\\"]*(?:\\s|<|>).*|u[\\x5c'\\\"]*a[\\x5c'\\\"]*(?:5[\\x5c'\\\"]*\\.[\\x5c'\\\"]*[1234]|(?:\\s|<|>).*)|f[\\x5c'\\\"]*t[\\x5c'\\\"]*p(?:[\\x5c'\\\"]*g[\\x5c'\\\"]*e[\\x5c'\\\"]*t)?|t[\\x5c'\\\"]*r[\\x5c'\\\"]*a[\\x5c'\\\"]*c[\\x5c'\\\"]*e)|c[\\x5c'\\\"]*(?:o[\\x5c'\\\"]*(?:m[\\x5c'\\\"]*(?:p[\\x5c'\\\"]*(?:r[\\x5c'\\\"]*e[\\x5c'\\\"]*s[\\x5c'\\\"]*s[\\x5c'\\\"]*(?:\\s|<|>).*|o[\\x5c'\\\"]*s[\\x5c'\\\"]*e[\\x5c'\\\"]*r)|m[\\x5c'\\\"]*a[\\x5c'\\\"]*n[\\x5c'\\\"]*d[\\x5c'\\\"]*(?:\\s|<|>).*)|p[\\x5c'\\\"]*r[\\x5c'\\\"]*o[\\x5c'\\\"]*c)|h[\\x5c'\\\"]*(?:d[\\x5c'\\\"]*i[\\x5c'\\\"]*r[\\x5c'\\\"]*(?:\\s|<|>).*|f[\\x5c'\\\"]*l[\\x5c'\\\"]*a[\\x5c'\\\"]*g[\\x5c'\\\"]*s|a[\\x5c'\\\"]*t[\\x5c'\\\"]*t[\\x5c'\\\"]*r|m[\\x5c'\\\"]*o[\\x5c'\\\"]*d)|p[\\x5c'\\\"]*(?:u[\\x5c'\\\"]*l[\\x5c'\\\"]*i[\\x5c'\\\"]*m[\\x5c'\\\"]*i[\\x5c'\\\"]*t|(?:\\s|<|>).*|a[\\x5c'\\\"]*n|i[\\x5c'\\\"]*o)|(?:a[\\x5c'\\\"]*(?:p[\\x5c'\\\"]*s[\\x5c'\\\"]*h|t)|c)[\\x5c'\\\"]*(?:\\s|<|>).*|e[\\x5c'\\\"]*r[\\x5c'\\\"]*t[\\x5c'\\\"]*b[\\x5c'\\\"]*o[\\x5c'\\\"]*t|r[\\x5c'\\\"]*o[\\x5c'\\\"]*n[\\x5c'\\\"]*t[\\x5c'\\\"]*a[\\x5c'\\\"]*b|u[\\x5c'\\\"]*r[\\x5c'\\\"]*l|[89][\\x5c'\\\"]*9|s[\\x5c'\\\"]*h)|b[\\x5c'\\\"]*(?:z[\\x5c'\\\"]*(?:(?:[ef][\\x5c'\\\"]*)?g[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*p|d[\\x5c'\\\"]*i[\\x5c'\\\"]*f[\\x5c'\\\"]*f|l[\\x5c'\\\"]*e[\\x5c'\\\"]*s[\\x5c'\\\"]*s|m[\\x5c'\\\"]*o[\\x5c'\\\"]*r[\\x5c'\\\"]*e|c[\\x5c'\\\"]*a[\\x5c'\\\"]*t|i[\\x5c'\\\"]*p[\\x5c'\\\"]*2)|u[\\x5c'\\\"]*(?:s[\\x5c'\\\"]*(?:y[\\x5c'\\\"]*b[\\x5c'\\\"]*o[\\x5c'\\\"]*x|c[\\x5c'\\\"]*t[\\x5c'\\\"]*l)|n[\\x5c'\\\"]*d[\\x5c'\\\"]*l[\\x5c'\\\"]*e[\\x5c'\\\"]*r[\\x5c'\\\"]*(?:\\s|<|>).*|i[\\x5c'\\\"]*l[\\x5c'\\\"]*t[\\x5c'\\\"]*i[\\x5c'\\\"]*n)|s[\\x5c'\\\"]*d[\\x5c'\\\"]*(?:c[\\x5c'\\\"]*a[\\x5c'\\\"]*t|i[\\x5c'\\\"]*f[\\x5c'\\\"]*f|t[\\x5c'\\\"]*a[\\x5c'\\\"]*r)|a[\\x5c'\\\"]*(?:t[\\x5c'\\\"]*c[\\x5c'\\\"]*h[\\x5c'\\\"]*(?:\\s|<|>).*|s[\\x5c'\\\"]*h)|r[\\x5c'\\\"]*e[\\x5c'\\\"]*a[\\x5c'\\\"]*k[\\x5c'\\\"]*s[\\x5c'\\\"]*w)|e[\\x5c'\\\"]*(?:x[\\x5c'\\\"]*(?:p[\\x5c'\\\"]*(?:e[\\x5c'\\\"]*c[\\x5c'\\\"]*t[\\x5c'\\\"]*(?:\\s|<|>).*|a[\\x5c'\\\"]*n[\\x5c'\\\"]*d|o[\\x5c'\\\"]*r[\\x5c'\\\"]*t|r)|(?:e[\\x5c'\\\"]*c[\\x5c'\\\"]*)?(?:\\s|<|>).*)|n[\\x5c'\\\"]*(?:v(?:[\\x5c'\\\"]*-[\\x5c'\\\"]*u[\\x5c'\\\"]*p[\\x5c'\\\"]*d[\\x5c'\\\"]*a[\\x5c'\\\"]*t[\\x5c'\\\"]*e)?|d[\\x5c'\\\"]*(?:i[\\x5c'\\\"]*f|s[\\x5c'\\\"]*w))|(?:a[\\x5c'\\\"]*s[\\x5c'\\\"]*y[\\x5c'\\\"]*_[\\x5c'\\\"]*i[\\x5c'\\\"]*n[\\x5c'\\\"]*s[\\x5c'\\\"]*t[\\x5c'\\\"]*a[\\x5c'\\\"]*l|v[\\x5c'\\\"]*a)[\\x5c'\\\"]*l|(?:c[\\x5c'\\\"]*h[\\x5c'\\\"]*o|d)[\\x5c'\\\"]*(?:\\s|<|>).*|g[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*p|m[\\x5c'\\\"]*a[\\x5c'\\\"]*c[\\x5c'\\\"]*s|s[\\x5c'\\\"]*a[\\x5c'\\\"]*c)|f[\\x5c'\\\"]*(?:i(?:[\\x5c'\\\"]*(?:l[\\x5c'\\\"]*e[\\x5c'\\\"]*(?:t[\\x5c'\\\"]*e[\\x5c'\\\"]*s[\\x5c'\\\"]*t|(?:\\s|<|>).*)|n[\\x5c'\\\"]*d[\\x5c'\\\"]*(?:\\s|<|>).*|s[\\x5c'\\\"]*h))?|t[\\x5c'\\\"]*p[\\x5c'\\\"]*(?:s[\\x5c'\\\"]*t[\\x5c'\\\"]*a[\\x5c'\\\"]*t[\\x5c'\\\"]*s|w[\\x5c'\\\"]*h[\\x5c'\\\"]*o|(?:\\s|<|>).*)|(?:e[\\x5c'\\\"]*t[\\x5c'\\\"]*c[\\x5c'\\\"]*h|l[\\x5c'\\\"]*o[\\x5c'\\\"]*c[\\x5c'\\\"]*k|c)[\\x5c'\\\"]*(?:\\s|<|>).*|u[\\x5c'\\\"]*n[\\x5c'\\\"]*c[\\x5c'\\\"]*t[\\x5c'\\\"]*i[\\x5c'\\\"]*o[\\x5c'\\\"]*n|o[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*a[\\x5c'\\\"]*c[\\x5c'\\\"]*h|g[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*p)|i[\\x5c'\\\"]*(?:p[\\x5c'\\\"]*(?:(?:6[\\x5c'\\\"]*)?t[\\x5c'\\\"]*a[\\x5c'\\\"]*b[\\x5c'\\\"]*l[\\x5c'\\\"]*e[\\x5c'\\\"]*s|c[\\x5c'\\\"]*o[\\x5c'\\\"]*n[\\x5c'\\\"]*f[\\x5c'\\\"]*i[\\x5c'\\\"]*g)|r[\\x5c'\\\"]*b(?:[\\x5c'\\\"]*(?:2[\\x5c'\\\"]*[01234567]|1(?:[\\x5c'\\\"]*[89])?|3[\\x5c'\\\"]*0))?|f[\\x5c'\\\"]*c[\\x5c'\\\"]*o[\\x5c'\\\"]*n[\\x5c'\\\"]*f[\\x5c'\\\"]*i[\\x5c'\\\"]*g|o[\\x5c'\\\"]*n[\\x5c'\\\"]*i[\\x5c'\\\"]*c[\\x5c'\\\"]*e|d[\\x5c'\\\"]*(?:\\s|<|>).*)|h[\\x5c'\\\"]*(?:t[\\x5c'\\\"]*(?:d[\\x5c'\\\"]*i[\\x5c'\\\"]*g[\\x5c'\\\"]*e[\\x5c'\\\"]*s[\\x5c'\\\"]*t|p[\\x5c'\\\"]*a[\\x5c'\\\"]*s[\\x5c'\\\"]*s[\\x5c'\\\"]*w[\\x5c'\\\"]*d)|o[\\x5c'\\\"]*s[\\x5c'\\\"]*t[\\x5c'\\\"]*(?:n[\\x5c'\\\"]*a[\\x5c'\\\"]*m[\\x5c'\\\"]*e|i[\\x5c'\\\"]*d)|(?:e[\\x5c'\\\"]*a[\\x5c'\\\"]*d|u[\\x5c'\\\"]*p)[\\x5c'\\\"]*(?:\\s|<|>).*|i[\\x5c'\\\"]*s[\\x5c'\\\"]*t[\\x5c'\\\"]*o[\\x5c'\\\"]*r[\\x5c'\\\"]*y)|a[\\x5c'\\\"]*(?:l[\\x5c'\\\"]*(?:i[\\x5c'\\\"]*a[\\x5c'\\\"]*s[\\x5c'\\\"]*(?:\\s|<|>).*|p[\\x5c'\\\"]*i[\\x5c'\\\"]*n[\\x5c'\\\"]*e)|p[\\x5c'\\\"]*t[\\x5c'\\\"]*(?:-[\\x5c'\\\"]*g[\\x5c'\\\"]*e[\\x5c'\\\"]*t|(?:\\s|<|>).*)|d[\\x5c'\\\"]*d[\\x5c'\\\"]*u[\\x5c'\\\"]*s[\\x5c'\\\"]*e[\\x5c'\\\"]*r|r[\\x5c'\\\"]*(?:c[\\x5c'\\\"]*h[\\x5c'\\\"]*(?:\\s|<|>).*|p)|(?:w[\\x5c'\\\"]*[ks]|t)[\\x5c'\\\"]*(?:\\s|<|>).*)|g[\\x5c'\\\"]*(?:(?:e[\\x5c'\\\"]*(?:t[\\x5c'\\\"]*f[\\x5c'\\\"]*a[\\x5c'\\\"]*c[\\x5c'\\\"]*l|m)|r[\\x5c'\\\"]*e[\\x5c'\\\"]*p|o)[\\x5c'\\\"]*(?:\\s|<|>).*|z[\\x5c'\\\"]*(?:c[\\x5c'\\\"]*a[\\x5c'\\\"]*t|i[\\x5c'\\\"]*p)|u[\\x5c'\\\"]*n[\\x5c'\\\"]*z[\\x5c'\\\"]*i[\\x5c'\\\"]*p|c[\\x5c'\\\"]*c(?:[\\x5c'\\\"]*(?:\\s|<|>).*)?|i[\\x5c'\\\"]*t(?:[\\x5c'\\\"]*(?:\\s|<|>).*)?|d[\\x5c'\\\"]*b)|d[\\x5c'\\\"]*(?:h[\\x5c'\\\"]*c[\\x5c'\\\"]*l[\\x5c'\\\"]*i[\\x5c'\\\"]*e[\\x5c'\\\"]*n[\\x5c'\\\"]*t|(?:i[\\x5c'\\\"]*f[\\x5c'\\\"]*f|u)[\\x5c'\\\"]*(?:\\s|<|>).*|(?:m[\\x5c'\\\"]*e[\\x5c'\\\"]*s|p[\\x5c'\\\"]*k)[\\x5c'\\\"]*g|o[\\x5c'\\\"]*(?:a[\\x5c'\\\"]*s|n[\\x5c'\\\"]*e)|a[\\x5c'\\\"]*s[\\x5c'\\\"]*h)|j[\\x5c'\\\"]*(?:o[\\x5c'\\\"]*(?:u[\\x5c'\\\"]*r[\\x5c'\\\"]*n[\\x5c'\\\"]*a[\\x5c'\\\"]*l[\\x5c'\\\"]*c[\\x5c'\\\"]*t[\\x5c'\\\"]*l|b[\\x5c'\\\"]*s[\\x5c'\\\"]*(?:\\s|<|>).*)|a[\\x5c'\\\"]*v[\\x5c'\\\"]*a[\\x5c'\\\"]*(?:\\s|<|>).*|e[\\x5c'\\\"]*x[\\x5c'\\\"]*e[\\x5c'\\\"]*c)|k[\\x5c'\\\"]*(?:i[\\x5c'\\\"]*l[\\x5c'\\\"]*l[\\x5c'\\\"]*(?:a[\\x5c'\\\"]*l[\\x5c'\\\"]*l|(?:\\s|<|>).*)|s[\\x5c'\\\"]*h)|G[\\x5c'\\\"]*E[\\x5c'\\\"]*T[\\x5c'\\\"]*(?:\\s|<|>).*|7[\\x5c'\\\"]*z(?:[\\x5c'\\\"]*[ar])?)\\b", @@ -204,6 +210,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?:[;\\n\\r`]|(?:$\\(|<)\\(|(?:\\|)?\\||\\(\\s*\\)|\\$[(?:{]|&?&|>\\|\\{)\\s*(?:(?:\\w+=(?:[^\\s]*|\\$.*|\\$.*|<.*|>.*|\\'.*\\'|\\\".*\\\")\\s+|(?:\\s*\\(|!)\\s*|\\{|\\$))*\\s*(?:['\\\"])*(?:[\\?\\*\\[\\]\\(\\)\\-\\|+\\w'\\\"\\./\\x5c]+/)?[\\x5c'\\\"]*(?:s[\\\"\\^]*(?:y[\\\"\\^]*s[\\\"\\^]*(?:t[\\\"\\^]*e[\\\"\\^]*m[\\\"\\^]*(?:p[\\\"\\^]*r[\\\"\\^]*o[\\\"\\^]*p[\\\"\\^]*e[\\\"\\^]*r[\\\"\\^]*t[\\\"\\^]*i[\\\"\\^]*e[\\\"\\^]*s[\\\"\\^]*(?:d[\\\"\\^]*a[\\\"\\^]*t[\\\"\\^]*a[\\\"\\^]*e[\\\"\\^]*x[\\\"\\^]*e[\\\"\\^]*c[\\\"\\^]*u[\\\"\\^]*t[\\\"\\^]*i[\\\"\\^]*o[\\\"\\^]*n[\\\"\\^]*p[\\\"\\^]*r[\\\"\\^]*e[\\\"\\^]*v[\\\"\\^]*e[\\\"\\^]*n[\\\"\\^]*t[\\\"\\^]*i[\\\"\\^]*o[\\\"\\^]*n|(?:p[\\\"\\^]*e[\\\"\\^]*r[\\\"\\^]*f[\\\"\\^]*o[\\\"\\^]*r[\\\"\\^]*m[\\\"\\^]*a[\\\"\\^]*n[\\\"\\^]*c|h[\\\"\\^]*a[\\\"\\^]*r[\\\"\\^]*d[\\\"\\^]*w[\\\"\\^]*a[\\\"\\^]*r)[\\\"\\^]*e|a[\\\"\\^]*d[\\\"\\^]*v[\\\"\\^]*a[\\\"\\^]*n[\\\"\\^]*c[\\\"\\^]*e[\\\"\\^]*d)|i[\\\"\\^]*n[\\\"\\^]*f[\\\"\\^]*o)|k[\\\"\\^]*e[\\\"\\^]*y|d[\\\"\\^]*m)|h[\\\"\\^]*(?:o[\\\"\\^]*(?:w[\\\"\\^]*(?:g[\\\"\\^]*r[\\\"\\^]*p|m[\\\"\\^]*b[\\\"\\^]*r)[\\\"\\^]*s|r[\\\"\\^]*t[\\\"\\^]*c[\\\"\\^]*u[\\\"\\^]*t)|e[\\\"\\^]*l[\\\"\\^]*l[\\\"\\^]*r[\\\"\\^]*u[\\\"\\^]*n[\\\"\\^]*a[\\\"\\^]*s|u[\\\"\\^]*t[\\\"\\^]*d[\\\"\\^]*o[\\\"\\^]*w[\\\"\\^]*n|r[\\\"\\^]*p[\\\"\\^]*u[\\\"\\^]*b[\\\"\\^]*w|a[\\\"\\^]*r[\\\"\\^]*e|i[\\\"\\^]*f[\\\"\\^]*t)|e[\\\"\\^]*(?:t[\\\"\\^]*(?:(?:x[\\\"\\^]*)?(?:[\\s,;]|\\.|/|<|>).*|l[\\\"\\^]*o[\\\"\\^]*c[\\\"\\^]*a[\\\"\\^]*l)|c[\\\"\\^]*p[\\\"\\^]*o[\\\"\\^]*l|l[\\\"\\^]*e[\\\"\\^]*c[\\\"\\^]*t)|c[\\\"\\^]*(?:h[\\\"\\^]*t[\\\"\\^]*a[\\\"\\^]*s[\\\"\\^]*k[\\\"\\^]*s|l[\\\"\\^]*i[\\\"\\^]*s[\\\"\\^]*t)|u[\\\"\\^]*b[\\\"\\^]*(?:i[\\\"\\^]*n[\\\"\\^]*a[\\\"\\^]*c[\\\"\\^]*l|s[\\\"\\^]*t)|(?:t[\\\"\\^]*a|o)[\\\"\\^]*r[\\\"\\^]*t[\\\"\\^]*(?:[\\s,;]|\\.|/|<|>).*|i[\\\"\\^]*g[\\\"\\^]*v[\\\"\\^]*e[\\\"\\^]*r[\\\"\\^]*i[\\\"\\^]*f|l[\\\"\\^]*(?:e[\\\"\\^]*e[\\\"\\^]*p|m[\\\"\\^]*g[\\\"\\^]*r)|f[\\\"\\^]*c|v[\\\"\\^]*n)|p[\\\"\\^]*(?:s[\\\"\\^]*(?:s[\\\"\\^]*(?:h[\\\"\\^]*u[\\\"\\^]*t[\\\"\\^]*d[\\\"\\^]*o[\\\"\\^]*w[\\\"\\^]*n|e[\\\"\\^]*r[\\\"\\^]*v[\\\"\\^]*i[\\\"\\^]*c[\\\"\\^]*e|u[\\\"\\^]*s[\\\"\\^]*p[\\\"\\^]*e[\\\"\\^]*n[\\\"\\^]*d)|l[\\\"\\^]*(?:o[\\\"\\^]*g[\\\"\\^]*(?:g[\\\"\\^]*e[\\\"\\^]*d[\\\"\\^]*o[\\\"\\^]*n|l[\\\"\\^]*i[\\\"\\^]*s[\\\"\\^]*t)|i[\\\"\\^]*s[\\\"\\^]*t)|p[\\\"\\^]*(?:a[\\\"\\^]*s[\\\"\\^]*s[\\\"\\^]*w[\\\"\\^]*d|i[\\\"\\^]*n[\\\"\\^]*g)|g[\\\"\\^]*e[\\\"\\^]*t[\\\"\\^]*s[\\\"\\^]*i[\\\"\\^]*d|e[\\\"\\^]*x[\\\"\\^]*e[\\\"\\^]*c|f[\\\"\\^]*i[\\\"\\^]*l[\\\"\\^]*e|i[\\\"\\^]*n[\\\"\\^]*f[\\\"\\^]*o|k[\\\"\\^]*i[\\\"\\^]*l[\\\"\\^]*l)|o[\\\"\\^]*(?:w[\\\"\\^]*e[\\\"\\^]*r[\\\"\\^]*(?:s[\\\"\\^]*h[\\\"\\^]*e[\\\"\\^]*l[\\\"\\^]*l(?:[\\\"\\^]*_[\\\"\\^]*i[\\\"\\^]*s[\\\"\\^]*e)?|c[\\\"\\^]*f[\\\"\\^]*g)|r[\\\"\\^]*t[\\\"\\^]*q[\\\"\\^]*r[\\\"\\^]*y|p[\\\"\\^]*d)|r[\\\"\\^]*(?:i[\\\"\\^]*n[\\\"\\^]*t[\\\"\\^]*(?:(?:[\\s,;]|\\.|/|<|>).*|b[\\\"\\^]*r[\\\"\\^]*m)|n[\\\"\\^]*(?:c[\\\"\\^]*n[\\\"\\^]*f[\\\"\\^]*g|m[\\\"\\^]*n[\\\"\\^]*g[\\\"\\^]*r)|o[\\\"\\^]*m[\\\"\\^]*p[\\\"\\^]*t)|a[\\\"\\^]*t[\\\"\\^]*h[\\\"\\^]*(?:p[\\\"\\^]*i[\\\"\\^]*n[\\\"\\^]*g|(?:[\\s,;]|\\.|/|<|>).*)|e[\\\"\\^]*r[\\\"\\^]*(?:l(?:[\\\"\\^]*(?:s[\\\"\\^]*h|5))?|f[\\\"\\^]*m[\\\"\\^]*o[\\\"\\^]*n)|y[\\\"\\^]*t[\\\"\\^]*h[\\\"\\^]*o[\\\"\\^]*n(?:[\\\"\\^]*(?:3(?:[\\\"\\^]*m)?|2))?|k[\\\"\\^]*g[\\\"\\^]*m[\\\"\\^]*g[\\\"\\^]*r|h[\\\"\\^]*p(?:[\\\"\\^]*[57])?|u[\\\"\\^]*s[\\\"\\^]*h[\\\"\\^]*d|i[\\\"\\^]*n[\\\"\\^]*g)|r[\\\"\\^]*(?:e[\\\"\\^]*(?:(?:p[\\\"\\^]*l[\\\"\\^]*a[\\\"\\^]*c[\\\"\\^]*e|n(?:[\\\"\\^]*a[\\\"\\^]*m[\\\"\\^]*e)?|s[\\\"\\^]*e[\\\"\\^]*t)[\\\"\\^]*(?:[\\s,;]|\\.|/|<|>).*|g[\\\"\\^]*(?:s[\\\"\\^]*v[\\\"\\^]*r[\\\"\\^]*3[\\\"\\^]*2|e[\\\"\\^]*d[\\\"\\^]*i[\\\"\\^]*t|(?:[\\s,;]|\\.|/|<|>).*|i[\\\"\\^]*n[\\\"\\^]*i)|c[\\\"\\^]*(?:d[\\\"\\^]*i[\\\"\\^]*s[\\\"\\^]*c|o[\\\"\\^]*v[\\\"\\^]*e[\\\"\\^]*r)|k[\\\"\\^]*e[\\\"\\^]*y[\\\"\\^]*w[\\\"\\^]*i[\\\"\\^]*z)|u[\\\"\\^]*(?:n[\\\"\\^]*(?:d[\\\"\\^]*l[\\\"\\^]*l[\\\"\\^]*3[\\\"\\^]*2|a[\\\"\\^]*s)|b[\\\"\\^]*y[\\\"\\^]*(?:1(?:[\\\"\\^]*[89])?|2[\\\"\\^]*[012]))|a[\\\"\\^]*(?:s[\\\"\\^]*(?:p[\\\"\\^]*h[\\\"\\^]*o[\\\"\\^]*n[\\\"\\^]*e|d[\\\"\\^]*i[\\\"\\^]*a[\\\"\\^]*l)|r[\\\"\\^]*(?:[\\s,;]|\\.|/|<|>).*)|m[\\\"\\^]*(?:(?:d[\\\"\\^]*i[\\\"\\^]*r[\\\"\\^]*)?(?:[\\s,;]|\\.|/|<|>).*|t[\\\"\\^]*s[\\\"\\^]*h[\\\"\\^]*a[\\\"\\^]*r[\\\"\\^]*e)|o[\\\"\\^]*(?:u[\\\"\\^]*t[\\\"\\^]*e[\\\"\\^]*(?:[\\s,;]|\\.|/|<|>).*|b[\\\"\\^]*o[\\\"\\^]*c[\\\"\\^]*o[\\\"\\^]*p[\\\"\\^]*y)|s[\\\"\\^]*(?:t[\\\"\\^]*r[\\\"\\^]*u[\\\"\\^]*i|y[\\\"\\^]*n[\\\"\\^]*c)|d[\\\"\\^]*(?:[\\s,;]|\\.|/|<|>).*)|t[\\\"\\^]*(?:a[\\\"\\^]*(?:s[\\\"\\^]*k[\\\"\\^]*(?:k[\\\"\\^]*i[\\\"\\^]*l[\\\"\\^]*l|l[\\\"\\^]*i[\\\"\\^]*s[\\\"\\^]*t|s[\\\"\\^]*c[\\\"\\^]*h[\\\"\\^]*d|m[\\\"\\^]*g[\\\"\\^]*r)|k[\\\"\\^]*e[\\\"\\^]*o[\\\"\\^]*w[\\\"\\^]*n)|(?:i[\\\"\\^]*m[\\\"\\^]*e[\\\"\\^]*o[\\\"\\^]*u|p[\\\"\\^]*m[\\\"\\^]*i[\\\"\\^]*n[\\\"\\^]*i|e[\\\"\\^]*l[\\\"\\^]*n[\\\"\\^]*e|l[\\\"\\^]*i[\\\"\\^]*s)[\\\"\\^]*t|s[\\\"\\^]*(?:d[\\\"\\^]*i[\\\"\\^]*s[\\\"\\^]*c[\\\"\\^]*o|s[\\\"\\^]*h[\\\"\\^]*u[\\\"\\^]*t[\\\"\\^]*d)[\\\"\\^]*n|y[\\\"\\^]*p[\\\"\\^]*e[\\\"\\^]*(?:p[\\\"\\^]*e[\\\"\\^]*r[\\\"\\^]*f|(?:[\\s,;]|\\.|/|<|>).*)|r[\\\"\\^]*(?:a[\\\"\\^]*c[\\\"\\^]*e[\\\"\\^]*r[\\\"\\^]*t|e[\\\"\\^]*e))|w[\\\"\\^]*(?:i[\\\"\\^]*n[\\\"\\^]*(?:d[\\\"\\^]*i[\\\"\\^]*f[\\\"\\^]*f|m[\\\"\\^]*s[\\\"\\^]*d[\\\"\\^]*p|v[\\\"\\^]*a[\\\"\\^]*r|r[\\\"\\^]*[ms])|u[\\\"\\^]*(?:a[\\\"\\^]*(?:u[\\\"\\^]*c[\\\"\\^]*l[\\\"\\^]*t|p[\\\"\\^]*p)|s[\\\"\\^]*a)|s[\\\"\\^]*c[\\\"\\^]*(?:r[\\\"\\^]*i[\\\"\\^]*p[\\\"\\^]*t|u[\\\"\\^]*i)|e[\\\"\\^]*v[\\\"\\^]*t[\\\"\\^]*u[\\\"\\^]*t[\\\"\\^]*i[\\\"\\^]*l|m[\\\"\\^]*i[\\\"\\^]*(?:m[\\\"\\^]*g[\\\"\\^]*m[\\\"\\^]*t|c)|a[\\\"\\^]*i[\\\"\\^]*t[\\\"\\^]*f[\\\"\\^]*o[\\\"\\^]*r|h[\\\"\\^]*o[\\\"\\^]*a[\\\"\\^]*m[\\\"\\^]*i|g[\\\"\\^]*e[\\\"\\^]*t)|u[\\\"\\^]*(?:s[\\\"\\^]*(?:e[\\\"\\^]*r[\\\"\\^]*a[\\\"\\^]*c[\\\"\\^]*c[\\\"\\^]*o[\\\"\\^]*u[\\\"\\^]*n[\\\"\\^]*t[\\\"\\^]*c[\\\"\\^]*o[\\\"\\^]*n[\\\"\\^]*t[\\\"\\^]*r[\\\"\\^]*o[\\\"\\^]*l[\\\"\\^]*s[\\\"\\^]*e[\\\"\\^]*t[\\\"\\^]*t[\\\"\\^]*i[\\\"\\^]*n[\\\"\\^]*g[\\\"\\^]*s|r[\\\"\\^]*s[\\\"\\^]*t[\\\"\\^]*a[\\\"\\^]*t)|n[\\\"\\^]*(?:r[\\\"\\^]*a[\\\"\\^]*r|z[\\\"\\^]*i[\\\"\\^]*p))|q[\\\"\\^]*(?:u[\\\"\\^]*e[\\\"\\^]*r[\\\"\\^]*y[\\\"\\^]*(?:[\\s,;]|\\.|/|<|>).*|p[\\\"\\^]*r[\\\"\\^]*o[\\\"\\^]*c[\\\"\\^]*e[\\\"\\^]*s[\\\"\\^]*s|w[\\\"\\^]*i[\\\"\\^]*n[\\\"\\^]*s[\\\"\\^]*t[\\\"\\^]*a|g[\\\"\\^]*r[\\\"\\^]*e[\\\"\\^]*p)|o[\\\"\\^]*(?:d[\\\"\\^]*b[\\\"\\^]*c[\\\"\\^]*(?:a[\\\"\\^]*d[\\\"\\^]*3[\\\"\\^]*2|c[\\\"\\^]*o[\\\"\\^]*n[\\\"\\^]*f)|p[\\\"\\^]*e[\\\"\\^]*n[\\\"\\^]*f[\\\"\\^]*i[\\\"\\^]*l[\\\"\\^]*e[\\\"\\^]*s)|v[\\\"\\^]*(?:o[\\\"\\^]*l[\\\"\\^]*(?:[\\s,;]|\\.|/|<|>).*|e[\\\"\\^]*r[\\\"\\^]*i[\\\"\\^]*f[\\\"\\^]*y)|x[\\\"\\^]*c[\\\"\\^]*(?:a[\\\"\\^]*c[\\\"\\^]*l[\\\"\\^]*s|o[\\\"\\^]*p[\\\"\\^]*y)|z[\\\"\\^]*i[\\\"\\^]*p[\\\"\\^]*(?:[\\s,;]|\\.|/|<|>).*)", @@ -239,8 +248,14 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], + "options": { + "enforce_word_boundary": true + }, "list": [ "powershell", "add-computer", @@ -692,6 +707,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?:\\$(?:\\((?:\\(.*\\)|.*)\\)|\\{.*})|\\/\\w*\\[!?.+\\]|[<>]\\(.*\\))", @@ -728,6 +746,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?:(?:^|=)\\s*(?:(?:\\w+=(?:[^\\s]*|\\$.*|\\$.*|<.*|>.*|\\'.*\\'|\\\".*\\\")\\s+|(?:\\s*\\(|!)\\s*|\\{|\\$))*\\s*(?:[\\\"'])*(?:[\\?\\*\\[\\]\\(\\)\\-\\|+\\w'\\\"\\./\\x5c]+/)?[\\x5c'\\\"]*(?:l[\\x5c'\\\"]*(?:z(?:[\\x5c'\\\"]*(?:m[\\x5c'\\\"]*(?:a(?:[\\x5c'\\\"]*(?:i[\\x5c'\\\"]*n[\\x5c'\\\"]*f[\\x5c'\\\"]*o|d[\\x5c'\\\"]*e[\\x5c'\\\"]*c))?|o[\\x5c'\\\"]*r[\\x5c'\\\"]*e)|(?:[ef][\\x5c'\\\"]*)?g[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*p|4(?:[\\x5c'\\\"]*c(?:[\\x5c'\\\"]*a[\\x5c'\\\"]*t)?)?|c[\\x5c'\\\"]*(?:a[\\x5c'\\\"]*t|m[\\x5c'\\\"]*p)|d[\\x5c'\\\"]*i[\\x5c'\\\"]*f[\\x5c'\\\"]*f|l[\\x5c'\\\"]*e[\\x5c'\\\"]*s[\\x5c'\\\"]*s))?|s(?:[\\x5c'\\\"]*(?:b[\\x5c'\\\"]*_[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*l[\\x5c'\\\"]*e[\\x5c'\\\"]*a[\\x5c'\\\"]*s[\\x5c'\\\"]*e|c[\\x5c'\\\"]*p[\\x5c'\\\"]*u|m[\\x5c'\\\"]*o[\\x5c'\\\"]*d|p[\\x5c'\\\"]*c[\\x5c'\\\"]*i|u[\\x5c'\\\"]*s[\\x5c'\\\"]*b|-[\\x5c'\\\"]*F|o[\\x5c'\\\"]*f))?|e[\\x5c'\\\"]*s[\\x5c'\\\"]*s[\\x5c'\\\"]*(?:(?:f[\\x5c'\\\"]*i[\\x5c'\\\"]*l|p[\\x5c'\\\"]*i[\\x5c'\\\"]*p)[\\x5c'\\\"]*e|e[\\x5c'\\\"]*c[\\x5c'\\\"]*h[\\x5c'\\\"]*o)|a[\\x5c'\\\"]*s[\\x5c'\\\"]*t[\\x5c'\\\"]*(?:l[\\x5c'\\\"]*o[\\x5c'\\\"]*g(?:[\\x5c'\\\"]*i[\\x5c'\\\"]*n)?|c[\\x5c'\\\"]*o[\\x5c'\\\"]*m[\\x5c'\\\"]*m)|w[\\x5c'\\\"]*p(?:[\\x5c'\\\"]*-[\\x5c'\\\"]*d[\\x5c'\\\"]*o[\\x5c'\\\"]*w[\\x5c'\\\"]*n[\\x5c'\\\"]*l[\\x5c'\\\"]*o[\\x5c'\\\"]*a[\\x5c'\\\"]*d)?|f[\\x5c'\\\"]*t[\\x5c'\\\"]*p(?:[\\x5c'\\\"]*g[\\x5c'\\\"]*e[\\x5c'\\\"]*t)?|y[\\x5c'\\\"]*n[\\x5c'\\\"]*x)|z[\\x5c'\\\"]*(?:i[\\x5c'\\\"]*p(?:[\\x5c'\\\"]*(?:(?:m[\\x5c'\\\"]*e[\\x5c'\\\"]*r[\\x5c'\\\"]*g|n[\\x5c'\\\"]*o[\\x5c'\\\"]*t)[\\x5c'\\\"]*e|d[\\x5c'\\\"]*e[\\x5c'\\\"]*t[\\x5c'\\\"]*a[\\x5c'\\\"]*i[\\x5c'\\\"]*l[\\x5c'\\\"]*s|c[\\x5c'\\\"]*(?:l[\\x5c'\\\"]*o[\\x5c'\\\"]*a[\\x5c'\\\"]*k|m[\\x5c'\\\"]*p)|s[\\x5c'\\\"]*p[\\x5c'\\\"]*l[\\x5c'\\\"]*i[\\x5c'\\\"]*t|g[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*p|i[\\x5c'\\\"]*n[\\x5c'\\\"]*f[\\x5c'\\\"]*o|t[\\x5c'\\\"]*o[\\x5c'\\\"]*o[\\x5c'\\\"]*l))?|s[\\x5c'\\\"]*(?:t[\\x5c'\\\"]*d(?:[\\x5c'\\\"]*(?:g[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*p|l[\\x5c'\\\"]*e[\\x5c'\\\"]*s[\\x5c'\\\"]*s|(?:c[\\x5c'\\\"]*a|m)[\\x5c'\\\"]*t))?|h)|(?:[ef][\\x5c'\\\"]*)?g[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*p|c[\\x5c'\\\"]*(?:a[\\x5c'\\\"]*t|m[\\x5c'\\\"]*p)|d[\\x5c'\\\"]*i[\\x5c'\\\"]*f[\\x5c'\\\"]*f|l[\\x5c'\\\"]*e[\\x5c'\\\"]*s[\\x5c'\\\"]*s|m[\\x5c'\\\"]*o[\\x5c'\\\"]*r[\\x5c'\\\"]*e|r[\\x5c'\\\"]*u[\\x5c'\\\"]*n)|b[\\x5c'\\\"]*(?:z[\\x5c'\\\"]*(?:i[\\x5c'\\\"]*p[\\x5c'\\\"]*2(?:[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*c[\\x5c'\\\"]*o[\\x5c'\\\"]*v[\\x5c'\\\"]*e[\\x5c'\\\"]*r)?|e[\\x5c'\\\"]*(?:g[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*p|x[\\x5c'\\\"]*e)|(?:f[\\x5c'\\\"]*)?g[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*p|c[\\x5c'\\\"]*(?:a[\\x5c'\\\"]*t|m[\\x5c'\\\"]*p)|d[\\x5c'\\\"]*i[\\x5c'\\\"]*f[\\x5c'\\\"]*f|l[\\x5c'\\\"]*e[\\x5c'\\\"]*s[\\x5c'\\\"]*s|m[\\x5c'\\\"]*o[\\x5c'\\\"]*r[\\x5c'\\\"]*e|z)|u[\\x5c'\\\"]*(?:i[\\x5c'\\\"]*l[\\x5c'\\\"]*t[\\x5c'\\\"]*i[\\x5c'\\\"]*n|n[\\x5c'\\\"]*z[\\x5c'\\\"]*i[\\x5c'\\\"]*p[\\x5c'\\\"]*2|s[\\x5c'\\\"]*y[\\x5c'\\\"]*b[\\x5c'\\\"]*o[\\x5c'\\\"]*x)|s[\\x5c'\\\"]*d[\\x5c'\\\"]*(?:c[\\x5c'\\\"]*a[\\x5c'\\\"]*t|i[\\x5c'\\\"]*f[\\x5c'\\\"]*f|t[\\x5c'\\\"]*a[\\x5c'\\\"]*r)|a[\\x5c'\\\"]*s[\\x5c'\\\"]*(?:e[\\x5c'\\\"]*(?:3[\\x5c'\\\"]*2|6[\\x5c'\\\"]*4|n[\\x5c'\\\"]*c)|h))|s[\\x5c'\\\"]*(?:e[\\x5c'\\\"]*(?:t[\\x5c'\\\"]*(?:e[\\x5c'\\\"]*n[\\x5c'\\\"]*v|s[\\x5c'\\\"]*i[\\x5c'\\\"]*d)|n[\\x5c'\\\"]*d[\\x5c'\\\"]*m[\\x5c'\\\"]*a[\\x5c'\\\"]*i[\\x5c'\\\"]*l|d)|h(?:[\\x5c'\\\"]*\\.[\\x5c'\\\"]*d[\\x5c'\\\"]*i[\\x5c'\\\"]*s[\\x5c'\\\"]*t[\\x5c'\\\"]*r[\\x5c'\\\"]*i[\\x5c'\\\"]*b)?|o[\\x5c'\\\"]*(?:u[\\x5c'\\\"]*r[\\x5c'\\\"]*c[\\x5c'\\\"]*e|c[\\x5c'\\\"]*a[\\x5c'\\\"]*t)|t[\\x5c'\\\"]*r[\\x5c'\\\"]*i[\\x5c'\\\"]*n[\\x5c'\\\"]*g[\\x5c'\\\"]*s|y[\\x5c'\\\"]*s[\\x5c'\\\"]*c[\\x5c'\\\"]*t[\\x5c'\\\"]*l|c[\\x5c'\\\"]*(?:h[\\x5c'\\\"]*e[\\x5c'\\\"]*d|p)|d[\\x5c'\\\"]*i[\\x5c'\\\"]*f[\\x5c'\\\"]*f|f[\\x5c'\\\"]*t[\\x5c'\\\"]*p|u[\\x5c'\\\"]*d[\\x5c'\\\"]*o|s[\\x5c'\\\"]*h|v[\\x5c'\\\"]*n)|p[\\x5c'\\\"]*(?:t[\\x5c'\\\"]*a[\\x5c'\\\"]*r(?:[\\x5c'\\\"]*(?:d[\\x5c'\\\"]*i[\\x5c'\\\"]*f[\\x5c'\\\"]*f|g[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*p))?|y[\\x5c'\\\"]*t[\\x5c'\\\"]*h[\\x5c'\\\"]*o[\\x5c'\\\"]*n[\\x5c'\\\"]*[23]?[\\x5c'\\\"]*(?:\\.[0-9.\\x5c'\\\"]+)?(?:[dmu]+)?|k[\\x5c'\\\"]*(?:e[\\x5c'\\\"]*x[\\x5c'\\\"]*e[\\x5c'\\\"]*c|i[\\x5c'\\\"]*l[\\x5c'\\\"]*l)|r[\\x5c'\\\"]*i[\\x5c'\\\"]*n[\\x5c'\\\"]*t[\\x5c'\\\"]*(?:e[\\x5c'\\\"]*n[\\x5c'\\\"]*v|f)|(?:g[\\x5c'\\\"]*r[\\x5c'\\\"]*e|f[\\x5c'\\\"]*t)[\\x5c'\\\"]*p|e[\\x5c'\\\"]*r[\\x5c'\\\"]*l(?:[\\x5c'\\\"]*5)?|h[\\x5c'\\\"]*p(?:[\\x5c'\\\"]*[57])?|(?:i[\\x5c'\\\"]*g|x)[\\x5c'\\\"]*z|o[\\x5c'\\\"]*p[\\x5c'\\\"]*d)|n[\\x5c'\\\"]*(?:c(?:[\\x5c'\\\"]*(?:\\.[\\x5c'\\\"]*(?:t[\\x5c'\\\"]*r[\\x5c'\\\"]*a[\\x5c'\\\"]*d[\\x5c'\\\"]*i[\\x5c'\\\"]*t[\\x5c'\\\"]*i[\\x5c'\\\"]*o[\\x5c'\\\"]*n[\\x5c'\\\"]*a[\\x5c'\\\"]*l|o[\\x5c'\\\"]*p[\\x5c'\\\"]*e[\\x5c'\\\"]*n[\\x5c'\\\"]*b[\\x5c'\\\"]*s[\\x5c'\\\"]*d)|a[\\x5c'\\\"]*t))?|e[\\x5c'\\\"]*t[\\x5c'\\\"]*(?:k[\\x5c'\\\"]*i[\\x5c'\\\"]*t[\\x5c'\\\"]*-[\\x5c'\\\"]*f[\\x5c'\\\"]*t[\\x5c'\\\"]*p|(?:s[\\x5c'\\\"]*t|c)[\\x5c'\\\"]*a[\\x5c'\\\"]*t)|o[\\x5c'\\\"]*h[\\x5c'\\\"]*u[\\x5c'\\\"]*p|p[\\x5c'\\\"]*i[\\x5c'\\\"]*n[\\x5c'\\\"]*g|s[\\x5c'\\\"]*t[\\x5c'\\\"]*a[\\x5c'\\\"]*t)|t[\\x5c'\\\"]*(?:c[\\x5c'\\\"]*(?:p[\\x5c'\\\"]*(?:t[\\x5c'\\\"]*r[\\x5c'\\\"]*a[\\x5c'\\\"]*c[\\x5c'\\\"]*e[\\x5c'\\\"]*r[\\x5c'\\\"]*o[\\x5c'\\\"]*u[\\x5c'\\\"]*t[\\x5c'\\\"]*e|i[\\x5c'\\\"]*n[\\x5c'\\\"]*g)|s[\\x5c'\\\"]*h)|r[\\x5c'\\\"]*a[\\x5c'\\\"]*c[\\x5c'\\\"]*e[\\x5c'\\\"]*r[\\x5c'\\\"]*o[\\x5c'\\\"]*u[\\x5c'\\\"]*t[\\x5c'\\\"]*e(?:[\\x5c'\\\"]*6)?|(?:i[\\x5c'\\\"]*m[\\x5c'\\\"]*e[\\x5c'\\\"]*o[\\x5c'\\\"]*u|e[\\x5c'\\\"]*l[\\x5c'\\\"]*n[\\x5c'\\\"]*e)[\\x5c'\\\"]*t|a[\\x5c'\\\"]*(?:i[\\x5c'\\\"]*l(?:[\\x5c'\\\"]*f)?|r))|r[\\x5c'\\\"]*(?:e[\\x5c'\\\"]*(?:p[\\x5c'\\\"]*(?:l[\\x5c'\\\"]*a[\\x5c'\\\"]*c[\\x5c'\\\"]*e|e[\\x5c'\\\"]*a[\\x5c'\\\"]*t)|a[\\x5c'\\\"]*l[\\x5c'\\\"]*p[\\x5c'\\\"]*a[\\x5c'\\\"]*t[\\x5c'\\\"]*h|n[\\x5c'\\\"]*a[\\x5c'\\\"]*m[\\x5c'\\\"]*e)|u[\\x5c'\\\"]*b[\\x5c'\\\"]*y(?:[\\x5c'\\\"]*(?:1(?:[\\x5c'\\\"]*[89])?|2[\\x5c'\\\"]*[012]))?|m[\\x5c'\\\"]*(?:u[\\x5c'\\\"]*s[\\x5c'\\\"]*e|d[\\x5c'\\\"]*i)[\\x5c'\\\"]*r|n[\\x5c'\\\"]*a[\\x5c'\\\"]*n[\\x5c'\\\"]*o|s[\\x5c'\\\"]*y[\\x5c'\\\"]*n[\\x5c'\\\"]*c|c[\\x5c'\\\"]*p)|u[\\x5c'\\\"]*(?:n[\\x5c'\\\"]*(?:c[\\x5c'\\\"]*o[\\x5c'\\\"]*m[\\x5c'\\\"]*p[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*s[\\x5c'\\\"]*s|z[\\x5c'\\\"]*(?:s[\\x5c'\\\"]*t[\\x5c'\\\"]*d|i[\\x5c'\\\"]*p)|(?:p[\\x5c'\\\"]*i[\\x5c'\\\"]*g|x)[\\x5c'\\\"]*z|l[\\x5c'\\\"]*z[\\x5c'\\\"]*(?:m[\\x5c'\\\"]*a|4)|a[\\x5c'\\\"]*m[\\x5c'\\\"]*e|r[\\x5c'\\\"]*a[\\x5c'\\\"]*r|s[\\x5c'\\\"]*e[\\x5c'\\\"]*t)|s[\\x5c'\\\"]*e[\\x5c'\\\"]*r[\\x5c'\\\"]*(?:(?:a[\\x5c'\\\"]*d|m[\\x5c'\\\"]*o)[\\x5c'\\\"]*d|d[\\x5c'\\\"]*e[\\x5c'\\\"]*l))|m[\\x5c'\\\"]*(?:y[\\x5c'\\\"]*s[\\x5c'\\\"]*q[\\x5c'\\\"]*l[\\x5c'\\\"]*(?:d[\\x5c'\\\"]*u[\\x5c'\\\"]*m[\\x5c'\\\"]*p(?:[\\x5c'\\\"]*s[\\x5c'\\\"]*l[\\x5c'\\\"]*o[\\x5c'\\\"]*w)?|h[\\x5c'\\\"]*o[\\x5c'\\\"]*t[\\x5c'\\\"]*c[\\x5c'\\\"]*o[\\x5c'\\\"]*p[\\x5c'\\\"]*y|a[\\x5c'\\\"]*d[\\x5c'\\\"]*m[\\x5c'\\\"]*i[\\x5c'\\\"]*n|s[\\x5c'\\\"]*h[\\x5c'\\\"]*o[\\x5c'\\\"]*w)|l[\\x5c'\\\"]*o[\\x5c'\\\"]*c[\\x5c'\\\"]*a[\\x5c'\\\"]*t[\\x5c'\\\"]*e|a[\\x5c'\\\"]*i[\\x5c'\\\"]*l[\\x5c'\\\"]*q)|c[\\x5c'\\\"]*(?:o[\\x5c'\\\"]*(?:r[\\x5c'\\\"]*e[\\x5c'\\\"]*_[\\x5c'\\\"]*p[\\x5c'\\\"]*e[\\x5c'\\\"]*r[\\x5c'\\\"]*l[\\x5c'\\\"]*\\/[\\x5c'\\\"]*z[\\x5c'\\\"]*i[\\x5c'\\\"]*p[\\x5c'\\\"]*d[\\x5c'\\\"]*e[\\x5c'\\\"]*t[\\x5c'\\\"]*a[\\x5c'\\\"]*i[\\x5c'\\\"]*l[\\x5c'\\\"]*s|m[\\x5c'\\\"]*m[\\x5c'\\\"]*a[\\x5c'\\\"]*n[\\x5c'\\\"]*d|p[\\x5c'\\\"]*r[\\x5c'\\\"]*o[\\x5c'\\\"]*c)|u[\\x5c'\\\"]*r[\\x5c'\\\"]*l|9[\\x5c'\\\"]*9|s[\\x5c'\\\"]*h|c)|x[\\x5c'\\\"]*(?:z(?:[\\x5c'\\\"]*(?:(?:[ef][\\x5c'\\\"]*)?g[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*p|d[\\x5c'\\\"]*(?:i[\\x5c'\\\"]*f[\\x5c'\\\"]*f|e[\\x5c'\\\"]*c)|c[\\x5c'\\\"]*(?:a[\\x5c'\\\"]*t|m[\\x5c'\\\"]*p)|l[\\x5c'\\\"]*e[\\x5c'\\\"]*s[\\x5c'\\\"]*s|m[\\x5c'\\\"]*o[\\x5c'\\\"]*r[\\x5c'\\\"]*e))?|a[\\x5c'\\\"]*r[\\x5c'\\\"]*g[\\x5c'\\\"]*s)|f[\\x5c'\\\"]*(?:t[\\x5c'\\\"]*p[\\x5c'\\\"]*(?:s[\\x5c'\\\"]*t[\\x5c'\\\"]*a[\\x5c'\\\"]*t[\\x5c'\\\"]*s|w[\\x5c'\\\"]*h[\\x5c'\\\"]*o)|i[\\x5c'\\\"]*l[\\x5c'\\\"]*e[\\x5c'\\\"]*t[\\x5c'\\\"]*e[\\x5c'\\\"]*s[\\x5c'\\\"]*t|e[\\x5c'\\\"]*t[\\x5c'\\\"]*c[\\x5c'\\\"]*h|g[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*p)|g[\\x5c'\\\"]*(?:z[\\x5c'\\\"]*(?:c[\\x5c'\\\"]*a[\\x5c'\\\"]*t|e[\\x5c'\\\"]*x[\\x5c'\\\"]*e|i[\\x5c'\\\"]*p)|(?:u[\\x5c'\\\"]*n[\\x5c'\\\"]*z[\\x5c'\\\"]*i|r[\\x5c'\\\"]*e)[\\x5c'\\\"]*p|c[\\x5c'\\\"]*c)|e[\\x5c'\\\"]*(?:g[\\x5c'\\\"]*r[\\x5c'\\\"]*e[\\x5c'\\\"]*p|c[\\x5c'\\\"]*h[\\x5c'\\\"]*o|v[\\x5c'\\\"]*a[\\x5c'\\\"]*l|x[\\x5c'\\\"]*e[\\x5c'\\\"]*c|n[\\x5c'\\\"]*v)|d[\\x5c'\\\"]*(?:m[\\x5c'\\\"]*e[\\x5c'\\\"]*s[\\x5c'\\\"]*g|a[\\x5c'\\\"]*s[\\x5c'\\\"]*h|i[\\x5c'\\\"]*f[\\x5c'\\\"]*f|o[\\x5c'\\\"]*a[\\x5c'\\\"]*s)|j[\\x5c'\\\"]*(?:o[\\x5c'\\\"]*b[\\x5c'\\\"]*s[\\x5c'\\\"]*\\s+[\\x5c'\\\"]*-[\\x5c'\\\"]*x|a[\\x5c'\\\"]*v[\\x5c'\\\"]*a)|w[\\x5c'\\\"]*(?:h[\\x5c'\\\"]*o[\\x5c'\\\"]*a[\\x5c'\\\"]*m[\\x5c'\\\"]*i|g[\\x5c'\\\"]*e[\\x5c'\\\"]*t|3[\\x5c'\\\"]*m)|i[\\x5c'\\\"]*r[\\x5c'\\\"]*b(?:[\\x5c'\\\"]*(?:1(?:[\\x5c'\\\"]*[89])?|2[\\x5c'\\\"]*[012]))?|o[\\x5c'\\\"]*n[\\x5c'\\\"]*i[\\x5c'\\\"]*n[\\x5c'\\\"]*t[\\x5c'\\\"]*r|h[\\x5c'\\\"]*(?:e[\\x5c'\\\"]*a[\\x5c'\\\"]*d|u[\\x5c'\\\"]*p)|v[\\x5c'\\\"]*i[\\x5c'\\\"]*(?:g[\\x5c'\\\"]*r|p[\\x5c'\\\"]*w)|7[\\x5c'\\\"]*z(?:[\\x5c'\\\"]*[ar])?|G[\\x5c'\\\"]*E[\\x5c'\\\"]*T|k[\\x5c'\\\"]*s[\\x5c'\\\"]*h)|\\$[\\x5c'\\\"]*(?:\\{[\\x5c'\\\"]*S[\\x5c'\\\"]*H[\\x5c'\\\"]*E[\\x5c'\\\"]*L[\\x5c'\\\"]*L[\\x5c'\\\"]*}|S[\\x5c'\\\"]*H[\\x5c'\\\"]*E[\\x5c'\\\"]*L[\\x5c'\\\"]*L))[\\x5c'\\\"]*(?:\\s|;|\\||&|<|>)", @@ -814,6 +835,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "\\$+(?:[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*|\\s*{.+})(?:\\s|\\[.+\\]|{.+}|/\\*.*\\*/|//.*|#.*)*\\(.*\\)", @@ -850,6 +874,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?:\\(.+\\)\\(.+\\)|\\(.+\\)['\\\"][a-zA-Z-_0-9]+['\\\"]\\(.+\\)|\\[\\d+\\]\\(.+\\)|\\{\\d+\\}\\(.+\\)|\\$[^(?:\\),.;\\x5c/]+\\(.+\\)|[\\\"'][a-zA-Z0-9-_\\x5c]+[\\\"']\\(.+\\)|\\([^\\)]*string[^\\)]*\\)[a-zA-Z-_0-9\\\"'.{}\\[\\]\\s]+\\([^\\)]*\\));", @@ -902,6 +929,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ] }, @@ -941,6 +971,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "[\\s\\S](?:\\b(?:x(?:link:href|html|mlns)|data:text\\/html|pattern\\b.*?=|formaction)|!ENTITY\\s+(?:\\S+|%\\s+\\S+)\\s+(?:PUBLIC|SYSTEM)|;base64|@import)\\b", @@ -984,6 +1017,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "\\b(?:s(?:tyle|rc)|href)\\b\\s*?=", @@ -1034,6 +1070,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?:(?:<\\w[\\s\\S]*[\\s/]|['\\\"](?:[\\s\\S]*[\\s/])?)(?:on(?:d(?:e(?:vice(?:(?:orienta|mo)tion|proximity|found|light)|livery(?:success|error)|activate)|r(?:ag(?:e(?:n(?:ter|d)|xit)|(?:gestur|leav)e|start|drop|over)|op)|i(?:s(?:c(?:hargingtimechange|onnect(?:ing|ed))|abled)|aling)|ata(?:setc(?:omplete|hanged)|(?:availabl|chang)e|error)|urationchange|ownloading|blclick)|Moz(?:M(?:agnifyGesture(?:Update|Start)?|ouse(?:PixelScroll|Hittest))|S(?:wipeGesture(?:Update|Start|End)?|crolledAreaChanged)|(?:(?:Press)?TapGestur|BeforeResiz)e|EdgeUI(?:C(?:omplet|ancel)|Start)ed|RotateGesture(?:Update|Start)?|A(?:udioAvailable|fterPaint))|c(?:o(?:m(?:p(?:osition(?:update|start|end)|lete)|mand(?:update)?)|n(?:t(?:rolselect|extmenu)|nect(?:ing|ed))|py)|a(?:(?:llschang|ch)ed|nplay(?:through)?|rdstatechange)|h(?:(?:arging(?:time)?ch)?ange|ecking)|(?:fstate|ell)change|u(?:echange|t)|l(?:ick|ose))|s(?:t(?:a(?:t(?:uschanged|echange)|lled|rt)|k(?:sessione|comma)nd|op)|e(?:ek(?:complete|ing|ed)|(?:lec(?:tstar)?)?t|n(?:ding|t))|(?:peech|ound)(?:start|end)|u(?:ccess|spend|bmit)|croll|how)|m(?:o(?:z(?:(?:pointerlock|fullscreen)(?:change|error)|(?:orientation|time)change|network(?:down|up)load)|use(?:(?:lea|mo)ve|o(?:ver|ut)|enter|wheel|down|up)|ve(?:start|end)?)|essage|ark)|a(?:n(?:imation(?:iteration|start|end)|tennastatechange)|fter(?:(?:scriptexecu|upda)te|print)|udio(?:process|start|end)|d(?:apteradded|dtrack)|ctivate|lerting|bort)|b(?:e(?:fore(?:(?:(?:de)?activa|scriptexecu)te|u(?:nload|pdate)|p(?:aste|rint)|c(?:opy|ut)|editfocus)|gin(?:Event)?)|oun(?:dary|ce)|l(?:ocked|ur)|roadcast|usy)|DOM(?:Node(?:Inserted(?:IntoDocument)?|Removed(?:FromDocument)?)|(?:CharacterData|Subtree)Modified|A(?:ttrModified|ctivate)|Focus(?:Out|In)|MouseScroll)|r(?:e(?:s(?:u(?:m(?:ing|e)|lt)|ize|et)|adystatechange|pea(?:tEven)?t|movetrack|trieving|ceived)|ow(?:s(?:inserted|delete)|e(?:nter|xit))|atechange)|p(?:op(?:up(?:hid(?:den|ing)|show(?:ing|n))|state)|a(?:ge(?:hide|show)|(?:st|us)e|int)|ro(?:pertychange|gress)|lay(?:ing)?)|t(?:ouch(?:(?:lea|mo)ve|en(?:ter|d)|cancel|start)|ransition(?:cancel|end|run)|ime(?:update|out)|ext)|u(?:s(?:erproximity|sdreceived)|p(?:gradeneeded|dateready)|n(?:derflow|load))|f(?:o(?:rm(?:change|input)|cus(?:out|in)?)|i(?:lterchange|nish)|ailed)|l(?:o(?:ad(?:e(?:d(?:meta)?data|nd)|start)|secapture)|evelchange|y)|g(?:amepad(?:(?:dis)?connected|button(?:down|up)|axismove)|et)|e(?:n(?:d(?:Event|ed)?|abled|ter)|rror(?:update)?|mptied|xit)|i(?:cc(?:cardlockerror|infochange)|n(?:coming|valid|put))|o(?:(?:(?:ff|n)lin|bsolet)e|verflow(?:changed)?|pen)|SVG(?:(?:Unl|L)oad|Resize|Scroll|Abort|Error|Zoom)|h(?:e(?:adphoneschange|l[dp])|ashchange|olding)|v(?:o(?:lum|ic)e|ersion)change|w(?:a(?:it|rn)ing|heel)|key(?:press|down|up)|(?:AppComman|Loa)d|no(?:update|match)|Request|zoom)|s(?:tyle|rc)|background|formaction|lowsrc|ping)[\\s\\x08]*?=|<[^\\w<>]*(?:[^<>\\\"'\\s]*:)?[^\\w<>]*\\W*?(?:(?:a\\W*?(?:n\\W*?i\\W*?m\\W*?a\\W*?t\\W*?e|p\\W*?p\\W*?l\\W*?e\\W*?t|u\\W*?d\\W*?i\\W*?o)|b\\W*?(?:i\\W*?n\\W*?d\\W*?i\\W*?n\\W*?g\\W*?s|a\\W*?s\\W*?e|o\\W*?d\\W*?y)|i?\\W*?f\\W*?r\\W*?a\\W*?m\\W*?e|o\\W*?b\\W*?j\\W*?e\\W*?c\\W*?t|i\\W*?m\\W*?a?\\W*?g\\W*?e?|e\\W*?m\\W*?b\\W*?e\\W*?d|p\\W*?a\\W*?r\\W*?a\\W*?m|v\\W*?i\\W*?d\\W*?e\\W*?o|l\\W*?i\\W*?n\\W*?k)[^>\\w]|s\\W*?(?:c\\W*?r\\W*?i\\W*?p\\W*?t|t\\W*?y\\W*?l\\W*?e|e\\W*?t[^>\\w]|v\\W*?g)|m\\W*?(?:a\\W*?r\\W*?q\\W*?u\\W*?e\\W*?e|e\\W*?t\\W*?a[^>\\w])|f\\W*?o\\W*?r\\W*?m))", @@ -1071,6 +1110,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?i:.*?(?:@[i\\x5c]|(?:[:=]|&#x?0*(?:58|3A|61|3D);?).*?(?:[(?:\\x5c]|&#x?0*(?:40|28|92|5C);?)))", @@ -1109,6 +1151,9 @@ }, { "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" } ], "regex": "(?i:= Gem::Version.new('3.3') && + ffi_version < Gem::Version.new('1.16.0') + + Datadog.logger.warn( + 'AppSec is not supported in Ruby versions above 3.3.0 when using `ffi` versions older than 1.16.0, ' \ + 'and will be forcibly disabled due to a memory leak in `ffi`. ' \ + 'Please upgrade your `ffi` version to 1.16.0 or higher.' + ) + + true + end + + def create_processor(settings, telemetry) + rules = AppSec::Processor::RuleLoader.load_rules( + telemetry: telemetry, + ruleset: settings.appsec.ruleset + ) return nil unless rules actions = rules['actions'] @@ -47,9 +67,10 @@ def create_processor(settings) rules: [rules], data: data, exclusions: exclusions, + telemetry: telemetry ) - processor = Processor.new(ruleset: ruleset) + processor = Processor.new(ruleset: ruleset, telemetry: telemetry) return nil unless processor.ready? processor @@ -63,11 +84,11 @@ def initialize(processor:) @mutex = Mutex.new end - def reconfigure(ruleset:, actions:) + def reconfigure(ruleset:, actions:, telemetry:) @mutex.synchronize do AppSec::Processor::Actions.merge(actions) - new = Processor.new(ruleset: ruleset) + new = Processor.new(ruleset: ruleset, telemetry: telemetry) if new && new.ready? old = @processor diff --git a/lib/datadog/appsec/configuration/settings.rb b/lib/datadog/appsec/configuration/settings.rb index 87f7148f7d0..e8ed0a8240a 100644 --- a/lib/datadog/appsec/configuration/settings.rb +++ b/lib/datadog/appsec/configuration/settings.rb @@ -9,8 +9,8 @@ module Configuration # Settings module Settings # rubocop:disable Layout/LineLength - DEFAULT_OBFUSCATOR_KEY_REGEX = '(?i)(?:p(?:ass)?w(?:or)?d|pass(?:_?phrase)?|secret|(?:api_?|private_?|public_?)key)|token|consumer_?(?:id|key|secret)|sign(?:ed|ature)|bearer|authorization' - DEFAULT_OBFUSCATOR_VALUE_REGEX = '(?i)(?:p(?:ass)?w(?:or)?d|pass(?:_?phrase)?|secret|(?:api_?|private_?|public_?|access_?|secret_?)key(?:_?id)?|token|consumer_?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?)(?:\s*=[^;]|"\s*:\s*"[^"]+")|bearer\s+[a-z0-9\._\-]+|token:[a-z0-9]{13}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L][\w=-]+\.ey[I-L][\w=-]+(?:\.[\w.+\/=-]+)?|[\-]{5}BEGIN[a-z\s]+PRIVATE\sKEY[\-]{5}[^\-]+[\-]{5}END[a-z\s]+PRIVATE\sKEY|ssh-rsa\s*[a-z0-9\/\.+]{100,}' + DEFAULT_OBFUSCATOR_KEY_REGEX = '(?i)pass|pw(?:or)?d|secret|(?:api|private|public|access)[_-]?key|token|consumer[_-]?(?:id|key|secret)|sign(?:ed|ature)|bearer|authorization|jsessionid|phpsessid|asp\.net[_-]sessionid|sid|jwt' + DEFAULT_OBFUSCATOR_VALUE_REGEX = '(?i)(?:p(?:ass)?w(?:or)?d|pass(?:[_-]?phrase)?|secret(?:[_-]?key)?|(?:(?:api|private|public|access)[_-]?)key(?:[_-]?id)?|(?:(?:auth|access|id|refresh)[_-]?)?token|consumer[_-]?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?|jsessionid|phpsessid|asp\.net(?:[_-]|-)sessionid|sid|jwt)(?:\s*=[^;]|"\s*:\s*"[^"]+")|bearer\s+[a-z0-9\._\-]+|token:[a-z0-9]{13}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L][\w=-]+\.ey[I-L][\w=-]+(?:\.[\w.+\/=-]+)?|[\-]{5}BEGIN[a-z\s]+PRIVATE\sKEY[\-]{5}[^\-]+[\-]{5}END[a-z\s]+PRIVATE\sKEY|ssh-rsa\s*[a-z0-9\/\.+]{100,}' # rubocop:enable Layout/LineLength APPSEC_VALID_TRACK_USER_EVENTS_MODE = [ 'safe', @@ -197,6 +197,14 @@ def self.add_settings!(base) o.type :bool, nilable: true o.env 'DD_APPSEC_SCA_ENABLED' end + + settings :standalone do + option :enabled do |o| + o.type :bool + o.env 'DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED' + o.default false + end + end end end end diff --git a/lib/datadog/appsec/contrib/devise/patcher.rb b/lib/datadog/appsec/contrib/devise/patcher.rb index 4fddf55e0df..5781dd55510 100644 --- a/lib/datadog/appsec/contrib/devise/patcher.rb +++ b/lib/datadog/appsec/contrib/devise/patcher.rb @@ -2,6 +2,7 @@ require_relative '../patcher' require_relative 'patcher/authenticatable_patch' +require_relative 'patcher/rememberable_patch' require_relative 'patcher/registration_controller_patch' module Datadog @@ -23,16 +24,25 @@ def target_version end def patch - patch_authenticable_strategy + patch_authenticatable_strategy + patch_rememberable_strategy patch_registration_controller Patcher.instance_variable_set(:@patched, true) end - def patch_authenticable_strategy + def patch_authenticatable_strategy ::Devise::Strategies::Authenticatable.prepend(AuthenticatablePatch) end + def patch_rememberable_strategy + return unless ::Devise::STRATEGIES.include?(:rememberable) + + # Rememberable strategy is required in autoloaded Rememberable model + ::Devise::Models::Rememberable # rubocop:disable Lint/Void + ::Devise::Strategies::Rememberable.prepend(RememberablePatch) + end + def patch_registration_controller ::ActiveSupport.on_load(:after_initialize) do ::Devise::RegistrationsController.prepend(RegistrationControllerPatch) diff --git a/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb b/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb index 2def7b707af..ecd5b186821 100644 --- a/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +++ b/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb @@ -15,6 +15,7 @@ module AuthenticatablePatch def validate(resource, &block) result = super return result unless AppSec.enabled? + return result if @_datadog_skip_track_login_event track_user_events_configuration = Datadog.configuration.appsec.track_user_events diff --git a/lib/datadog/appsec/contrib/devise/patcher/rememberable_patch.rb b/lib/datadog/appsec/contrib/devise/patcher/rememberable_patch.rb new file mode 100644 index 00000000000..28dd78d2712 --- /dev/null +++ b/lib/datadog/appsec/contrib/devise/patcher/rememberable_patch.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module Datadog + module AppSec + module Contrib + module Devise + module Patcher + # To avoid tracking new sessions that are created by + # Rememberable strategy as Login Success events. + module RememberablePatch + def validate(*args) + @_datadog_skip_track_login_event = true + + super + end + end + end + end + end + end +end diff --git a/lib/datadog/appsec/contrib/graphql/appsec_trace.rb b/lib/datadog/appsec/contrib/graphql/appsec_trace.rb new file mode 100644 index 00000000000..72d74204265 --- /dev/null +++ b/lib/datadog/appsec/contrib/graphql/appsec_trace.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'json' +require_relative 'gateway/multiplex' +require_relative '../../instrumentation/gateway' + +module Datadog + module AppSec + module Contrib + module GraphQL + # These methods will be called by the GraphQL runtime to send the variables to the WAF. + # We actually don't need to create any span/trace. + module AppSecTrace + def execute_multiplex(multiplex:) + return super unless Datadog::AppSec.enabled? + + gateway_multiplex = Gateway::Multiplex.new(multiplex) + + multiplex_return, multiplex_response = Instrumentation.gateway.push('graphql.multiplex', gateway_multiplex) do + super + end + + # Returns an error * the number of queries so that the entire multiplex is blocked + if multiplex_response + blocked_event = multiplex_response.find { |action, _options| action == :block } + multiplex_return = AppSec::Response.graphql_response(gateway_multiplex) if blocked_event + end + + multiplex_return + end + end + end + end + end +end diff --git a/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb b/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb new file mode 100644 index 00000000000..56f54a12cc1 --- /dev/null +++ b/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb @@ -0,0 +1,109 @@ +# frozen_string_literal: true + +require 'graphql' + +require_relative '../../../instrumentation/gateway/argument' + +module Datadog + module AppSec + module Contrib + module GraphQL + module Gateway + # Gateway Request argument. Normalized extration of data from Rack::Request + class Multiplex < Instrumentation::Gateway::Argument + attr_reader :multiplex + + def initialize(multiplex) + super() + @multiplex = multiplex + end + + def arguments + @arguments ||= build_arguments_hash + end + + def queries + @multiplex.queries + end + + private + + # This method builds an array of argument hashes for each field with arguments in the query. + # + # For example, given the following query: + # query ($postSlug: ID = "my-first-post", $withComments: Boolean!) { + # firstPost: post(slug: $postSlug) { + # title + # comments @include(if: $withComments) { + # author { name } + # content + # } + # } + # } + # + # The result would be: + # {"post"=>[{"slug"=>"my-first-post"}], "comments"=>[{"include"=>{"if"=>true}}]} + # + # Note that the `comments` "include" directive is included in the arguments list + def build_arguments_hash + queries.each_with_object({}) do |query, args_hash| + next unless query.selected_operation + + arguments_from_selections(query.selected_operation.selections, query.variables, args_hash) + end + end + + def arguments_from_selections(selections, query_variables, args_hash) + selections.each do |selection| + # rubocop:disable Style/ClassEqualityComparison + next unless selection.class.name == Integration::AST_NODE_CLASS_NAMES[:field] + # rubocop:enable Style/ClassEqualityComparison + + selection_name = selection.alias || selection.name + + if !selection.arguments.empty? || !selection.directives.empty? + args_hash[selection_name] ||= [] + args_hash[selection_name] << + arguments_hash(selection.arguments, query_variables).merge!( + arguments_from_directives(selection.directives, query_variables) + ) + end + + arguments_from_selections(selection.selections, query_variables, args_hash) + end + end + + def arguments_from_directives(directives, query_variables) + directives.each_with_object({}) do |directive, args_hash| + # rubocop:disable Style/ClassEqualityComparison + next unless directive.class.name == Integration::AST_NODE_CLASS_NAMES[:directive] + # rubocop:enable Style/ClassEqualityComparison + + args_hash[directive.name] = arguments_hash(directive.arguments, query_variables) + end + end + + def arguments_hash(arguments, query_variables) + arguments.each_with_object({}) do |argument, args_hash| + args_hash[argument.name] = argument_value(argument, query_variables) + end + end + + def argument_value(argument, query_variables) + case argument.value.class.name + when Integration::AST_NODE_CLASS_NAMES[:variable_identifier] + # we need to pass query.variables here instead of query.provided_variables, + # since #provided_variables don't know anything about variable default value + query_variables[argument.value.name] + when Integration::AST_NODE_CLASS_NAMES[:input_object] + arguments_hash(argument.value.arguments, query_variables) + else + argument.value + end + end + end + end + end + end + end +end diff --git a/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb b/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb new file mode 100644 index 00000000000..68a1c5acf11 --- /dev/null +++ b/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb @@ -0,0 +1,67 @@ +# frozen_string_literal: true + +require 'json' +require_relative '../../../instrumentation/gateway' +require_relative '../reactive/multiplex' +require_relative '../../../reactive/operation' + +module Datadog + module AppSec + module Contrib + module GraphQL + module Gateway + # Watcher for Rack gateway events + module Watcher + class << self + def watch + gateway = Instrumentation.gateway + + watch_multiplex(gateway) + end + + # This time we don't throw but use next + def watch_multiplex(gateway = Instrumentation.gateway) + gateway.watch('graphql.multiplex', :appsec) do |stack, gateway_multiplex| + block = false + event = nil + + scope = AppSec::Scope.active_scope + + if scope + AppSec::Reactive::Operation.new('graphql.multiplex') do |op| + GraphQL::Reactive::Multiplex.subscribe(op, scope.processor_context) do |result| + event = { + waf_result: result, + trace: scope.trace, + span: scope.service_entry_span, + multiplex: gateway_multiplex, + actions: result.actions + } + + Datadog::AppSec::Event.tag_and_keep!(scope, result) + scope.processor_context.events << event + end + + block = GraphQL::Reactive::Multiplex.publish(op, gateway_multiplex) + end + end + + next [nil, [[:block, event]]] if block + + ret, res = stack.call(gateway_multiplex.arguments) + + if event + res ||= [] + res << [:monitor, event] + end + + [ret, res] + end + end + end + end + end + end + end + end +end diff --git a/lib/datadog/appsec/contrib/graphql/integration.rb b/lib/datadog/appsec/contrib/graphql/integration.rb new file mode 100644 index 00000000000..827d6df8ccb --- /dev/null +++ b/lib/datadog/appsec/contrib/graphql/integration.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +require_relative '../integration' +require_relative 'patcher' + +module Datadog + module AppSec + module Contrib + module GraphQL + # Description of GraphQL integration + class Integration + include Datadog::AppSec::Contrib::Integration + + MINIMUM_VERSION = Gem::Version.new('2.0.19') + + AST_NODE_CLASS_NAMES = { + field: 'GraphQL::Language::Nodes::Field', + directive: 'GraphQL::Language::Nodes::Directive', + variable_identifier: 'GraphQL::Language::Nodes::VariableIdentifier', + input_object: 'GraphQL::Language::Nodes::InputObject', + }.freeze + + register_as :graphql, auto_patch: false + + def self.version + Gem.loaded_specs['graphql'] && Gem.loaded_specs['graphql'].version + end + + def self.loaded? + !defined?(::GraphQL).nil? + end + + def self.compatible? + super && version >= MINIMUM_VERSION && ast_node_classes_defined? + end + + def self.auto_instrument? + true + end + + def self.ast_node_classes_defined? + AST_NODE_CLASS_NAMES.all? do |_, class_name| + Object.const_defined?(class_name) + end + end + + def patcher + Patcher + end + end + end + end + end +end diff --git a/lib/datadog/appsec/contrib/graphql/patcher.rb b/lib/datadog/appsec/contrib/graphql/patcher.rb new file mode 100644 index 00000000000..b95d12f4ca5 --- /dev/null +++ b/lib/datadog/appsec/contrib/graphql/patcher.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require_relative '../patcher' +require_relative 'gateway/watcher' + +if Gem.loaded_specs['graphql'] && Gem.loaded_specs['graphql'].version >= Gem::Version.new('2.0.19') + require_relative 'appsec_trace' +end + +module Datadog + module AppSec + module Contrib + module GraphQL + # Patcher for AppSec on GraphQL + module Patcher + include Datadog::AppSec::Contrib::Patcher + + module_function + + def patched? + Patcher.instance_variable_get(:@patched) + end + + def target_version + Integration.version + end + + def patch + Gateway::Watcher.watch + ::GraphQL::Schema.trace_with(AppSecTrace) + Patcher.instance_variable_set(:@patched, true) + end + end + end + end + end +end diff --git a/lib/datadog/appsec/contrib/graphql/reactive/multiplex.rb b/lib/datadog/appsec/contrib/graphql/reactive/multiplex.rb new file mode 100644 index 00000000000..269e16d7466 --- /dev/null +++ b/lib/datadog/appsec/contrib/graphql/reactive/multiplex.rb @@ -0,0 +1,59 @@ +# frozen_string_literal: true + +module Datadog + module AppSec + module Contrib + module GraphQL + module Reactive + # Dispatch data from a GraphQL resolve query to the WAF context + module Multiplex + ADDRESSES = [ + 'graphql.server.all_resolvers' + ].freeze + private_constant :ADDRESSES + + def self.publish(op, gateway_multiplex) + catch(:block) do + op.publish('graphql.server.all_resolvers', gateway_multiplex.arguments) + + nil + end + end + + def self.subscribe(op, waf_context) + op.subscribe(*ADDRESSES) do |*values| + Datadog.logger.debug { "reacted to #{ADDRESSES.inspect}: #{values.inspect}" } + arguments = values[0] + + waf_args = { + 'graphql.server.all_resolvers' => arguments + } + + waf_timeout = Datadog.configuration.appsec.waf_timeout + result = waf_context.run(waf_args, waf_timeout) + + Datadog.logger.debug { "WAF TIMEOUT: #{result.inspect}" } if result.timeout + + case result.status + when :match + Datadog.logger.debug { "WAF: #{result.inspect}" } + + yield result + throw(:block, true) unless result.actions.empty? + when :ok + Datadog.logger.debug { "WAF OK: #{result.inspect}" } + when :invalid_call + Datadog.logger.debug { "WAF CALL ERROR: #{result.inspect}" } + when :invalid_rule, :invalid_flow, :no_rule + Datadog.logger.debug { "WAF RULE ERROR: #{result.inspect}" } + else + Datadog.logger.debug { "WAF UNKNOWN: #{result.status.inspect} #{result.inspect}" } + end + end + end + end + end + end + end + end +end diff --git a/lib/datadog/appsec/contrib/rack/gateway/request.rb b/lib/datadog/appsec/contrib/rack/gateway/request.rb index b0b57a99087..488d862ee95 100644 --- a/lib/datadog/appsec/contrib/rack/gateway/request.rb +++ b/lib/datadog/appsec/contrib/rack/gateway/request.rb @@ -41,18 +41,15 @@ def method def headers result = request.env.each_with_object({}) do |(k, v), h| - h[k.gsub(/^HTTP_/, '').downcase!.tr('_', '-')] = v if k =~ /^HTTP_/ + h[k.delete_prefix('HTTP_').tap(&:downcase!).tap { |s| s.tr!('_', '-') }] = v if k.start_with?('HTTP_') end result['content-type'] = request.content_type if request.content_type - result['content-length'] = request.content_length if request.content_length + # Since Rack 3.1, content-length is nil if the body is empty, but we still want to send it to the WAF. + result['content-length'] = request.content_length || '0' result end - def body - request.body.read.tap { request.body.rewind } - end - def url request.url end diff --git a/lib/datadog/appsec/contrib/rack/gateway/watcher.rb b/lib/datadog/appsec/contrib/rack/gateway/watcher.rb index 112d5609e08..a66387329c3 100644 --- a/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +++ b/lib/datadog/appsec/contrib/rack/gateway/watcher.rb @@ -41,11 +41,9 @@ def watch_request(gateway = Instrumentation.gateway) actions: result.actions } - if scope.service_entry_span - scope.service_entry_span.set_tag('appsec.blocked', 'true') if result.actions.include?('block') - scope.service_entry_span.set_tag('appsec.event', 'true') - end - + # We want to keep the trace in case of security event + scope.trace.keep! if scope.trace + Datadog::AppSec::Event.tag_and_keep!(scope, result) scope.processor_context.events << event end end @@ -85,11 +83,9 @@ def watch_response(gateway = Instrumentation.gateway) actions: result.actions } - if scope.service_entry_span - scope.service_entry_span.set_tag('appsec.blocked', 'true') if result.actions.include?('block') - scope.service_entry_span.set_tag('appsec.event', 'true') - end - + # We want to keep the trace in case of security event + scope.trace.keep! if scope.trace + Datadog::AppSec::Event.tag_and_keep!(scope, result) scope.processor_context.events << event end end @@ -129,11 +125,9 @@ def watch_request_body(gateway = Instrumentation.gateway) actions: result.actions } - if scope.service_entry_span - scope.service_entry_span.set_tag('appsec.blocked', 'true') if result.actions.include?('block') - scope.service_entry_span.set_tag('appsec.event', 'true') - end - + # We want to keep the trace in case of security event + scope.trace.keep! if scope.trace + Datadog::AppSec::Event.tag_and_keep!(scope, result) scope.processor_context.events << event end end diff --git a/lib/datadog/appsec/contrib/rack/request_middleware.rb b/lib/datadog/appsec/contrib/rack/request_middleware.rb index 55323226019..cbb232c00e3 100644 --- a/lib/datadog/appsec/contrib/rack/request_middleware.rb +++ b/lib/datadog/appsec/contrib/rack/request_middleware.rb @@ -150,7 +150,9 @@ def add_appsec_tags(processor, scope) return unless trace && span - span.set_tag('_dd.appsec.enabled', 1) + span.set_metric(Datadog::AppSec::Ext::TAG_APPSEC_ENABLED, 1) + # We add this tag when ASM standalone is enabled to make sure we don't bill APM + span.set_metric(Datadog::AppSec::Ext::TAG_APM_ENABLED, 0) if Datadog.configuration.appsec.standalone.enabled span.set_tag('_dd.runtime_family', 'ruby') span.set_tag('_dd.appsec.waf.version', Datadog::AppSec::WAF::VERSION::BASE_STRING) diff --git a/lib/datadog/appsec/contrib/rails/gateway/watcher.rb b/lib/datadog/appsec/contrib/rails/gateway/watcher.rb index ea4b34f3713..ab1bfe612ec 100644 --- a/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +++ b/lib/datadog/appsec/contrib/rails/gateway/watcher.rb @@ -38,11 +38,9 @@ def watch_request_action(gateway = Instrumentation.gateway) actions: result.actions } - if scope.service_entry_span - scope.service_entry_span.set_tag('appsec.blocked', 'true') if result.actions.include?('block') - scope.service_entry_span.set_tag('appsec.event', 'true') - end - + # We want to keep the trace in case of security event + scope.trace.keep! if scope.trace + Datadog::AppSec::Event.tag_and_keep!(scope, result) scope.processor_context.events << event end end diff --git a/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb b/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb index 93ba40c4f92..91383478c29 100644 --- a/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +++ b/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb @@ -40,11 +40,9 @@ def watch_request_dispatch(gateway = Instrumentation.gateway) actions: result.actions } - if scope.service_entry_span - scope.service_entry_span.set_tag('appsec.blocked', 'true') if result.actions.include?('block') - scope.service_entry_span.set_tag('appsec.event', 'true') - end - + # We want to keep the trace in case of security event + scope.trace.keep! if scope.trace + Datadog::AppSec::Event.tag_and_keep!(scope, result) scope.processor_context.events << event end end @@ -84,11 +82,9 @@ def watch_request_routed(gateway = Instrumentation.gateway) actions: result.actions } - if scope.service_entry_span - scope.service_entry_span.set_tag('appsec.blocked', 'true') if result.actions.include?('block') - scope.service_entry_span.set_tag('appsec.event', 'true') - end - + # We want to keep the trace in case of security event + scope.trace.keep! if scope.trace + Datadog::AppSec::Event.tag_and_keep!(scope, result) scope.processor_context.events << event end end diff --git a/lib/datadog/appsec/event.rb b/lib/datadog/appsec/event.rb index 0ebaa810458..01f0de86d20 100644 --- a/lib/datadog/appsec/event.rb +++ b/lib/datadog/appsec/event.rb @@ -52,7 +52,7 @@ def record(span, *events) # ensure rate limiter is called only when there are events to record return if events.empty? || span.nil? - Datadog::AppSec::RateLimiter.limit(:traces) do + Datadog::AppSec::RateLimiter.thread_local.limit do record_via_span(span, *events) end end @@ -137,6 +137,18 @@ def build_service_entry_tags(event_group) end # rubocop:enable Metrics/MethodLength + def tag_and_keep!(scope, waf_result) + # We want to keep the trace in case of security event + scope.trace.keep! if scope.trace + + if scope.service_entry_span + scope.service_entry_span.set_tag('appsec.blocked', 'true') if waf_result.actions.include?('block') + scope.service_entry_span.set_tag('appsec.event', 'true') + end + + add_distributed_tags(scope.trace) + end + private def compressed_and_base64_encoded(value) @@ -165,6 +177,18 @@ def gzip(value) gz.close sio.string end + + # Propagate to downstream services the information that the current distributed trace is + # containing at least one ASM security event. + def add_distributed_tags(trace) + return unless trace + + trace.set_tag( + Datadog::Tracing::Metadata::Ext::Distributed::TAG_DECISION_MAKER, + Datadog::Tracing::Sampling::Ext::Decision::ASM + ) + trace.set_tag(Datadog::AppSec::Ext::TAG_DISTRIBUTED_APPSEC_EVENT, '1') + end end end end diff --git a/lib/datadog/appsec/ext.rb b/lib/datadog/appsec/ext.rb index 2de81657dec..30c21b7d240 100644 --- a/lib/datadog/appsec/ext.rb +++ b/lib/datadog/appsec/ext.rb @@ -5,6 +5,10 @@ module AppSec module Ext INTERRUPT = :datadog_appsec_interrupt SCOPE_KEY = 'datadog.appsec.scope' + + TAG_APPSEC_ENABLED = '_dd.appsec.enabled' + TAG_APM_ENABLED = '_dd.apm.enabled' + TAG_DISTRIBUTED_APPSEC_EVENT = '_dd.p.appsec' end end end diff --git a/lib/datadog/appsec/monitor/gateway/watcher.rb b/lib/datadog/appsec/monitor/gateway/watcher.rb index 9262cc277a6..74fc4d3fd60 100644 --- a/lib/datadog/appsec/monitor/gateway/watcher.rb +++ b/lib/datadog/appsec/monitor/gateway/watcher.rb @@ -35,11 +35,9 @@ def watch_user_id(gateway = Instrumentation.gateway) actions: result.actions } - if scope.service_entry_span - scope.service_entry_span.set_tag('appsec.blocked', 'true') if result.actions.include?('block') - scope.service_entry_span.set_tag('appsec.event', 'true') - end - + # We want to keep the trace in case of security event + scope.trace.keep! if scope.trace + Datadog::AppSec::Event.tag_and_keep!(scope, result) scope.processor_context.events << event end end diff --git a/lib/datadog/appsec/processor.rb b/lib/datadog/appsec/processor.rb index 2d0c42d1f90..bea22159c7d 100644 --- a/lib/datadog/appsec/processor.rb +++ b/lib/datadog/appsec/processor.rb @@ -4,82 +4,17 @@ module Datadog module AppSec # Processor integrates libddwaf into datadog/appsec class Processor - # Context manages a sequence of runs - class Context - attr_reader :time_ns, :time_ext_ns, :timeouts, :events - - def initialize(processor) - @context = Datadog::AppSec::WAF::Context.new(processor.send(:handle)) - @time_ns = 0.0 - @time_ext_ns = 0.0 - @timeouts = 0 - @events = [] - @run_mutex = Mutex.new - end - - def run(input, timeout = WAF::LibDDWAF::DDWAF_RUN_TIMEOUT) - @run_mutex.lock - - start_ns = Core::Utils::Time.get_time(:nanosecond) - - input.reject! do |_, v| - case v - when TrueClass, FalseClass - false - else - v.nil? ? true : v.empty? - end - end - - _code, res = @context.run(input, timeout) - - stop_ns = Core::Utils::Time.get_time(:nanosecond) - - # these updates are not thread safe and should be protected - @time_ns += res.total_runtime - @time_ext_ns += (stop_ns - start_ns) - @timeouts += 1 if res.timeout - - res - ensure - @run_mutex.unlock - end - - def extract_schema - return unless extract_schema? - - input = { - 'waf.context.processor' => { - 'extract-schema' => true - } - } - - _code, res = @context.run(input, WAF::LibDDWAF::DDWAF_RUN_TIMEOUT) - - res - end - - def finalize - @context.finalize - end - - private - - def extract_schema? - Datadog.configuration.appsec.api_security.enabled && - Datadog.configuration.appsec.api_security.sample_rate.sample? - end - end - attr_reader :diagnostics, :addresses - def initialize(ruleset:) + def initialize(ruleset:, telemetry:) @diagnostics = nil @addresses = [] settings = Datadog.configuration.appsec + @telemetry = telemetry - unless load_libddwaf && create_waf_handle(settings, ruleset) - Datadog.logger.warn { 'AppSec is disabled, see logged errors above' } + # TODO: Refactor to make it easier to test + unless require_libddwaf && libddwaf_provides_waf? && create_waf_handle(settings, ruleset) + Datadog.logger.warn('AppSec is disabled, see logged errors above') end end @@ -97,8 +32,27 @@ def finalize private - def load_libddwaf - Processor.require_libddwaf && Processor.libddwaf_provides_waf? + # libddwaf raises a LoadError on unsupported platforms; it may at some + # point succeed in being required yet not provide a specific needed feature. + def require_libddwaf + Datadog.logger.debug { "libddwaf platform: #{libddwaf_platform}" } + + require 'libddwaf' + + true + rescue LoadError => e + Datadog.logger.error do + 'libddwaf failed to load,' \ + "installed platform: #{libddwaf_platform} ruby platforms: #{ruby_platforms} error: #{e.inspect}" + end + @telemetry.report(e, description: 'libddwaf failed to load') + + false + end + + # check whether libddwaf is required *and* able to provide the needed feature + def libddwaf_provides_waf? + defined?(Datadog::AppSec::WAF) ? true : false end def create_waf_handle(settings, ruleset) @@ -119,6 +73,7 @@ def create_waf_handle(settings, ruleset) Datadog.logger.error do "libddwaf failed to initialize, error: #{e.inspect}" end + @telemetry.report(e, description: 'libddwaf failed to initialize') @diagnostics = e.diagnostics if e.diagnostics @@ -127,44 +82,21 @@ def create_waf_handle(settings, ruleset) Datadog.logger.error do "libddwaf failed to initialize, error: #{e.inspect}" end + @telemetry.report(e, description: 'libddwaf failed to initialize') false end - class << self - # check whether libddwaf is required *and* able to provide the needed feature - def libddwaf_provides_waf? - defined?(Datadog::AppSec::WAF) ? true : false - end - - # libddwaf raises a LoadError on unsupported platforms; it may at some - # point succeed in being required yet not provide a specific needed feature. - def require_libddwaf - Datadog.logger.debug { "libddwaf platform: #{libddwaf_platform}" } - - require 'libddwaf' - - true - rescue LoadError => e - Datadog.logger.error do - 'libddwaf failed to load,' \ - "installed platform: #{libddwaf_platform} ruby platforms: #{ruby_platforms} error: #{e.inspect}" - end - - false - end - - def libddwaf_spec - Gem.loaded_specs['libddwaf'] - end - - def libddwaf_platform - libddwaf_spec ? libddwaf_spec.platform.to_s : 'unknown' + def libddwaf_platform + if Gem.loaded_specs['libddwaf'] + Gem.loaded_specs['libddwaf'].platform.to_s + else + 'unknown' end + end - def ruby_platforms - Gem.platforms.map(&:to_s) - end + def ruby_platforms + Gem.platforms.map(&:to_s) end end end diff --git a/lib/datadog/appsec/processor/actions.rb b/lib/datadog/appsec/processor/actions.rb index 3ed130672ba..5f022d812d8 100644 --- a/lib/datadog/appsec/processor/actions.rb +++ b/lib/datadog/appsec/processor/actions.rb @@ -11,7 +11,7 @@ def actions @actions ||= [] end - def fecth_configuration(action) + def fetch_configuration(action) actions.find { |action_configuration| action_configuration['id'] == action } end diff --git a/lib/datadog/appsec/processor/context.rb b/lib/datadog/appsec/processor/context.rb new file mode 100644 index 00000000000..296a734da64 --- /dev/null +++ b/lib/datadog/appsec/processor/context.rb @@ -0,0 +1,74 @@ +# frozen_string_literal: true + +module Datadog + module AppSec + class Processor + # Context manages a sequence of runs + class Context + attr_reader :time_ns, :time_ext_ns, :timeouts, :events + + def initialize(processor) + @context = Datadog::AppSec::WAF::Context.new(processor.send(:handle)) + @time_ns = 0.0 + @time_ext_ns = 0.0 + @timeouts = 0 + @events = [] + @run_mutex = Mutex.new + end + + def run(input, timeout = WAF::LibDDWAF::DDWAF_RUN_TIMEOUT) + @run_mutex.lock + + start_ns = Core::Utils::Time.get_time(:nanosecond) + + input.reject! do |_, v| + case v + when TrueClass, FalseClass + false + else + v.nil? ? true : v.empty? + end + end + + _code, res = @context.run(input, timeout) + + stop_ns = Core::Utils::Time.get_time(:nanosecond) + + # these updates are not thread safe and should be protected + @time_ns += res.total_runtime + @time_ext_ns += (stop_ns - start_ns) + @timeouts += 1 if res.timeout + + res + ensure + @run_mutex.unlock + end + + def extract_schema + return unless extract_schema? + + input = { + 'waf.context.processor' => { + 'extract-schema' => true + } + } + + _code, res = @context.run(input, WAF::LibDDWAF::DDWAF_RUN_TIMEOUT) + + res + end + + def finalize + @context.finalize + end + + private + + def extract_schema? + Datadog.configuration.appsec.api_security.enabled && + Datadog.configuration.appsec.api_security.sample_rate.sample? + end + end + end + end +end diff --git a/lib/datadog/appsec/processor/rule_loader.rb b/lib/datadog/appsec/processor/rule_loader.rb index cf6be812911..8ca587df75b 100644 --- a/lib/datadog/appsec/processor/rule_loader.rb +++ b/lib/datadog/appsec/processor/rule_loader.rb @@ -9,7 +9,7 @@ class Processor # that load appsec rules and data from settings module RuleLoader class << self - def load_rules(ruleset:) + def load_rules(ruleset:, telemetry:) begin case ruleset when :recommended, :strict @@ -35,6 +35,8 @@ def load_rules(ruleset:) "libddwaf ruleset failed to load, ruleset: #{ruleset.inspect} error: #{e.inspect}" end + telemetry.report(e, description: 'libddwaf ruleset failed to load') + nil end end diff --git a/lib/datadog/appsec/processor/rule_merger.rb b/lib/datadog/appsec/processor/rule_merger.rb index 1396ecf718c..c9e5b6829d9 100644 --- a/lib/datadog/appsec/processor/rule_merger.rb +++ b/lib/datadog/appsec/processor/rule_merger.rb @@ -18,25 +18,35 @@ def initialize(version1, version2) end end - DEFAULT_WAF_PROCESSORS = begin - JSON.parse(Datadog::AppSec::Assets.waf_processors) - rescue StandardError => e - Datadog.logger.error { "libddwaf rulemerger failed to parse default waf processors. Error: #{e.inspect}" } - [] - end - - DEFAULT_WAF_SCANNERS = begin - JSON.parse(Datadog::AppSec::Assets.waf_scanners) - rescue StandardError => e - Datadog.logger.error { "libddwaf rulemerger failed to parse default waf scanners. Error: #{e.inspect}" } - [] - end - class << self + # TODO: `processors` and `scanners` are not provided by the caller, consider removing them def merge( + telemetry:, rules:, data: [], overrides: [], exclusions: [], custom_rules: [], - processors: DEFAULT_WAF_PROCESSORS, scanners: DEFAULT_WAF_SCANNERS + processors: nil, scanners: nil ) + processors ||= begin + default_waf_processors + rescue StandardError => e + Datadog.logger.error("libddwaf rulemerger failed to parse default waf processors. Error: #{e.inspect}") + telemetry.report( + e, + description: 'libddwaf rulemerger failed to parse default waf processors' + ) + [] + end + + scanners ||= begin + default_waf_scanners + rescue StandardError => e + Datadog.logger.error("libddwaf rulemerger failed to parse default waf scanners. Error: #{e.inspect}") + telemetry.report( + e, + description: 'libddwaf rulemerger failed to parse default waf scanners' + ) + [] + end + combined_rules = combine_rules(rules) combined_data = combine_data(data) if data.any? @@ -53,6 +63,14 @@ def merge( combined_rules end + def default_waf_processors + @default_waf_processors ||= JSON.parse(Datadog::AppSec::Assets.waf_processors) + end + + def default_waf_scanners + @default_waf_scanners ||= JSON.parse(Datadog::AppSec::Assets.waf_scanners) + end + private def combine_rules(rules) diff --git a/lib/datadog/appsec/rate_limiter.rb b/lib/datadog/appsec/rate_limiter.rb index fd1f76c0119..e7935e31ef5 100644 --- a/lib/datadog/appsec/rate_limiter.rb +++ b/lib/datadog/appsec/rate_limiter.rb @@ -1,60 +1,45 @@ # frozen_string_literal: true +require_relative '../core/rate_limiter' + module Datadog module AppSec - # Simple per-thread rate limiter - # Since AppSec marks sampling to keep on a security event, this limits the flood of egress traces involving AppSec + # Per-thread rate limiter based on token bucket rate limiter. + # + # Since AppSec marks sampling to keep on a security event, this limits + # the flood of egress traces involving AppSec class RateLimiter - def initialize(rate) - @rate = rate - @timestamps = [] - end - - def limit - now = Time.now.to_f - - loop do - oldest = @timestamps.first - - break if oldest.nil? || now - oldest < 1 - - @timestamps.shift - end - - @timestamps << now - - if (count = @timestamps.count) <= @rate - yield - else - Datadog.logger.debug { "Rate limit hit: #{count}/#{@rate} AppSec traces/second" } - end - end + THREAD_KEY = :datadog_security_appsec_rate_limiter class << self - def limit(name, &block) - rate_limiter(name).limit(&block) + def thread_local + rate_limiter = Thread.current.thread_variable_get(THREAD_KEY) + return rate_limiter unless rate_limiter.nil? + + Thread.current.thread_variable_set(THREAD_KEY, new(trace_rate_limit)) end # reset a rate limiter: used for testing - def reset!(name) - Thread.current[:datadog_security_trace_rate_limiter] = nil + def reset! + Thread.current.thread_variable_set(THREAD_KEY, nil) end - protected - - def rate_limiter(name) - case name - when :traces - Thread.current[:datadog_security_trace_rate_limiter] ||= RateLimiter.new(trace_rate_limit) - else - raise "unsupported rate limiter: #{name.inspect}" - end - end + private def trace_rate_limit Datadog.configuration.appsec.trace_rate_limit end end + + def initialize(rate) + @rate_limiter = Core::TokenBucket.new(rate) + end + + def limit + return yield if @rate_limiter.allow? + + Datadog.logger.debug { "Rate limit hit: #{@rate_limiter.current_window_rate} AppSec traces/second" } + end end end end diff --git a/lib/datadog/appsec/remote.rb b/lib/datadog/appsec/remote.rb index a10a0bd77e6..29ef57bbd3f 100644 --- a/lib/datadog/appsec/remote.rb +++ b/lib/datadog/appsec/remote.rb @@ -53,7 +53,7 @@ def products end # rubocop:disable Metrics/MethodLength - def receivers + def receivers(telemetry) return [] unless remote_features_enabled? matcher = Core::Remote::Dispatcher::Matcher::Product.new(ASM_PRODUCTS) @@ -86,7 +86,10 @@ def receivers end if rules.empty? - settings_rules = AppSec::Processor::RuleLoader.load_rules(ruleset: Datadog.configuration.appsec.ruleset) + settings_rules = AppSec::Processor::RuleLoader.load_rules( + telemetry: telemetry, + ruleset: Datadog.configuration.appsec.ruleset + ) raise NoRulesError, 'no default rules available' unless settings_rules @@ -99,9 +102,10 @@ def receivers overrides: overrides, exclusions: exclusions, custom_rules: custom_rules, + telemetry: telemetry ) - Datadog::AppSec.reconfigure(ruleset: ruleset, actions: actions) + Datadog::AppSec.reconfigure(ruleset: ruleset, actions: actions, telemetry: telemetry) end [receiver] diff --git a/lib/datadog/appsec/response.rb b/lib/datadog/appsec/response.rb index 38330bd10cb..acad8573a9d 100644 --- a/lib/datadog/appsec/response.rb +++ b/lib/datadog/appsec/response.rb @@ -36,7 +36,7 @@ def negotiate(env, actions) # I rather use break to stop the execution next if configured_response - action_configuration = AppSec::Processor::Actions.fecth_configuration(action) + action_configuration = AppSec::Processor::Actions.fetch_configuration(action) next unless action_configuration configured_response = case action_configuration['type'] @@ -50,6 +50,20 @@ def negotiate(env, actions) configured_response || default_response(env) end + def graphql_response(gateway_multiplex) + multiplex_return = [] + gateway_multiplex.queries.each do |query| + # This method is only called in places where GraphQL-Ruby is already required + query_result = ::GraphQL::Query::Result.new( + query: query, + values: JSON.parse(content('application/json')) + ) + multiplex_return << query_result + end + + multiplex_return + end + private def default_response(env) diff --git a/lib/datadog/appsec/scope.rb b/lib/datadog/appsec/scope.rb index 701142b3c8b..17d78abd114 100644 --- a/lib/datadog/appsec/scope.rb +++ b/lib/datadog/appsec/scope.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require_relative 'processor' +require_relative 'processor/context' module Datadog module AppSec diff --git a/lib/datadog/appsec/utils.rb b/lib/datadog/appsec/utils.rb index 8e4083533db..b38ec5b96f5 100644 --- a/lib/datadog/appsec/utils.rb +++ b/lib/datadog/appsec/utils.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require_relative 'utils/trace_operation' + module Datadog module AppSec # Utilities for AppSec diff --git a/lib/datadog/appsec/utils/trace_operation.rb b/lib/datadog/appsec/utils/trace_operation.rb new file mode 100644 index 00000000000..19f2b0b2187 --- /dev/null +++ b/lib/datadog/appsec/utils/trace_operation.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Datadog + module AppSec + module Utils + # Utility class to to AppSec-specific trace operations + class TraceOperation + def self.appsec_standalone_reject?(trace) + Datadog.configuration.appsec.standalone.enabled && + (trace.nil? || trace.get_tag(Datadog::AppSec::Ext::TAG_DISTRIBUTED_APPSEC_EVENT) != '1') + end + end + end + end +end diff --git a/lib/datadog/core/configuration.rb b/lib/datadog/core/configuration.rb index 19d3ff27110..c16ba4b0880 100644 --- a/lib/datadog/core/configuration.rb +++ b/lib/datadog/core/configuration.rb @@ -278,9 +278,7 @@ def logger_without_components def handle_interrupt_shutdown! logger = Datadog.logger shutdown_thread = Thread.new { shutdown! } - unless Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3') - shutdown_thread.name = Datadog::Core::Configuration.name - end + shutdown_thread.name = Datadog::Core::Configuration.name print_message_treshold_seconds = 0.2 diff --git a/lib/datadog/core/configuration/components.rb b/lib/datadog/core/configuration/components.rb index 7aea57f5ee1..3f73a750c7c 100644 --- a/lib/datadog/core/configuration/components.rb +++ b/lib/datadog/core/configuration/components.rb @@ -13,6 +13,7 @@ require_relative '../../tracing/component' require_relative '../../profiling/component' require_relative '../../appsec/component' +require_relative '../crashtracking/component' module Datadog module Core @@ -56,19 +57,18 @@ def build_runtime_metrics_worker(settings) end def build_telemetry(settings, agent_settings, logger) - enabled = settings.telemetry.enabled - if agent_settings.adapter != Datadog::Core::Configuration::Ext::Agent::HTTP::ADAPTER - enabled = false - logger.debug { "Telemetry disabled. Agent network adapter not supported: #{agent_settings.adapter}" } + Telemetry::Component.build(settings, agent_settings, logger) + end + + def build_crashtracker(settings, agent_settings, logger:) + return unless settings.crashtracking.enabled + + if (libdatadog_api_failure = Datadog::Core::Crashtracking::Component::LIBDATADOG_API_FAILURE) + logger.debug("Cannot enable crashtracking: #{libdatadog_api_failure}") + return end - Telemetry::Component.new( - enabled: enabled, - metrics_enabled: enabled && settings.telemetry.metrics_enabled, - heartbeat_interval_seconds: settings.telemetry.heartbeat_interval_seconds, - metrics_aggregation_interval_seconds: settings.telemetry.metrics_aggregation_interval_seconds, - dependency_collection: settings.telemetry.dependency_collection - ) + Datadog::Core::Crashtracking::Component.build(settings, agent_settings, logger: logger) end end @@ -82,6 +82,7 @@ def build_telemetry(settings, agent_settings, logger) :runtime_metrics, :telemetry, :tracer, + :crashtracker, :appsec def initialize(settings) @@ -93,20 +94,22 @@ def initialize(settings) # the Core resolver from within your product/component's namespace. agent_settings = AgentSettingsResolver.call(settings, logger: @logger) - @remote = Remote::Component.build(settings, agent_settings) + @telemetry = self.class.build_telemetry(settings, agent_settings, @logger) + + @remote = Remote::Component.build(settings, agent_settings, telemetry: telemetry) @tracer = self.class.build_tracer(settings, agent_settings, logger: @logger) + @crashtracker = self.class.build_crashtracker(settings, agent_settings, logger: @logger) @profiler, profiler_logger_extra = Datadog::Profiling::Component.build_profiler_component( settings: settings, agent_settings: agent_settings, - optional_tracer: @tracer, + optional_tracer: @tracer ) @environment_logger_extra.merge!(profiler_logger_extra) if profiler_logger_extra @runtime_metrics = self.class.build_runtime_metrics_worker(settings) @health_metrics = self.class.build_health_metrics(settings) - @telemetry = self.class.build_telemetry(settings, agent_settings, logger) - @appsec = Datadog::AppSec::Component.build_appsec_component(settings) + @appsec = Datadog::AppSec::Component.build_appsec_component(settings, telemetry: telemetry) self.class.configure_tracing(settings) end diff --git a/lib/datadog/core/configuration/settings.rb b/lib/datadog/core/configuration/settings.rb index a241b73cc7f..4d0b9bb13ad 100644 --- a/lib/datadog/core/configuration/settings.rb +++ b/lib/datadog/core/configuration/settings.rb @@ -301,6 +301,16 @@ def initialize(*_) o.default true end + # Can be used to enable/disable the Datadog::Profiling.allocation_count feature. + # + # Requires allocation profiling to be enabled. + # + # @default false + option :allocation_counting_enabled do |o| + o.type :bool + o.default false + end + # Can be used to enable/disable the collection of heap profiles. # # This feature is alpha and disabled by default @@ -400,10 +410,8 @@ def initialize(*_) # The profiler gathers data by sending `SIGPROF` unix signals to Ruby application threads. # # We've discovered that this can trigger a bug in a number of Ruby APIs in the `Dir` class, as - # described in https://github.com/DataDog/dd-trace-rb/issues/3450 . This workaround prevents the issue - # from happening by monkey patching the affected APIs. - # - # (In the future, once a fix lands upstream, we'll disable this workaround for Rubies that don't need it) + # described in https://bugs.ruby-lang.org/issues/20586 . + # This was fixed for Ruby 3.4+, and this setting is a no-op for those versions. # # @default `DD_PROFILING_DIR_INTERRUPTION_WORKAROUND_ENABLED` environment variable as a boolean, # otherwise `true` @@ -441,13 +449,81 @@ def initialize(*_) o.default 60 end - # Enables reporting of information when the Ruby VM crashes. - # - # @default `DD_PROFILING_EXPERIMENTAL_CRASH_TRACKING_ENABLED` environment variable as a boolean, - # otherwise `false` + # DEV-3.0: Remove `experimental_crash_tracking_enabled` option option :experimental_crash_tracking_enabled do |o| + o.after_set do |_, _, precedence| + unless precedence == Datadog::Core::Configuration::Option::Precedence::DEFAULT + Core.log_deprecation(key: :experimental_crash_tracking_enabled) do + 'The profiling.advanced.experimental_crash_tracking_enabled setting has been deprecated for removal '\ + 'and no longer does anything. Please remove it from your Datadog.configure block.' + end + end + end + end + + # Enables GVL profiling. This will show when threads are waiting for GVL in the timeline view. + # + # This is a preview feature and disabled by default. It requires Ruby 3.2+. + # + # @default `DD_PROFILING_PREVIEW_GVL_ENABLED` environment variable as a boolean, otherwise `false` + option :preview_gvl_enabled do |o| + o.type :bool + o.env 'DD_PROFILING_PREVIEW_GVL_ENABLED' + o.default false + end + + # Controls the smallest time period the profiler will report a thread waiting for the GVL. + # + # The default value was set to minimize overhead. Periods smaller than the set value will not be reported (e.g. + # the thread will be reported as whatever it was doing before it waited for the GVL). + # + # We do not recommend setting this to less than 1ms. Tweaking this value can increase application latency and + # memory use. + # + # @default 10_000_000 (10ms) + option :waiting_for_gvl_threshold_ns do |o| + o.type :int + o.default 10_000_000 + end + + # Controls if the profiler should attempt to read context from the otel library + # + # @default false + option :preview_otel_context_enabled do |o| + o.env 'DD_PROFILING_PREVIEW_OTEL_CONTEXT_ENABLED' + o.default false + o.env_parser do |value| + if value + value = value.strip.downcase + if ['only', 'both'].include?(value) + value + elsif ['true', '1'].include?(value) + 'both' + else + 'false' + end + end + end + o.setter do |value| + if value == true + :both + elsif ['only', 'both', :only, :both].include?(value) + value.to_sym + else + false + end + end + end + + # Controls if the heap profiler should attempt to clean young objects after GC, rather than just at + # serialization time. This lowers memory usage and high percentile latency. + # + # Only takes effect when used together with `gc_enabled: true` and `experimental_heap_enabled: true`. + # + # @default false + option :heap_clean_after_gc_enabled do |o| o.type :bool - o.env 'DD_PROFILING_EXPERIMENTAL_CRASH_TRACKING_ENABLED' + o.env 'DD_PROFILING_HEAP_CLEAN_AFTER_GC_ENABLED' o.default false end end @@ -618,6 +694,33 @@ def initialize(*_) end end + # The monotonic clock time provider used by Datadog. This option is internal and is used by `datadog-ci` + # gem to avoid traces' durations being skewed by timecop. + # + # It must respect the interface of [Datadog::Core::Utils::Time#get_time] method. + # + # For [Timecop](https://rubygems.org/gems/timecop), for example, + # `->(unit = :float_second) { ::Process.clock_gettime_without_mock(::Process::CLOCK_MONOTONIC, unit) }` + # allows Datadog features to use the real monotonic time when time is frozen with + # `Timecop.mock_process_clock = true`. + # + # @default `->(unit = :float_second) { ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, unit)}` + # @return [Proc] + option :get_time_provider do |o| + o.default_proc { |unit = :float_second| ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, unit) } + o.type :proc + + o.after_set do |get_time_provider| + Core::Utils::Time.get_time_provider = get_time_provider + end + + o.resetter do |_value| + ->(unit = :float_second) { ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, unit) }.tap do |default| + Core::Utils::Time.get_time_provider = default + end + end + end + # The `version` tag in Datadog. Use it to enable [Deployment Tracking](https://docs.datadoghq.com/tracing/deployment_tracking/). # @see https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging # @default `DD_VERSION` environment variable, otherwise `nils` @@ -663,6 +766,24 @@ def initialize(*_) o.type :bool end + # Enable agentless mode for telemetry: submit telemetry events directly to the intake without Datadog Agent. + # + # @return [Boolean] + # @!visibility private + option :agentless_enabled do |o| + o.type :bool + o.default false + end + + # Overrides agentless telemetry URL. To be used internally for testing purposes only. + # + # @return [String] + # @!visibility private + option :agentless_url_override do |o| + o.type :string, nilable: true + o.env Core::Telemetry::Ext::ENV_AGENTLESS_URL_OVERRIDE + end + # Enable metrics collection for telemetry. Metrics collection only works when telemetry is enabled and # metrics are enabled. # @default `DD_TELEMETRY_METRICS_ENABLED` environment variable, otherwise `true`. @@ -734,6 +855,14 @@ def initialize(*_) o.type :string, nilable: true o.env Core::Telemetry::Ext::ENV_INSTALL_TIME end + + # Telemetry shutdown timeout in seconds + # + # @!visibility private + option :shutdown_timeout_seconds do |o| + o.type :float + o.default 1.0 + end end # Remote configuration @@ -794,6 +923,15 @@ def initialize(*_) option :service end + settings :crashtracking do + # Enables reporting of information when Ruby VM crashes. + option :enabled do |o| + o.type :bool + o.default false + o.env 'DD_CRASHTRACKING_ENABLED' + end + end + # TODO: Tracing should manage its own settings. # Keep this extension here for now to keep things working. extend Datadog::Tracing::Configuration::Settings diff --git a/lib/datadog/core/crashtracking/agent_base_url.rb b/lib/datadog/core/crashtracking/agent_base_url.rb new file mode 100644 index 00000000000..0a1a95ac605 --- /dev/null +++ b/lib/datadog/core/crashtracking/agent_base_url.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require_relative '../configuration/ext' + +module Datadog + module Core + module Crashtracking + # This module provides a method to resolve the base URL of the agent + module AgentBaseUrl + def self.resolve(agent_settings) + case agent_settings.adapter + when Datadog::Core::Configuration::Ext::Agent::HTTP::ADAPTER + "#{agent_settings.ssl ? 'https' : 'http'}://#{agent_settings.hostname}:#{agent_settings.port}/" + when Datadog::Core::Configuration::Ext::Agent::UnixSocket::ADAPTER + "unix://#{agent_settings.uds_path}" + end + end + end + end + end +end diff --git a/lib/datadog/core/crashtracking/component.rb b/lib/datadog/core/crashtracking/component.rb new file mode 100644 index 00000000000..d1249496583 --- /dev/null +++ b/lib/datadog/core/crashtracking/component.rb @@ -0,0 +1,111 @@ +# frozen_string_literal: true + +require 'libdatadog' + +require_relative 'tag_builder' +require_relative 'agent_base_url' +require_relative '../utils/only_once' +require_relative '../utils/at_fork_monkey_patch' + +module Datadog + module Core + module Crashtracking + # Used to report Ruby VM crashes. + # + # NOTE: The crashtracker native state is a singleton; + # so even if you create multiple instances of `Crashtracking::Component` and start them, + # it only works as "last writer wins". Same for stop -- there's only one state, so calling stop + # on it will stop the crash tracker, regardless of which instance started it. + # + # Methods prefixed with _native_ are implemented in `crashtracker.c` + class Component + LIBDATADOG_API_FAILURE = + begin + require "libdatadog_api.#{RUBY_VERSION[/\d+.\d+/]}_#{RUBY_PLATFORM}" + nil + rescue LoadError => e + e.message + end + + ONLY_ONCE = Core::Utils::OnlyOnce.new + + def self.build(settings, agent_settings, logger:) + tags = TagBuilder.call(settings) + agent_base_url = AgentBaseUrl.resolve(agent_settings) + logger.warn('Missing agent base URL; cannot enable crash tracking') unless agent_base_url + + ld_library_path = ::Libdatadog.ld_library_path + logger.warn('Missing ld_library_path; cannot enable crash tracking') unless ld_library_path + + path_to_crashtracking_receiver_binary = ::Libdatadog.path_to_crashtracking_receiver_binary + unless path_to_crashtracking_receiver_binary + logger.warn('Missing path_to_crashtracking_receiver_binary; cannot enable crash tracking') + end + + return unless agent_base_url + return unless ld_library_path + return unless path_to_crashtracking_receiver_binary + + new( + tags: tags, + agent_base_url: agent_base_url, + ld_library_path: ld_library_path, + path_to_crashtracking_receiver_binary: path_to_crashtracking_receiver_binary, + logger: logger + ).tap(&:start) + end + + def initialize(tags:, agent_base_url:, ld_library_path:, path_to_crashtracking_receiver_binary:, logger:) + @tags = tags + @agent_base_url = agent_base_url + @ld_library_path = ld_library_path + @path_to_crashtracking_receiver_binary = path_to_crashtracking_receiver_binary + @logger = logger + end + + def start + Utils::AtForkMonkeyPatch.apply! + + start_or_update_on_fork(action: :start) + ONLY_ONCE.run do + Utils::AtForkMonkeyPatch.at_fork(:child) do + # Must NOT reference `self` here, as only the first instance will + # be captured by the ONLY_ONCE and we want to pick the latest active one + # (which may have different tags or agent config) + Datadog.send(:components).crashtracker&.update_on_fork + end + end + end + + def update_on_fork + start_or_update_on_fork(action: :update_on_fork) + end + + def stop + self.class._native_stop + logger.debug('Crash tracking stopped successfully') + rescue => e + logger.error("Failed to stop crash tracking: #{e.message}") + end + + private + + attr_reader :tags, :agent_base_url, :ld_library_path, :path_to_crashtracking_receiver_binary, :logger + + def start_or_update_on_fork(action:) + self.class._native_start_or_update_on_fork( + action: action, + agent_base_url: agent_base_url, + path_to_crashtracking_receiver_binary: path_to_crashtracking_receiver_binary, + ld_library_path: ld_library_path, + tags_as_array: tags.to_a, + upload_timeout_seconds: 1 + ) + logger.debug("Crash tracking #{action} successfully") + rescue => e + logger.error("Failed to #{action} crash tracking: #{e.message}") + end + end + end + end +end diff --git a/lib/datadog/core/crashtracking/tag_builder.rb b/lib/datadog/core/crashtracking/tag_builder.rb new file mode 100644 index 00000000000..44d94e0dad3 --- /dev/null +++ b/lib/datadog/core/crashtracking/tag_builder.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +require_relative '../utils' +require_relative '../environment/socket' +require_relative '../environment/identity' +require_relative '../environment/git' + +module Datadog + module Core + module Crashtracking + # This module builds a hash of tags + module TagBuilder + def self.call(settings) + hash = { + 'host' => Environment::Socket.hostname, + 'process_id' => Process.pid.to_s, + 'runtime_engine' => Environment::Identity.lang_engine, + 'runtime-id' => Environment::Identity.id, + 'runtime_platform' => Environment::Identity.lang_platform, + 'runtime_version' => Environment::Identity.lang_version, + 'env' => settings.env, + 'service' => settings.service, + 'version' => settings.version, + 'git.repository_url' => Environment::Git.git_repository_url, + 'git.commit.sha' => Environment::Git.git_commit_sha, + 'is_crash' => 'true', + 'language' => 'ruby', + 'library_version' => Core::Environment::Identity.gem_datadog_version, + }.compact + + # Make sure everything is an utf-8 string, to avoid encoding issues in downstream + settings.tags.merge(hash).each_with_object({}) do |(key, value), h| + h[Utils.utf8_encode(key)] = Utils.utf8_encode(value) + end + end + end + end + end +end diff --git a/lib/datadog/core/diagnostics/environment_logger.rb b/lib/datadog/core/diagnostics/environment_logger.rb index 3222e5196c4..8200a5081cf 100644 --- a/lib/datadog/core/diagnostics/environment_logger.rb +++ b/lib/datadog/core/diagnostics/environment_logger.rb @@ -8,6 +8,8 @@ module Datadog module Core module Diagnostics # Base class for EnvironmentLoggers - should allow for easy reporting by users to Datadog support. + # + # The EnvironmentLogger should not pollute the logs in a development environment. module EnvironmentLogging def log_configuration!(prefix, data) logger.info("DATADOG CONFIGURATION - #{prefix} - #{data}") @@ -31,21 +33,12 @@ def logger def log? startup_logs_enabled = Datadog.configuration.diagnostics.startup_logs.enabled if startup_logs_enabled.nil? - !repl? && !rspec? # Suppress logs if we are running in a REPL or rspec + # Do not pollute the logs in a development environment. + !Datadog::Core::Environment::Execution.development? else startup_logs_enabled end end - - REPL_PROGRAM_NAMES = %w[irb pry].freeze - - def repl? - REPL_PROGRAM_NAMES.include?($PROGRAM_NAME) - end - - def rspec? - $PROGRAM_NAME.end_with?('rspec') - end end # Collects and logs Core diagnostic information diff --git a/lib/datadog/core/environment/execution.rb b/lib/datadog/core/environment/execution.rb index 2049773a8d4..6d4a084ebec 100644 --- a/lib/datadog/core/environment/execution.rb +++ b/lib/datadog/core/environment/execution.rb @@ -25,9 +25,9 @@ def development? # 2. Checking if `Net::HTTP` is referring to the original one # => ::Net::HTTP.equal?(::WebMock::HttpLibAdapters::NetHttpAdapter::OriginalNetHTTP) def webmock_enabled? - defined?(::WebMock::HttpLibAdapters::NetHttpAdapter) && + !!(defined?(::WebMock::HttpLibAdapters::NetHttpAdapter) && defined?(::Net::HTTP) && - ::Net::HTTP.equal?(::WebMock::HttpLibAdapters::NetHttpAdapter.instance_variable_get(:@webMockNetHTTP)) + ::Net::HTTP.equal?(::WebMock::HttpLibAdapters::NetHttpAdapter.instance_variable_get(:@webMockNetHTTP))) end private @@ -68,7 +68,7 @@ def minitest? # Check if we are running from `bin/cucumber` or `cucumber/rake/task`. def cucumber? - defined?(::Cucumber::Cli) + !!defined?(::Cucumber::Cli) end # If this is a Rails application, use different heuristics to detect @@ -80,7 +80,7 @@ def rails_development? # detecting its presence is enough to deduct if this is a development environment. # # @see https://github.com/rails/spring/blob/48b299348ace2188444489a0c216a6f3e9687281/README.md?plain=1#L204-L207 - defined?(::Spring) || rails_env_development? + !!defined?(::Spring) || rails_env_development? end RAILS_ENV_DEVELOPMENT = Set['development', 'test'].freeze @@ -94,7 +94,7 @@ def rails_development? # it's common to have a custom "staging" environment, and such environment normally want to run as close # to production as possible. def rails_env_development? - defined?(::Rails.env) && RAILS_ENV_DEVELOPMENT.include?(::Rails.env) + !!defined?(::Rails.env) && RAILS_ENV_DEVELOPMENT.include?(::Rails.env) end end end diff --git a/lib/datadog/core/environment/yjit.rb b/lib/datadog/core/environment/yjit.rb index ffe1cdf8344..42be908c33d 100644 --- a/lib/datadog/core/environment/yjit.rb +++ b/lib/datadog/core/environment/yjit.rb @@ -52,6 +52,11 @@ def yjit_alloc_size ::RubyVM::YJIT.runtime_stats[:yjit_alloc_size] end + # Ratio of YJIT-executed instructions + def ratio_in_yjit + ::RubyVM::YJIT.runtime_stats[:ratio_in_yjit] + end + def available? defined?(::RubyVM::YJIT) \ && ::RubyVM::YJIT.enabled? \ diff --git a/lib/datadog/core/metrics/client.rb b/lib/datadog/core/metrics/client.rb index cb180d7de2d..cde34bb32db 100644 --- a/lib/datadog/core/metrics/client.rb +++ b/lib/datadog/core/metrics/client.rb @@ -2,6 +2,7 @@ require_relative '../utils/time' require_relative '../utils/only_once' +require_relative '../telemetry/logger' require_relative '../configuration/ext' require_relative 'ext' @@ -100,6 +101,7 @@ def count(stat, value = nil, options = nil, &block) Datadog.logger.error( "Failed to send count stat. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}" ) + Telemetry::Logger.report(e, description: 'Failed to send count stat') end def distribution(stat, value = nil, options = nil, &block) @@ -113,6 +115,7 @@ def distribution(stat, value = nil, options = nil, &block) Datadog.logger.error( "Failed to send distribution stat. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}" ) + Telemetry::Logger.report(e, description: 'Failed to send distribution stat') end def increment(stat, options = nil) @@ -125,6 +128,7 @@ def increment(stat, options = nil) Datadog.logger.error( "Failed to send increment stat. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}" ) + Telemetry::Logger.report(e, description: 'Failed to send increment stat') end def gauge(stat, value = nil, options = nil, &block) @@ -138,6 +142,7 @@ def gauge(stat, value = nil, options = nil, &block) Datadog.logger.error( "Failed to send gauge stat. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}" ) + Telemetry::Logger.report(e, description: 'Failed to send gauge stat') end def time(stat, options = nil) @@ -153,9 +158,11 @@ def time(stat, options = nil) distribution(stat, ((finished - start) * 1000), options) end rescue StandardError => e + # TODO: Likely to be redundant, since `distribution` handles its own errors. Datadog.logger.error( "Failed to send time stat. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}" ) + Telemetry::Logger.report(e, description: 'Failed to send time stat') end end diff --git a/lib/datadog/core/rate_limiter.rb b/lib/datadog/core/rate_limiter.rb new file mode 100644 index 00000000000..61a55aa2d22 --- /dev/null +++ b/lib/datadog/core/rate_limiter.rb @@ -0,0 +1,183 @@ +# frozen_string_literal: true + +require_relative 'utils/time' + +module Datadog + module Core + # Checks for rate limiting on a resource. + class RateLimiter + # Checks if resource of specified size can be + # conforms with the current limit. + # + # Implementations of this method are not guaranteed + # to be side-effect free. + # + # @return [Boolean] whether a resource conforms with the current limit + def allow?(size = 1); end + + # The effective rate limiting ratio based on + # recent calls to `allow?`. + # + # @return [Float] recent allowance ratio + def effective_rate; end + end + + # Implementation of the Token Bucket metering algorithm + # for rate limiting. + # + # @see https://en.wikipedia.org/wiki/Token_bucket Token bucket + class TokenBucket < RateLimiter + attr_reader :rate, :max_tokens + + # @param rate [Numeric] Allowance rate, in units per second + # if rate is negative, always allow + # if rate is zero, never allow + # @param max_tokens [Numeric] Limit of available tokens + def initialize(rate, max_tokens = rate) + super() + + raise ArgumentError, "rate must be a number: #{rate}" unless rate.is_a?(Numeric) + raise ArgumentError, "max_tokens must be a number: #{max_tokens}" unless max_tokens.is_a?(Numeric) + + @rate = rate + @max_tokens = max_tokens + + @tokens = max_tokens + @total_messages = 0 + @conforming_messages = 0 + @prev_conforming_messages = nil + @prev_total_messages = nil + @current_window = nil + + @last_refill = Core::Utils::Time.get_time + end + + # Checks if a message of provided +size+ + # conforms with the current bucket limit. + # + # If it does, return +true+ and remove +size+ + # tokens from the bucket. + # If it does not, return +false+ without affecting + # the tokens from the bucket. + # + # @return [Boolean] +true+ if message conforms with current bucket limit + def allow?(size = 1) + allowed = should_allow?(size) + update_rate_counts(allowed) + allowed + end + + # Ratio of 'conformance' per 'total messages' checked + # averaged for the past 2 buckets + # + # Returns +1.0+ when no messages have been checked yet. + # + # @return [Float] Conformance ratio, between +[0,1]+ + def effective_rate + return 0.0 if @rate.zero? + return 1.0 if @rate < 0 || @total_messages.zero? + + return current_window_rate if @prev_conforming_messages.nil? || @prev_total_messages.nil? + + (@conforming_messages.to_f + @prev_conforming_messages.to_f) / (@total_messages + @prev_total_messages) + end + + # Ratio of 'conformance' per 'total messages' checked + # on this bucket + # + # Returns +1.0+ when no messages have been checked yet. + # + # @return [Float] Conformance ratio, between +[0,1]+ + def current_window_rate + return 1.0 if @total_messages.zero? + + @conforming_messages.to_f / @total_messages + end + + # @return [Numeric] number of tokens currently available + def available_tokens + @tokens + end + + private + + def refill_since_last_message + now = Core::Utils::Time.get_time + elapsed = now - @last_refill + + # Update the number of available tokens, but ensure we do not exceed the max + # we return the min of tokens + rate*elapsed, or max tokens + refill_tokens(@rate * elapsed) + + @last_refill = now + end + + def refill_tokens(size) + @tokens += size + @tokens = @max_tokens if @tokens > @max_tokens + end + + def increment_total_count + @total_messages += 1 + end + + def increment_conforming_count + @conforming_messages += 1 + end + + def should_allow?(size = 1) + # rate limit of 0 blocks everything + return false if @rate.zero? + + # negative rate limit disables rate limiting + return true if @rate < 0 + + refill_since_last_message + + # if tokens < 1 we don't allow? + return false if @tokens < size + + @tokens -= size + + true + end + + # Sets and Updates the past two 1 second windows for which + # the rate limiter must compute it's rate over and updates + # the total count, and conforming message count if +allowed+ + def update_rate_counts(allowed) + now = Core::Utils::Time.get_time + + # No tokens have been seen yet, start a new window + if @current_window.nil? + @current_window = now + # If more than 1 second has past since last window, reset + elsif now - @current_window >= 1 + @prev_conforming_messages = @conforming_messages + @prev_total_messages = @total_messages + @conforming_messages = 0 + @total_messages = 0 + @current_window = now + end + + increment_conforming_count if allowed + + increment_total_count + end + end + + # {Datadog::Core::RateLimiter} that accepts all resources, + # with no limits. + class UnlimitedLimiter < RateLimiter + # @return [Boolean] always +true+ + def allow?(_ = 1) + true + end + + # @return [Float] always 100% + def effective_rate + 1.0 + end + end + end +end diff --git a/lib/datadog/core/remote/client/capabilities.rb b/lib/datadog/core/remote/client/capabilities.rb index 00f4b7322a6..6578d6af325 100644 --- a/lib/datadog/core/remote/client/capabilities.rb +++ b/lib/datadog/core/remote/client/capabilities.rb @@ -12,10 +12,11 @@ class Client class Capabilities attr_reader :products, :capabilities, :receivers, :base64_capabilities - def initialize(settings) + def initialize(settings, telemetry) @capabilities = [] @products = [] @receivers = [] + @telemetry = telemetry register(settings) @@ -28,12 +29,12 @@ def register(settings) if settings.respond_to?(:appsec) && settings.appsec.enabled register_capabilities(Datadog::AppSec::Remote.capabilities) register_products(Datadog::AppSec::Remote.products) - register_receivers(Datadog::AppSec::Remote.receivers) + register_receivers(Datadog::AppSec::Remote.receivers(@telemetry)) end register_capabilities(Datadog::Tracing::Remote.capabilities) register_products(Datadog::Tracing::Remote.products) - register_receivers(Datadog::Tracing::Remote.receivers) + register_receivers(Datadog::Tracing::Remote.receivers(@telemetry)) end def register_capabilities(capabilities) diff --git a/lib/datadog/core/remote/component.rb b/lib/datadog/core/remote/component.rb index 096c60708c6..3c8047cc9d3 100644 --- a/lib/datadog/core/remote/component.rb +++ b/lib/datadog/core/remote/component.rb @@ -39,6 +39,7 @@ def initialize(settings, capabilities, agent_settings) @client.sync @healthy ||= true rescue Client::SyncError => e + # Transient errors due to network or agent. Logged the error but not via telemetry Datadog.logger.error do "remote worker client sync error: #{e.message} location: #{Array(e.backtrace).first}. skipping sync" end @@ -48,6 +49,7 @@ def initialize(settings, capabilities, agent_settings) # negotiation object stores error logging state that should be reset. negotiation = Negotiation.new(settings, agent_settings) + # Transient errors due to network or agent. Logged the error but not via telemetry Datadog.logger.error do "remote worker error: #{e.class.name} #{e.message} location: #{Array(e.backtrace).first}. "\ 'reseting client state' @@ -150,10 +152,10 @@ class << self # # Those checks are instead performed inside the worker loop. # This allows users to upgrade their agent while keeping their application running. - def build(settings, agent_settings) + def build(settings, agent_settings, telemetry:) return unless settings.remote.enabled - new(settings, Client::Capabilities.new(settings), agent_settings) + new(settings, Client::Capabilities.new(settings, telemetry), agent_settings) end end end diff --git a/lib/datadog/core/remote/negotiation.rb b/lib/datadog/core/remote/negotiation.rb index a43eb80a334..d68de4f40b6 100644 --- a/lib/datadog/core/remote/negotiation.rb +++ b/lib/datadog/core/remote/negotiation.rb @@ -20,7 +20,7 @@ def endpoint?(path) if res.internal_error? && network_error?(res.error) unless @logged[:agent_unreachable] - Datadog.logger.error { "agent unreachable: cannot negotiate #{path}" } + Datadog.logger.warn { "agent unreachable: cannot negotiate #{path}" } @logged[:agent_unreachable] = true end @@ -29,7 +29,7 @@ def endpoint?(path) if res.not_found? unless @logged[:no_info_endpoint] - Datadog.logger.error { "agent reachable but has no /info endpoint: cannot negotiate #{path}" } + Datadog.logger.warn { "agent reachable but has no /info endpoint: cannot negotiate #{path}" } @logged[:no_info_endpoint] = true end @@ -38,7 +38,7 @@ def endpoint?(path) unless res.ok? unless @logged[:unexpected_response] - Datadog.logger.error { "agent reachable but unexpected response: cannot negotiate #{path}" } + Datadog.logger.warn { "agent reachable but unexpected response: cannot negotiate #{path}" } @logged[:unexpected_response] = true end @@ -47,7 +47,7 @@ def endpoint?(path) unless res.endpoints.include?(path) unless @logged[:no_config_endpoint] - Datadog.logger.error { "agent reachable but does not report #{path}" } + Datadog.logger.warn { "agent reachable but does not report #{path}" } @logged[:no_config_endpoint] = true end diff --git a/lib/datadog/core/remote/tie.rb b/lib/datadog/core/remote/tie.rb index f4279a471ba..ef0d331529a 100644 --- a/lib/datadog/core/remote/tie.rb +++ b/lib/datadog/core/remote/tie.rb @@ -19,6 +19,8 @@ def self.boot barrier = Datadog::Core::Remote.active_remote.barrier(:once) end + # steep does not permit the next line due to + # https://github.com/soutaro/steep/issues/1231 Boot.new(barrier, t) end end diff --git a/lib/datadog/core/remote/transport/http.rb b/lib/datadog/core/remote/transport/http.rb index ed87c0dc5cb..190a9c45646 100644 --- a/lib/datadog/core/remote/transport/http.rb +++ b/lib/datadog/core/remote/transport/http.rb @@ -120,6 +120,11 @@ def default_headers # Add container ID, if present. container_id = Datadog::Core::Environment::Container.container_id headers[Datadog::Core::Transport::Ext::HTTP::HEADER_CONTAINER_ID] = container_id unless container_id.nil? + # Sending this header to the agent will disable metrics computation (and billing) on the agent side + # by pretending it has already been done on the library side. + if Datadog.configuration.appsec.standalone.enabled + headers[Datadog::Core::Transport::Ext::HTTP::HEADER_CLIENT_COMPUTED_STATS] = 'yes' + end end end diff --git a/lib/datadog/core/remote/worker.rb b/lib/datadog/core/remote/worker.rb index 19bc18b2264..45a6dd9c885 100644 --- a/lib/datadog/core/remote/worker.rb +++ b/lib/datadog/core/remote/worker.rb @@ -34,7 +34,7 @@ def start @starting = true thread = Thread.new { poll(@interval) } - thread.name = self.class.name unless Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3') + thread.name = self.class.name thread.thread_variable_set(:fork_safe, true) @thr = thread diff --git a/lib/datadog/core/runtime/ext.rb b/lib/datadog/core/runtime/ext.rb index d07901b865a..328e5daad2c 100644 --- a/lib/datadog/core/runtime/ext.rb +++ b/lib/datadog/core/runtime/ext.rb @@ -31,6 +31,7 @@ module Metrics METRIC_YJIT_OBJECT_SHAPE_COUNT = 'runtime.ruby.yjit.object_shape_count' METRIC_YJIT_OUTLINED_CODE_SIZE = 'runtime.ruby.yjit.outlined_code_size' METRIC_YJIT_YJIT_ALLOC_SIZE = 'runtime.ruby.yjit.yjit_alloc_size' + METRIC_YJIT_RATIO_IN_YJIT = 'runtime.ruby.yjit.ratio_in_yjit' TAG_SERVICE = 'service' end diff --git a/lib/datadog/core/runtime/metrics.rb b/lib/datadog/core/runtime/metrics.rb index c07c75319e4..a7d34f10d77 100644 --- a/lib/datadog/core/runtime/metrics.rb +++ b/lib/datadog/core/runtime/metrics.rb @@ -94,7 +94,7 @@ def gc_metrics def try_flush yield rescue StandardError => e - Datadog.logger.error("Error while sending runtime metric. Cause: #{e.class.name} #{e.message}") + Datadog.logger.warn("Error while sending runtime metric. Cause: #{e.class.name} #{e.message}") end def default_metric_options @@ -181,6 +181,10 @@ def flush_yjit_stats Core::Runtime::Ext::Metrics::METRIC_YJIT_YJIT_ALLOC_SIZE, Core::Environment::YJIT.yjit_alloc_size ) + gauge_if_not_nil( + Core::Runtime::Ext::Metrics::METRIC_YJIT_RATIO_IN_YJIT, + Core::Environment::YJIT.ratio_in_yjit + ) end end end diff --git a/lib/datadog/core/telemetry/component.rb b/lib/datadog/core/telemetry/component.rb index 61d72e15db6..6959977a2ee 100644 --- a/lib/datadog/core/telemetry/component.rb +++ b/lib/datadog/core/telemetry/component.rb @@ -2,8 +2,12 @@ require_relative 'emitter' require_relative 'event' +require_relative 'http/transport' require_relative 'metrics_manager' require_relative 'worker' +require_relative 'logging' + +require_relative '../configuration/ext' require_relative '../utils/forking' module Datadog @@ -14,6 +18,42 @@ class Component attr_reader :enabled include Core::Utils::Forking + include Telemetry::Logging + + def self.build(settings, agent_settings, logger) + enabled = settings.telemetry.enabled + agentless_enabled = settings.telemetry.agentless_enabled + + if !agentless_enabled && agent_settings.adapter != Datadog::Core::Configuration::Ext::Agent::HTTP::ADAPTER + enabled = false + logger.debug { "Telemetry disabled. Agent network adapter not supported: #{agent_settings.adapter}" } + end + + if agentless_enabled && settings.api_key.nil? + enabled = false + logger.debug { 'Telemetry disabled. Agentless telemetry requires an DD_API_KEY variable to be set.' } + end + + transport = if agentless_enabled + Datadog::Core::Telemetry::Http::Transport.build_agentless_transport( + api_key: settings.api_key, + dd_site: settings.site, + url_override: settings.telemetry.agentless_url_override + ) + else + Datadog::Core::Telemetry::Http::Transport.build_agent_transport(agent_settings) + end + + Telemetry::Component.new( + http_transport: transport, + enabled: enabled, + metrics_enabled: enabled && settings.telemetry.metrics_enabled, + heartbeat_interval_seconds: settings.telemetry.heartbeat_interval_seconds, + metrics_aggregation_interval_seconds: settings.telemetry.metrics_aggregation_interval_seconds, + dependency_collection: settings.telemetry.dependency_collection, + shutdown_timeout_seconds: settings.telemetry.shutdown_timeout_seconds, + ) + end # @param enabled [Boolean] Determines whether telemetry events should be sent to the API # @param metrics_enabled [Boolean] Determines whether telemetry metrics should be sent to the API @@ -24,6 +64,8 @@ def initialize( heartbeat_interval_seconds:, metrics_aggregation_interval_seconds:, dependency_collection:, + http_transport:, + shutdown_timeout_seconds:, enabled: true, metrics_enabled: true ) @@ -39,9 +81,10 @@ def initialize( enabled: @enabled, heartbeat_interval_seconds: heartbeat_interval_seconds, metrics_aggregation_interval_seconds: metrics_aggregation_interval_seconds, - emitter: Emitter.new, + emitter: Emitter.new(http_transport: http_transport), metrics_manager: @metrics_manager, - dependency_collection: dependency_collection + dependency_collection: dependency_collection, + shutdown_timeout: shutdown_timeout_seconds ) @worker.start end @@ -70,6 +113,12 @@ def integrations_change! @worker.enqueue(Event::AppIntegrationsChange.new) end + def log!(event) + return unless @enabled || forked? + + @worker.enqueue(event) + end + # Report configuration changes caused by Remote Configuration. def client_configuration_change!(changes) return if !@enabled || forked? diff --git a/lib/datadog/core/telemetry/emitter.rb b/lib/datadog/core/telemetry/emitter.rb index c4a18c264ce..78d33ef21c5 100644 --- a/lib/datadog/core/telemetry/emitter.rb +++ b/lib/datadog/core/telemetry/emitter.rb @@ -16,22 +16,20 @@ class Emitter # @param http_transport [Datadog::Core::Telemetry::Http::Transport] Transport object that can be used to send # telemetry requests via the agent - def initialize(http_transport: Datadog::Core::Telemetry::Http::Transport.new) + def initialize(http_transport:) @http_transport = http_transport end # Retrieves and emits a TelemetryRequest object based on the request type specified def request(event) - begin - seq_id = self.class.sequence.next - payload = Request.build_payload(event, seq_id) - res = @http_transport.request(request_type: event.type, payload: payload.to_json) - Datadog.logger.debug { "Telemetry sent for event `#{event.type}` (code: #{res.code.inspect})" } - res - rescue => e - Datadog.logger.debug("Unable to send telemetry request for event `#{event.type rescue 'unknown'}`: #{e}") - Telemetry::Http::InternalErrorResponse.new(e) - end + seq_id = self.class.sequence.next + payload = Request.build_payload(event, seq_id) + res = @http_transport.request(request_type: event.type, payload: payload.to_json) + Datadog.logger.debug { "Telemetry sent for event `#{event.type}` (code: #{res.code.inspect})" } + res + rescue => e + Datadog.logger.debug("Unable to send telemetry request for event `#{event.type rescue 'unknown'}`: #{e}") + Telemetry::Http::InternalErrorResponse.new(e) end # Initializes a Sequence object to track seq_id if not already initialized; else returns stored diff --git a/lib/datadog/core/telemetry/event.rb b/lib/datadog/core/telemetry/event.rb index da03069aa54..fabc8014207 100644 --- a/lib/datadog/core/telemetry/event.rb +++ b/lib/datadog/core/telemetry/event.rb @@ -1,5 +1,8 @@ # frozen_string_literal: true +require_relative '../utils/forking' +require_relative '../utils/sequence' + module Datadog module Core module Telemetry @@ -18,7 +21,9 @@ class Base # The type of the event. # It must be one of the stings defined in the Telemetry V2 # specification for event names. - def type; end + def type + raise NotImplementedError, 'Must be implemented by subclass' + end # The JSON payload for the event. def payload @@ -332,6 +337,37 @@ def payload end end + # Telemetry class for the 'logs' event + class Log < Base + LEVELS = { + error: 'ERROR', + warn: 'WARN', + }.freeze + + def type + 'logs' + end + + def initialize(message:, level:, stack_trace: nil) + super() + @message = message + @stack_trace = stack_trace + @level = LEVELS.fetch(level) { |k| raise ArgumentError, "Invalid log level :#{k}" } + end + + def payload + { + logs: [ + { + message: @message, + level: @level, + stack_trace: @stack_trace, + }.compact + ] + } + end + end + # Telemetry class for the 'distributions' event class Distributions < GenerateMetrics def type diff --git a/lib/datadog/core/telemetry/ext.rb b/lib/datadog/core/telemetry/ext.rb index 2c2e15c0781..74aced512a0 100644 --- a/lib/datadog/core/telemetry/ext.rb +++ b/lib/datadog/core/telemetry/ext.rb @@ -12,6 +12,7 @@ module Ext ENV_INSTALL_ID = 'DD_INSTRUMENTATION_INSTALL_ID' ENV_INSTALL_TYPE = 'DD_INSTRUMENTATION_INSTALL_TYPE' ENV_INSTALL_TIME = 'DD_INSTRUMENTATION_INSTALL_TIME' + ENV_AGENTLESS_URL_OVERRIDE = 'DD_TELEMETRY_AGENTLESS_URL' end end end diff --git a/lib/datadog/core/telemetry/http/adapters/net.rb b/lib/datadog/core/telemetry/http/adapters/net.rb index 3aa65e6d49d..98b45bf1cbc 100644 --- a/lib/datadog/core/telemetry/http/adapters/net.rb +++ b/lib/datadog/core/telemetry/http/adapters/net.rb @@ -34,19 +34,17 @@ def open(&block) end def post(env) - begin - post = ::Net::HTTP::Post.new(env.path, env.headers) - post.body = env.body - - http_response = open do |http| - http.request(post) - end - - Response.new(http_response) - rescue StandardError => e - Datadog.logger.debug("Unable to send telemetry event to agent: #{e}") - Telemetry::Http::InternalErrorResponse.new(e) + post = ::Net::HTTP::Post.new(env.path, env.headers) + post.body = env.body + + http_response = open do |http| + http.request(post) end + + Response.new(http_response) + rescue StandardError => e + Datadog.logger.debug("Unable to send telemetry event to agent: #{e}") + Telemetry::Http::InternalErrorResponse.new(e) end # Data structure for an HTTP Response diff --git a/lib/datadog/core/telemetry/http/ext.rb b/lib/datadog/core/telemetry/http/ext.rb index a872013ec42..db9708d7721 100644 --- a/lib/datadog/core/telemetry/http/ext.rb +++ b/lib/datadog/core/telemetry/http/ext.rb @@ -17,7 +17,10 @@ module Ext CONTENT_TYPE_APPLICATION_JSON = 'application/json' API_VERSION = 'v2' + AGENTLESS_HOST_PREFIX = 'instrumentation-telemetry-intake' + AGENT_ENDPOINT = '/telemetry/proxy/api/v2/apmtelemetry' + AGENTLESS_ENDPOINT = '/api/v2/apmtelemetry' end end end diff --git a/lib/datadog/core/telemetry/http/transport.rb b/lib/datadog/core/telemetry/http/transport.rb index 0d4c82b28a0..33cc48c8c04 100644 --- a/lib/datadog/core/telemetry/http/transport.rb +++ b/lib/datadog/core/telemetry/http/transport.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require_relative '../../configuration/settings' +require_relative '../../environment/ext' require_relative '../../transport/ext' require_relative 'env' require_relative 'ext' @@ -13,18 +14,42 @@ module Http # Class to send telemetry data to Telemetry API # Currently only supports the HTTP protocol. class Transport + def self.build_agent_transport(agent_settings) + Transport.new( + host: agent_settings.hostname, + port: agent_settings.port, + path: Http::Ext::AGENT_ENDPOINT + ) + end + + def self.build_agentless_transport(api_key:, dd_site:, url_override: nil) + url = url_override || "https://#{Http::Ext::AGENTLESS_HOST_PREFIX}.#{dd_site}:443" + + uri = URI.parse(url) + raise "Invalid agentless mode URL: #{url}" if uri.host.nil? + + Transport.new( + host: uri.host, + port: uri.port || 80, + path: Http::Ext::AGENTLESS_ENDPOINT, + ssl: uri.scheme == 'https' || uri.port == 443, + api_key: api_key + ) + end + attr_reader \ :host, :port, :ssl, - :path - - def initialize - agent_settings = Configuration::AgentSettingsResolver.call(Datadog.configuration) - @host = agent_settings.hostname - @port = agent_settings.port - @ssl = false - @path = Http::Ext::AGENT_ENDPOINT + :path, + :api_key + + def initialize(host:, port:, path:, ssl: false, api_key: nil) + @host = host + @port = port + @ssl = ssl + @path = path + @api_key = api_key end def request(request_type:, payload:) @@ -38,7 +63,7 @@ def request(request_type:, payload:) private def headers(request_type:, api_version: Http::Ext::API_VERSION) - { + result = { Core::Transport::Ext::HTTP::HEADER_DD_INTERNAL_UNTRACED_REQUEST => '1', Ext::HEADER_CONTENT_TYPE => Http::Ext::CONTENT_TYPE_APPLICATION_JSON, Ext::HEADER_DD_TELEMETRY_API_VERSION => api_version, @@ -49,6 +74,10 @@ def headers(request_type:, api_version: Http::Ext::API_VERSION) # Enable debug mode for telemetry # HEADER_TELEMETRY_DEBUG_ENABLED => 'true', } + + result[Ext::HEADER_DD_API_KEY] = api_key unless api_key.nil? + + result end def adapter diff --git a/lib/datadog/core/telemetry/logger.rb b/lib/datadog/core/telemetry/logger.rb new file mode 100644 index 00000000000..78cfdf65d19 --- /dev/null +++ b/lib/datadog/core/telemetry/logger.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +module Datadog + module Core + module Telemetry + # === INTERNAL USAGE ONLY === + # + # Report telemetry logs via delegating to the telemetry component instance via mutex. + # + # IMPORTANT: Invoking this method during the lifecycle of component initialization will + # be no-op instead. + # + # For developer using this module: + # read: lib/datadog/core/telemetry/logging.rb + module Logger + class << self + def report(exception, level: :error, description: nil) + instance&.report(exception, level: level, description: description) + end + + def error(description) + instance&.error(description) + end + + private + + def instance + # Component initialization uses a mutex to avoid having concurrent initialization. + # Trying to access the telemetry component during initialization (specifically: + # from the thread that's actually doing the initialization) would cause a deadlock, + # since accessing the components would try to recursively lock the mutex. + # + # To work around this, we use allow_initialization: false to avoid triggering this issue. + # + # The downside is: this leaves us unable to report telemetry during component initialization. + components = Datadog.send(:components, allow_initialization: false) + + if components && components.telemetry + components.telemetry + else + Datadog.logger.warn( + 'Failed to send telemetry before components initialization or within components lifecycle' + ) + nil + end + end + end + end + end + end +end diff --git a/lib/datadog/core/telemetry/logging.rb b/lib/datadog/core/telemetry/logging.rb new file mode 100644 index 00000000000..7f94439fe56 --- /dev/null +++ b/lib/datadog/core/telemetry/logging.rb @@ -0,0 +1,71 @@ +# frozen_string_literal: true + +require_relative 'event' + +require 'pathname' + +module Datadog + module Core + module Telemetry + # === INTERNAL USAGE ONLY === + # + # Logging interface for sending telemetry logs... so we can fix them. + # + # For developer using this module: + # - MUST NOT provide any sensitive information (PII) + # - SHOULD reduce the data cardinality for batching/aggregation + # + # Before using it, ask yourself: + # - Do we need to know about this (ie. internal error or client error)? + # - How severe/critical is this error? (ie. error, warning, fatal) + # - What information needed to make it actionable? + # + module Logging + # Extract datadog stack trace from the exception + module DatadogStackTrace + GEM_ROOT = Pathname.new("#{__dir__}/../../../..").cleanpath.to_s + + def self.from(exception) + backtrace = exception.backtrace + + return unless backtrace + return if backtrace.empty? + + # vendored deps + vendored_deps = Gem.path.any? { |p| p.start_with?(GEM_ROOT) } + + backtrace.map do |line| + if !vendored_deps && line.start_with?(GEM_ROOT) || + vendored_deps && line.start_with?(GEM_ROOT) && Gem.path.none? { |p| line.start_with?(p) } + line[GEM_ROOT.length..-1] || '' + else + 'REDACTED' + end + end.join(',') + end + end + + def report(exception, level: :error, description: nil) + # Annoymous exceptions to be logged as + message = +'' + message << (exception.class.name || exception.class.inspect) + message << ':' << description if description + + event = Event::Log.new( + message: message, + level: level, + stack_trace: DatadogStackTrace.from(exception) + ) + + log!(event) + end + + def error(description) + event = Event::Log.new(message: description, level: :error) + + log!(event) + end + end + end + end +end diff --git a/lib/datadog/core/telemetry/request.rb b/lib/datadog/core/telemetry/request.rb index f15831bc1cf..c8c72b84cda 100644 --- a/lib/datadog/core/telemetry/request.rb +++ b/lib/datadog/core/telemetry/request.rb @@ -31,6 +31,18 @@ def build_payload(event, seq_id) def application config = Datadog.configuration + + tracer_version = Core::Environment::Identity.gem_datadog_version_semver2 + + # We need some to distinguish datadog-ci gem versions + # when examining telemetry metrics emitted from the datadog-ci gem. + # + # This code checks that Datadog::CI is loaded and ci mode is enabled and adds + # "-ci-X.Y.Z" suffix to the tracer version. + if defined?(::Datadog::CI::VERSION) && config.respond_to?(:ci) && config.ci.enabled + tracer_version = "#{tracer_version}-ci-#{::Datadog::CI::VERSION::STRING}" + end + { env: config.env, language_name: Core::Environment::Ext::LANG, @@ -39,7 +51,7 @@ def application runtime_version: Core::Environment::Ext::ENGINE_VERSION, service_name: config.service, service_version: config.version, - tracer_version: Core::Environment::Identity.gem_datadog_version_semver2 + tracer_version: tracer_version } end diff --git a/lib/datadog/core/transport/ext.rb b/lib/datadog/core/transport/ext.rb index 470d4b3ad09..e0830510b92 100644 --- a/lib/datadog/core/transport/ext.rb +++ b/lib/datadog/core/transport/ext.rb @@ -16,6 +16,7 @@ module HTTP # # Setting this header to any non-empty value enables this feature. HEADER_CLIENT_COMPUTED_TOP_LEVEL = 'Datadog-Client-Computed-Top-Level' + HEADER_CLIENT_COMPUTED_STATS = 'Datadog-Client-Computed-Stats' HEADER_META_LANG = 'Datadog-Meta-Lang' HEADER_META_LANG_VERSION = 'Datadog-Meta-Lang-Version' HEADER_META_LANG_INTERPRETER = 'Datadog-Meta-Lang-Interpreter' diff --git a/lib/datadog/core/utils/at_fork_monkey_patch.rb b/lib/datadog/core/utils/at_fork_monkey_patch.rb new file mode 100644 index 00000000000..782ff754f4f --- /dev/null +++ b/lib/datadog/core/utils/at_fork_monkey_patch.rb @@ -0,0 +1,102 @@ +# frozen_string_literal: true + +module Datadog + module Core + module Utils + # Monkey patches `Kernel#fork` and similar functions, adding an `at_fork` callback mechanism which + # is used to restart observability after the VM forks (e.g. in multiprocess Ruby apps). + module AtForkMonkeyPatch + AT_FORK_CHILD_BLOCKS = [] # rubocop:disable Style/MutableConstant Used to store blocks to run, mutable by design. + private_constant :AT_FORK_CHILD_BLOCKS + + def self.supported? + Process.respond_to?(:fork) + end + + def self.apply! + return false unless supported? + + if RUBY_VERSION < '3.1' + [ + ::Process.singleton_class, # Process.fork + ::Kernel.singleton_class, # Kernel.fork + ::Object, # fork without explicit receiver (it's defined as a method in ::Kernel) + # Note: Modifying Object as we do here is irreversible. During tests, this + # change will stick around even if we otherwise stub `Process` and `Kernel` + ].each { |target| target.prepend(KernelMonkeyPatch) } + end + + ::Process.singleton_class.prepend(ProcessMonkeyPatch) + + true + end + + def self.run_at_fork_blocks(stage) + raise(ArgumentError, "Unsupported stage #{stage}") unless stage == :child + + AT_FORK_CHILD_BLOCKS.each(&:call) + end + + def self.at_fork(stage, &block) + raise(ArgumentError, "Unsupported stage #{stage}") unless stage == :child + raise(ArgumentError, 'Missing block argument') unless block + + AT_FORK_CHILD_BLOCKS << block + + true + end + + # Adds `at_fork` behavior; see parent module for details. + module KernelMonkeyPatch + def fork + # If a block is provided, it must be wrapped to trigger callbacks. + child_block = if block_given? + proc do + AtForkMonkeyPatch.run_at_fork_blocks(:child) + + # Invoke original block + yield + end + end + + # Start fork + # If a block is provided, use the wrapped version. + result = child_block.nil? ? super : super(&child_block) + + # When fork gets called without a block, it returns twice: + # If we're in the fork, result = nil: trigger child callbacks. + # If we're in the parent, result = pid: we do nothing. + # (If it gets called with a block, it only returns on the parent) + AtForkMonkeyPatch.run_at_fork_blocks(:child) if result.nil? + + result + end + end + + # Adds `at_fork` behavior; see parent module for details. + module ProcessMonkeyPatch + # Hook provided by Ruby 3.1+ for observability libraries that want to know about fork, see + # https://github.com/ruby/ruby/pull/5017 and https://bugs.ruby-lang.org/issues/17795 + def _fork + pid = super + + AtForkMonkeyPatch.run_at_fork_blocks(:child) if pid == 0 + + pid + end + + # A call to Process.daemon ( https://rubyapi.org/3.1/o/process#method-c-daemon ) forks the current process and + # keeps executing code in the child process, killing off the parent, thus effectively replacing it. + # This is not covered by `_fork` and thus we have some extra code for it. + def daemon(*args) + result = super + + AtForkMonkeyPatch.run_at_fork_blocks(:child) + + result + end + end + end + end + end +end diff --git a/lib/datadog/core/utils/time.rb b/lib/datadog/core/utils/time.rb index 20b1c473914..79367097e05 100644 --- a/lib/datadog/core/utils/time.rb +++ b/lib/datadog/core/utils/time.rb @@ -34,6 +34,18 @@ def now_provider=(block) define_singleton_method(:now, &block) end + # Overrides the implementation of `#get_time + # with the provided callable. + # + # Overriding the method `#get_time` instead of + # indirectly calling `block` removes + # one level of method call overhead. + # + # @param block [Proc] block that accepts unit and returns timestamp in the requested unit + def get_time_provider=(block) + define_singleton_method(:get_time, &block) + end + def measure(unit = :float_second) before = get_time(unit) yield diff --git a/lib/datadog/core/workers/async.rb b/lib/datadog/core/workers/async.rb index f6a1868b44e..70689e60af2 100644 --- a/lib/datadog/core/workers/async.rb +++ b/lib/datadog/core/workers/async.rb @@ -148,7 +148,7 @@ def start_worker end # rubocop:enable Lint/RescueException end - @worker.name = self.class.name unless Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3') + @worker.name = self.class.name @worker.thread_variable_set(:fork_safe, true) nil diff --git a/lib/datadog/di.rb b/lib/datadog/di.rb new file mode 100644 index 00000000000..59ad88c722a --- /dev/null +++ b/lib/datadog/di.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +require_relative 'di/configuration' +require_relative 'di/extensions' + +module Datadog + # Namespace for Datadog dynamic instrumentation. + # + # @api private + module DI + # Expose DI to global shared objects + Extensions.activate! + end +end diff --git a/lib/datadog/di/code_tracker.rb b/lib/datadog/di/code_tracker.rb new file mode 100644 index 00000000000..dbfe67a51b7 --- /dev/null +++ b/lib/datadog/di/code_tracker.rb @@ -0,0 +1,168 @@ +# frozen_string_literal: true + +module Datadog + module DI + # Tracks loaded Ruby code by source file and maintains a map from + # source file to the loaded code (instruction sequences). + # Also arranges for code in the loaded files to be instrumented by + # line probes that have already been received by the library. + # + # The loaded code is used to target line trace points when installing + # line probes which dramatically improves efficiency of line trace points. + # + # Note that, since most files will only be loaded one time (via the + # "require" mechanism), the code tracker needs to be global and not be + # recreated when the DI component is created. + # + # @api private + class CodeTracker + def initialize + @registry = {} + @trace_point_lock = Mutex.new + @registry_lock = Mutex.new + @compiled_trace_point = nil + end + + # Starts tracking loaded code. + # + # This method should generally be called early in application boot + # process, because any code loaded before code tracking is enabled + # will not be instrumentable via line probes. + # + # Normally tracking should remain active for the lifetime of the + # process and would not be ever stopped. + def start + trace_point_lock.synchronize do + # If this code tracker is already running, we can do nothing or + # restart it (by disabling the trace point and recreating it). + # It is likely that some applications will attempt to activate + # DI more than once where the intention is to just activate DI; + # do not break such applications by clearing out the registry. + # For now, until there is a use case for recreating the trace point, + # do nothing if the code tracker has already started. + return if @compiled_trace_point + + # Note: .trace enables the trace point. + @compiled_trace_point = TracePoint.trace(:script_compiled) do |tp| + # Useful attributes of the trace point object here: + # .instruction_sequence + # .instruction_sequence.path (either absolute file path for + # loaded or required code, or for eval'd code, if filename + # is specified as argument to eval, then this is the provided + # filename, otherwise this is a synthesized + # "(eval at :)" string) + # .instruction_sequence.absolute_path (absolute file path when + # load or require are used to load code, nil for eval'd code + # regardless of whether filename was specified as an argument + # to eval on ruby 3.1+, same as path for eval'd code on ruby 3.0 + # and lower) + # .method_id + # .path (refers to the code location that called the require/eval/etc., + # not where the loaded code is; use .path on the instruction sequence + # to obtain the location of the compiled code) + # .eval_script + # + # For now just map the path to the instruction sequence. + path = tp.instruction_sequence.absolute_path + # Do not store mapping for eval'd code, since there is no way + # to target such code from dynamic instrumentation UI. + # eval'd code always sets tp.eval_script. + # When tp.eval_script is nil, code is either 'load'ed or 'require'd. + # steep, of course, complains about indexing with +path+ + # without checking that it is not nil, so here, maybe there is + # some situation where path would in fact be nil and + # steep would end up saving the day. + if path && !tp.eval_script + registry_lock.synchronize do + registry[path] = tp.instruction_sequence + end + end + end + end + end + + # Returns whether this code tracker has been activated and is + # tracking. + def active? + trace_point_lock.synchronize do + !!@compiled_trace_point + end + end + + # Returns an array of RubVM::InstructionSequence (i.e. the compiled code) + # for the provided path. + # + # The argument can be a full path to a Ruby source code file or a + # suffix (basename + one or more directories preceding the basename). + # The idea with suffix matches is that file paths are likely to + # be different between development and production environments and + # the source control system uses relative paths and doesn't have + # absolute paths at all. + # + # Suffix matches are not guaranteed to be correct, meaning there may + # be multiple files with the same basename and they may all match a + # given suffix. In such cases, this method will return all matching + # paths (and all of these paths will be attempted to be instrumented + # by upstream code). + # + # If the suffix matches one of the paths completely (which requires it + # to be an absolute path), only the exactly matching path is returned. + # Otherwise all known paths that end in the suffix are returned. + # If no paths match, an empty array is returned. + def iseqs_for_path(suffix) + registry_lock.synchronize do + exact = registry[suffix] + return [exact] if exact + + inexact = [] + registry.each do |path, iseq| + # Exact match is not possible here, meaning any matching path + # has to be longer than the suffix. Require full component matches, + # meaning either the first character of the suffix is a slash + # or the previous character in the path is a slash. + # For now only check for forward slashes for Unix-like OSes; + # backslash is a legitimate character of a file name in Unix + # therefore simply permitting forward or back slash is not + # sufficient, we need to perform an OS check to know which + # path separator to use. + if path.length > suffix.length && path.end_with?(suffix) + previous_char = path[path.length - suffix.length - 1] + inexact << iseq if previous_char == "/" || suffix[0] == "/" + end + end + inexact + end + end + + # Stops tracking code that is being loaded. + # + # This method should ordinarily never be called - if a file is loaded + # when code tracking is not active, this file will not be instrumentable + # by line probes. + # + # This method is intended for test suite use only, where multiple + # code tracker instances are created, to fully clean up the old instances. + def stop + # Permit multiple stop calls. + trace_point_lock.synchronize do + @compiled_trace_point&.disable + # Clear the instance variable so that the trace point may be + # reinstated in the future. + @compiled_trace_point = nil + end + registry_lock.synchronize do + registry.clear + end + end + + private + + # Mapping from paths of loaded files to RubyVM::InstructionSequence + # objects representing compiled code of those files. + attr_reader :registry + + attr_reader :trace_point_lock + attr_reader :registry_lock + end + end +end diff --git a/lib/datadog/di/configuration.rb b/lib/datadog/di/configuration.rb new file mode 100644 index 00000000000..52d4d0185ec --- /dev/null +++ b/lib/datadog/di/configuration.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module Datadog + module DI + # Configuration for DI + module Configuration + end + end +end + +require_relative "configuration/settings" diff --git a/lib/datadog/di/configuration/settings.rb b/lib/datadog/di/configuration/settings.rb new file mode 100644 index 00000000000..5bf6f83d441 --- /dev/null +++ b/lib/datadog/di/configuration/settings.rb @@ -0,0 +1,163 @@ +# frozen_string_literal: true + +module Datadog + module DI + module Configuration + # Settings + module Settings + def self.extended(base) + base = base.singleton_class unless base.is_a?(Class) + add_settings!(base) + end + + def self.add_settings!(base) + base.class_eval do + # The setting has "internal" prefix to prevent it from being + # prematurely turned on by customers. + settings :dynamic_instrumentation do + option :enabled do |o| + o.type :bool + # The environment variable has an "internal" prefix so that + # any customers that have the "proper" environment variable + # turned on (i.e. DD_DYNAMIC_INSTRUMENTATION_ENABLED) + # do not enable Ruby DI until the latter is ready for + # customer testing. + o.env "DD_DYNAMIC_INSTRUMENTATION_ENABLED" + o.default false + end + + # This option instructs dynamic instrumentation to use + # untargeted trace points when installing line probes and + # code tracking is not active. + # WARNING: untargeted trace points carry a massive performance + # penalty for the entire file in which a line probe is placed. + # + # If this option is set to false, which is the default, + # dynamic instrumentation will add probes that reference + # unknown files to the list of pending probes, and when + # the respective files are loaded, the line probes will be + # installed using targeted trace points. If the file in + # question is already loaded when the probe is received + # (for example, it is in a third-party library loaded during + # application boot), and code tracking was not active when + # the file was loaded, such files will not be instrumentable + # via line probes. + # + # If this option is set to true + # + # activated, DI will in + # activated or because the files being targeted have beenIf true and code tracking is not enabled, dynamic instrumentation + # will use untargeted trace points. + # If false and code tracking is not enabled, dynamic + # instrumentation will not instrument any files loaded + # WARNING: these trace points will greatly degrade performance + # of all code in the instrumented files. + option :untargeted_trace_points do |o| + o.type :bool + o.default false + end + + # If true, all of the catch-all rescue blocks in DI + # will propagate the exceptions onward. + # WARNING: for internal Datadog use only - this will break + # the DI product and potentially the library in general in + # a multitude of ways, cause resource leakage, permanent + # performance decreases, etc. + option :propagate_all_exceptions do |o| + o.type :bool + o.default false + end + + # An array of variable and key names to redact in addition to + # the built-in list of identifiers. + # + # The names will be normalized by removing the following + # symbols: _, -, @, $, and then matched to the complete + # variable or key name while ignoring the case. + # For example, specifying pass_word will match password and + # PASSWORD, and specifying PASSWORD will match pass_word. + # Note that, while the at sign (@) is used in Ruby to refer + # to instance variables, it does not have any significance + # for this setting (and is removed before matching identifiers). + option :redacted_identifiers do |o| + o.env "DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS" + o.env_parser do |value| + value&.split(",")&.map(&:strip) + end + + o.type :array + o.default [] + end + + # An array of class names, values of which will be redacted from + # dynamic instrumentation snapshots. Example: FooClass. + # If a name is suffixed by '*', it becomes a wildcard and + # instances of any class whose name begins with the specified + # prefix will be redacted (example: Foo*). + # + # The names must all be fully-qualified, if any prefix of a + # class name is configured to be redacted, the value will be + # subject to redaction. For example, if Foo* is in the + # redacted class name list, instances of Foo, FooBar, + # Foo::Bar are all subject to redaction, but Bar::Foo will + # not be subject to redaction. + # + # Leading double-colon is permitted but has no effect, + # because the names are always considered to be fully-qualified. + # For example, adding ::Foo to the list will redact instances + # of Foo. + # + # Trailing colons should not be used because they will trigger + # exact match behavior but Ruby class names do not have + # trailing colons. For example, Foo:: will not cause anything + # to be redacted. Use Foo::* to redact all classes under + # the Foo module. + option :redacted_type_names do |o| + o.env "DD_DYNAMIC_INSTRUMENTATION_REDACTED_TYPES" + o.env_parser do |value| + value&.split(",")&.map(&:strip) + end + + o.type :array + o.default [] + end + + # Maximum number of object or collection traversals that + # will be permitted when serializing captured values. + option :max_capture_depth do |o| + o.type :int + o.default 3 + end + + # Maximum number of collection (Array and Hash) elements + # that will be captured. Arrays and hashes that have more + # elements will be truncated to this many elements. + option :max_capture_collection_size do |o| + o.type :int + o.default 100 + end + + # Strings longer than this length will be truncated to this + # length in dynamic instrumentation snapshots. + # + # Note that while all values are stringified during + # serialization, only values which are originally instances + # of the String class are subject to this length limit. + option :max_capture_string_length do |o| + o.type :int + o.default 255 + end + + # Maximim number of attributes that will be captured for + # a single non-primitive value. + option :max_capture_attribute_count do |o| + o.type :int + o.default 20 + end + end + end + end + end + end + end +end diff --git a/lib/datadog/di/error.rb b/lib/datadog/di/error.rb new file mode 100644 index 00000000000..5a90d259959 --- /dev/null +++ b/lib/datadog/di/error.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +module Datadog + module DI + # Base class for Dynamic Instrumentation exceptions. + # + # None of these exceptions should be propagated out of DI to user + # applications, therefore these exceptions are not considered to be + # part of the public API of the library. + # + # @api private + class Error < StandardError + # Probe does not contain a line number (i.e., is not a line probe). + class MissingLineNumber < Error + end + + # Failed to communicate to the local Datadog agent (e.g. to send + # probe status or a snapshot). + class AgentCommunicationError < Error + end + + # Attempting to instrument a method or file which does not exist. + # + # This could be due to the code that is referenced in the probe + # having not been loaded yet, or due to the probe referencing code + # that does not in fact exist anywhere (e.g. due to a misspelling). + class DITargetNotDefined < Error + end + end + end +end diff --git a/lib/datadog/di/extensions.rb b/lib/datadog/di/extensions.rb new file mode 100644 index 00000000000..1cd96a5ae5c --- /dev/null +++ b/lib/datadog/di/extensions.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require_relative "../core/configuration" +require_relative "configuration" + +module Datadog + module DI + # Extends Datadog tracing with DI features + module Extensions + # Inject DI into global objects. + def self.activate! + Core::Configuration::Settings.extend(Configuration::Settings) + end + end + end +end diff --git a/lib/datadog/di/probe.rb b/lib/datadog/di/probe.rb new file mode 100644 index 00000000000..1d14629acfd --- /dev/null +++ b/lib/datadog/di/probe.rb @@ -0,0 +1,139 @@ +# frozen_string_literal: true + +require_relative "error" +require_relative "../core/rate_limiter" + +module Datadog + module DI + # Encapsulates probe information (as received via remote config) + # and state (e.g. whether the probe was installed, or executed). + # + # It is possible that remote configuration will specify an unsupported + # probe type or attribute, due to new DI functionality being added + # over time. We want to have predictable behavior in such cases, and + # since we can't guarantee that there will be enough information in + # a remote config payload to construct a functional probe, ProbeBuilder + # and remote config code must be prepared to deal with exceptions + # raised by Probe constructor in particular. Therefore, Probe constructor + # will raise an exception if it determines that there is not enough + # information (or confilcting information) in the arguments to create a + # functional probe, and upstream code is tasked with not spamming logs + # with notifications of such errors (and potentially limiting the + # attempts to construct probe from a given payload). + # + # Note that, while remote configuration provides line numbers as an + # array, the only supported line number configuration is a single line + # (this is the case for all languages currently). Therefore Probe + # only supports one line number, and ProbeBuilder is responsible for + # extracting that one line number out of the array received from RC. + # + # Note: only some of the parameter/attribute values are currently validated. + # + # @api private + class Probe + KNOWN_TYPES = %i[log].freeze + + def initialize(id:, type:, + file: nil, line_no: nil, type_name: nil, method_name: nil, + template: nil, capture_snapshot: false, max_capture_depth: nil, rate_limit: nil) + # Perform some sanity checks here to detect unexpected attribute + # combinations, in order to not do them in subsequent code. + unless KNOWN_TYPES.include?(type) + raise ArgumentError, "Unknown probe type: #{type}" + end + + if line_no && method_name + raise ArgumentError, "Probe contains both line number and method name: #{id}" + end + + if type_name && !method_name || method_name && !type_name + raise ArgumentError, "Partial method probe definition: #{id}" + end + + @id = id + @type = type + @file = file + @line_no = line_no + @type_name = type_name + @method_name = method_name + @template = template + @capture_snapshot = !!capture_snapshot + @max_capture_depth = max_capture_depth + + # These checks use instance methods that have more complex logic + # than checking a single argument value. To avoid duplicating + # the logic here, use the methods and perform these checks after + # instance variable assignment. + unless method? || line? + raise ArgumentError, "Unhandled probe type: neither method nor line probe: #{id}" + end + + @rate_limit = rate_limit || (@capture_snapshot ? 1 : 5000) + @rate_limiter = Datadog::Core::TokenBucket.new(@rate_limit) + end + + attr_reader :id + attr_reader :type + attr_reader :file + attr_reader :line_no + attr_reader :type_name + attr_reader :method_name + attr_reader :template + + # Configured maximum capture depth. Can be nil in which case + # the global default will be used. + attr_reader :max_capture_depth + + # Rate limit in effect, in invocations per second. Always present. + attr_reader :rate_limit + + # Rate limiter object. For internal DI use only. + attr_reader :rate_limiter + + def capture_snapshot? + @capture_snapshot + end + + # Returns whether the probe is a line probe. + # + # Method probes may still specify a file name (to aid in locating the + # method or for stack traversal purposes?), therefore we do not check + # for file name/path presence here and just consider the line number. + def line? + !line_no.nil? + end + + # Returns whether the probe is a method probe. + def method? + !!(type_name && method_name) + end + + # Returns the line number associated with the probe, raising + # Error::MissingLineNumber if the probe does not have a line number + # associated with it. + # + # This method is used by instrumentation driver to ensure a line number + # that is passed into the instrumentation logic is actually a line number + # and not nil. + def line_no! + if line_no.nil? + raise Error::MissingLineNumber, "Probe #{id} does not have a line number associated with it" + end + line_no + end + + # Source code location of the probe, for diagnostic reporting. + def location + if method? + "#{type_name}.#{method_name}" + elsif line? + "#{file}:#{line_no}" + else + # This case should not be possible because constructor verifies that + # the probe is a method or a line probe. + raise NotImplementedError + end + end + end + end +end diff --git a/lib/datadog/di/probe_builder.rb b/lib/datadog/di/probe_builder.rb new file mode 100644 index 00000000000..7c759fb0fd1 --- /dev/null +++ b/lib/datadog/di/probe_builder.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +require_relative "probe" + +module Datadog + module DI + # Creates Probe instances from remote configuration payloads. + # + # Due to the dynamic instrumentation product evolving over time, + # it is possible that the payload corresponds to a type of probe that the + # current version of the library does not handle. + # For now ArgumentError is raised in such cases (by ProbeBuilder or + # Probe constructor), since generally DI is meant to rescue all exceptions + # internally and not propagate any exceptions to applications. + # A dedicated exception could be added in the future if there is a use case + # for it. + # + # @api private + module ProbeBuilder + PROBE_TYPES = { + 'LOG_PROBE' => :log, + }.freeze + + module_function def build_from_remote_config(config) + # The validations here are not yet comprehensive. + type = config.fetch('type') + type_symbol = PROBE_TYPES[type] or raise ArgumentError, "Unrecognized probe type: #{type}" + Probe.new( + id: config.fetch("id"), + type: type_symbol, + file: config["where"]&.[]("sourceFile"), + # Sometimes lines are sometimes received as an array of nil + # for some reason. + line_no: config["where"]&.[]("lines")&.compact&.map(&:to_i)&.first, + type_name: config["where"]&.[]("typeName"), + method_name: config["where"]&.[]("methodName"), + template: config["template"], + capture_snapshot: !!config["captureSnapshot"], + max_capture_depth: config["capture"]&.[]("maxReferenceDepth"), + rate_limit: config["sampling"]&.[]("snapshotsPerSecond"), + ) + rescue KeyError => exc + raise ArgumentError, "Malformed remote configuration entry for probe: #{exc.class}: #{exc}: #{config}" + end + end + end +end diff --git a/lib/datadog/di/redactor.rb b/lib/datadog/di/redactor.rb new file mode 100644 index 00000000000..1a3fc15c73e --- /dev/null +++ b/lib/datadog/di/redactor.rb @@ -0,0 +1,188 @@ +# frozen_string_literal: true + +module Datadog + module DI + # Provides logic to identify sensitive information in snapshots captured + # by dynamic instrumentation. + # + # Redaction can be performed based on identifier or attribute name, + # or class name of said identifier or attribute. Redaction does not take + # into account variable values. + # + # There is a built-in list of identifier names which will be subject to + # redaction. Additional names can be provided by the user via the + # settings.dynamic_instrumentation.redacted_identifiers setting or + # the DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS environment + # variable. Currently no class names are subject to redaction by default; + # class names can be provided via the + # settings.dynamic_instrumentation.redacted_type_names setting or + # DD_DYNAMIC_INSTRUMENTATION_REDACTED_TYPES environment variable. + # + # Redacted identifiers must match exactly to an attribute name, a key + # in a hash or a variable name. Redacted types can either be matched + # exactly or, if the name is suffixed with an asterisk (*), any class + # whose name contains the specified prefix will be subject to redaction. + # + # When specifying class (type) names to be redacted, user must specify + # fully-qualified names. For example, if `Token` or `Token*` are + # specified to be redacted, instances of ::Token will be redacted + # but instances of ::Foo::Token will not be. To redact the latter, + # specify `Foo::Token` or `::Foo::Token` as redacted types. + # + # This class does not perform redaction itself (i.e., value replacement + # with a placeholder). This replacement is performed by Serializer. + # + # @api private + class Redactor + def initialize(settings) + @settings = settings + end + + attr_reader :settings + + def redact_identifier?(name) + redacted_identifiers.include?(normalize(name)) + end + + def redact_type?(value) + # Classses can be nameless, do not attempt to redact in that case. + if (cls_name = value.class.name) + redacted_type_names_regexp.match?(cls_name) + else + false + end + end + + private + + def redacted_identifiers + @redacted_identifiers ||= begin + names = DEFAULT_REDACTED_IDENTIFIERS + settings.dynamic_instrumentation.redacted_identifiers + names.map! do |name| + normalize(name) + end + Set.new(names) + end + end + + def redacted_type_names_regexp + @redacted_type_names_regexp ||= begin + names = settings.dynamic_instrumentation.redacted_type_names + names = names.map do |name| + if name.start_with?("::") + # :: prefix is redundant, all names are expected to be + # fully-qualified. + # + # Defaulting to empty string is for steep. + name = name[2...name.length] || "" + end + if name.end_with?("*") + # Defaulting to empty string is for steep. + name = name[0..-2] || "" + suffix = ".*" + else + suffix = "" + end + Regexp.escape(name) + suffix + end.join("|") + Regexp.new("\\A(?:#{names})\\z") + end + end + + # Copied from dd-trace-py + DEFAULT_REDACTED_IDENTIFIERS = [ + "2fa", + "accesstoken", + "aiohttpsession", + "apikey", + "apisecret", + "apisignature", + "appkey", + "applicationkey", + "auth", + "authorization", + "authtoken", + "ccnumber", + "certificatepin", + "cipher", + "clientid", + "clientsecret", + "connectionstring", + "connectsid", + "cookie", + "credentials", + "creditcard", + "csrf", + "csrftoken", + "cvv", + "databaseurl", + "dburl", + "encryptionkey", + "encryptionkeyid", + "env", + "geolocation", + "gpgkey", + "ipaddress", + "jti", + "jwt", + "licensekey", + "masterkey", + "mysqlpwd", + "nonce", + "oauth", + "oauthtoken", + "otp", + "passhash", + "passwd", + "password", + "passwordb", + "pemfile", + "pgpkey", + "phpsessid", + "pin", + "pincode", + "pkcs8", + "privatekey", + "publickey", + "pwd", + "recaptchakey", + "refreshtoken", + "routingnumber", + "salt", + "secret", + "secretkey", + "secrettoken", + "securityanswer", + "securitycode", + "securityquestion", + "serviceaccountcredentials", + "session", + "sessionid", + "sessionkey", + "setcookie", + "signature", + "signaturekey", + "sshkey", + "ssn", + "symfony", + "token", + "transactionid", + "twiliotoken", + "usersession", + "voterid", + "xapikey", + "xauthtoken", + "xcsrftoken", + "xforwardedfor", + "xrealip", + "xsrf", + "xsrftoken", + ] + + # Input can be a string or a symbol. + def normalize(str) + str.to_s.strip.downcase.gsub(/[-_$@]/, "") + end + end + end +end diff --git a/lib/datadog/di/serializer.rb b/lib/datadog/di/serializer.rb new file mode 100644 index 00000000000..2fefa0d91eb --- /dev/null +++ b/lib/datadog/di/serializer.rb @@ -0,0 +1,215 @@ +# frozen_string_literal: true + +require_relative "redactor" + +module Datadog + module DI + # Serializes captured snapshot to primitive types, which are subsequently + # serialized to JSON and sent to the backend. + # + # This class performs actual removal of sensitive values from the + # snapshots. It uses Redactor to determine which values are sensitive + # and need to be removed. + # + # Serializer normally ought not to invoke user (application) code, + # to guarantee predictable performance. However, objects like ActiveRecord + # models cannot be usefully serialized into primitive types without + # custom logic (for example, the attributes are more than 3 levels + # down from the top-level object which is the default capture depth, + # thus they won't be captured at all). To accommodate complex objects, + # there is an extension mechanism implemented permitting registration + # of serializer callbacks for arbitrary types. Applications and libraries + # definining such serializer callbacks should be very careful to + # have predictable performance and avoid exceptions and infinite loops + # and other such issues. + # + # All serialization methods take the names of the variables being + # serialized in order to be able to redact values. + # + # The result of serialization should not reference parameter values when + # the values are mutable (currently, this only applies to string values). + # Serializer will duplicate such mutable values, so that if method + # arguments are captured at entry and then modified during method execution, + # the serialized values from entry are correctly preserved. + # Alternatively, we could pass a parameter to the serialization methods + # which would control whether values are duplicated. This may be more + # efficient but there would be additional overhead from passing this + # parameter all the time and the API would get more complex. + # + # @api private + class Serializer + def initialize(settings, redactor) + @settings = settings + @redactor = redactor + end + + attr_reader :settings + attr_reader :redactor + + # Serializes positional and keyword arguments to a method, + # as obtained by a method probe. + # + # UI supports a single argument list only and does not distinguish + # between positional and keyword arguments. We convert positional + # arguments to keyword arguments ("arg1", "arg2", ...) and ensure + # the positional arguments are listed first. + def serialize_args(args, kwargs) + counter = 0 + combined = args.each_with_object({}) do |value, c| + counter += 1 + # Conversion to symbol is needed here to put args ahead of + # kwargs when they are merged below. + c[:"arg#{counter}"] = value + end.update(kwargs) + serialize_vars(combined) + end + + # Serializes variables captured by a line probe. + # + # These are normally local variables that exist on a particular line + # of executed code. + def serialize_vars(vars) + vars.each_with_object({}) do |(k, v), agg| + agg[k] = serialize_value(v, name: k) + end + end + + # Serializes a single named value. + # + # The name is needed to perform sensitive data redaction. + # + # In some cases, the value being serialized does not have a name + # (for example, it is the return value of a method). + # In this case +name+ can be nil. + # + # Returns a data structure comprised of only values of basic types + # (integers, strings, arrays, hashes). + # + # Respects string length, collection size and traversal depth limits. + def serialize_value(value, name: nil, depth: settings.dynamic_instrumentation.max_capture_depth) + if redactor.redact_type?(value) + return {type: class_name(value.class), notCapturedReason: "redactedType"} + end + + if name && redactor.redact_identifier?(name) + return {type: class_name(value.class), notCapturedReason: "redactedIdent"} + end + + serialized = {type: class_name(value.class)} + case value + when NilClass + serialized.update(isNull: true) + when Integer, Float, TrueClass, FalseClass + serialized.update(value: value.to_s) + when String, Symbol + need_dup = false + value = if String === value + # This is the only place where we duplicate the value, currently. + # All other values are immutable primitives (e.g. numbers). + # However, do not duplicate if the string is frozen, or if + # it is later truncated. + need_dup = !value.frozen? + value + else + value.to_s + end + max = settings.dynamic_instrumentation.max_capture_string_length + if value.length > max + serialized.update(truncated: true, size: value.length) + value = value[0...max] + need_dup = false + end + value = value.dup if need_dup + serialized.update(value: value) + when Array + if depth < 0 + serialized.update(notCapturedReason: "depth") + else + max = settings.dynamic_instrumentation.max_capture_collection_size + if max != 0 && value.length > max + serialized.update(notCapturedReason: "collectionSize", size: value.length) + # same steep failure with array slices. + # https://github.com/soutaro/steep/issues/1219 + value = value[0...max] || [] + end + entries = value.map do |elt| + serialize_value(elt, depth: depth - 1) + end + serialized.update(elements: entries) + end + when Hash + if depth < 0 + serialized.update(notCapturedReason: "depth") + else + max = settings.dynamic_instrumentation.max_capture_collection_size + cur = 0 + entries = [] + value.each do |k, v| + if max != 0 && cur >= max + serialized.update(notCapturedReason: "collectionSize", size: value.length) + break + end + cur += 1 + entries << [serialize_value(k, depth: depth - 1), serialize_value(v, name: k, depth: depth - 1)] + end + serialized.update(entries: entries) + end + else + if depth < 0 + serialized.update(notCapturedReason: "depth") + else + fields = {} + max = settings.dynamic_instrumentation.max_capture_attribute_count + cur = 0 + + # MRI and JRuby 9.4.5+ preserve instance variable definition + # order when calling #instance_variables. Previous JRuby versions + # did not preserve order and returned the variables in arbitrary + # order. + # + # The arbitrary order is problematic because 1) when there are + # fewer instance variables than capture limit, the order in which + # the variables are shown in UI will change from one capture to + # the next and generally will be arbitrary to the user, and + # 2) when there are more instance variables than capture limit, + # *which* variables are captured will also change meaning user + # looking at the UI may have "new" instance variables appear and + # existing ones disappear as they are looking at multiple captures. + # + # For consistency, we should have some kind of stable order of + # instance variables on all supported Ruby runtimes, so that the UI + # stays consistent. Given that initial implementation of Ruby DI + # does not support JRuby, we don't handle JRuby's lack of ordering + # of #instance_variables here, but if JRuby is supported in the + # future this may need to be addressed. + ivars = value.instance_variables + + ivars.each do |ivar| + if cur >= max + serialized.update(notCapturedReason: "fieldCount", fields: fields) + break + end + cur += 1 + fields[ivar] = serialize_value(value.instance_variable_get(ivar), name: ivar, depth: depth - 1) + end + serialized.update(fields: fields) + end + end + serialized + end + + private + + # Returns the name for the specified class object. + # + # Ruby can have nameless classes, e.g. Class.new is a class object + # with no name. We return a placeholder for such nameless classes. + def class_name(cls) + # We could call `cls.to_s` to get the "standard" Ruby inspection of + # the class, but it is likely that user code can override #to_s + # and we don't want to invoke user code. + cls.name || "[Unnamed class]" + end + end + end +end diff --git a/lib/datadog/di/transport.rb b/lib/datadog/di/transport.rb new file mode 100644 index 00000000000..81b420073b5 --- /dev/null +++ b/lib/datadog/di/transport.rb @@ -0,0 +1,67 @@ +# frozen_string_literal: true + +require_relative 'error' + +module Datadog + module DI + # Transport for sending probe statuses and snapshots to local agent. + # + # Handles encoding of the payloads into multipart posts if necessary, + # body formatting/encoding, setting correct headers, etc. + # + # The transport does not handle batching of statuses or snapshots - + # the batching should be implemented upstream of this class. + # + # Timeout settings are forwarded from agent settings to the Net adapter. + # + # The send_* methods raise Error::AgentCommunicationError on errors + # (network errors and HTTP protocol errors). It is the responsibility + # of upstream code to rescue these exceptions appropriately to prevent them + # from being propagated to the application. + # + # @api private + class Transport + DIAGNOSTICS_PATH = '/debugger/v1/diagnostics' + INPUT_PATH = '/debugger/v1/input' + + def initialize(agent_settings) + # Note that this uses host, port, timeout and TLS flag from + # agent settings. + @client = Core::Transport::HTTP::Adapters::Net.new(agent_settings) + end + + def send_diagnostics(payload) + event_payload = Core::Vendor::Multipart::Post::UploadIO.new( + StringIO.new(JSON.dump(payload)), 'application/json', 'event.json' + ) + payload = {'event' => event_payload} + send_request('Probe status submission', DIAGNOSTICS_PATH, payload) + end + + def send_input(payload) + send_request('Probe snapshot submission', INPUT_PATH, payload, + headers: {'content-type' => 'application/json'},) + end + + private + + attr_reader :client + + def send_request(desc, path, payload, headers: {}) + # steep:ignore:start + env = OpenStruct.new( + path: path, + form: payload, + headers: headers, + ) + # steep:ignore:end + response = client.post(env) + unless response.ok? + raise Error::AgentCommunicationError, "#{desc} failed: #{response.code}: #{response.payload}" + end + rescue IOError, SystemCallError => exc + raise Error::AgentCommunicationError, "#{desc} failed: #{exc.class}: #{exc}" + end + end + end +end diff --git a/lib/datadog/kit/appsec/events.rb b/lib/datadog/kit/appsec/events.rb index 2320509a707..be0b0f049c1 100644 --- a/lib/datadog/kit/appsec/events.rb +++ b/lib/datadog/kit/appsec/events.rb @@ -53,13 +53,11 @@ def track_login_success(trace = nil, span = nil, user:, **others) # @param user_exists [bool] Whether the user id that did a login attempt exists. # @param others [Hash] Additional free-form # event information to attach to the trace. - def track_login_failure(trace = nil, span = nil, user_id:, user_exists:, **others) + def track_login_failure(trace = nil, span = nil, user_exists:, user_id: nil, **others) set_trace_and_span_context('track_login_failure', trace, span) do |active_trace, active_span| - raise ArgumentError, 'user_id cannot be nil' if user_id.nil? - track(LOGIN_FAILURE_EVENT, active_trace, active_span, **others) - active_span.set_tag('appsec.events.users.login.failure.usr.id', user_id) + active_span.set_tag('appsec.events.users.login.failure.usr.id', user_id) if user_id active_span.set_tag('appsec.events.users.login.failure.usr.exists', user_exists) end end diff --git a/lib/datadog/opentelemetry/sdk/propagator.rb b/lib/datadog/opentelemetry/sdk/propagator.rb index f45e4e9d7f4..b711fba2390 100644 --- a/lib/datadog/opentelemetry/sdk/propagator.rb +++ b/lib/datadog/opentelemetry/sdk/propagator.rb @@ -15,6 +15,7 @@ def inject( setter: ::OpenTelemetry::Context::Propagation.text_map_setter ) unless setter == ::OpenTelemetry::Context::Propagation.text_map_setter + # PENDING: Not to report telemetry logs for now Datadog.logger.error( 'Custom setter is not supported. Please inform the `datadog` team at ' \ ' https://github.com/DataDog/dd-trace-rb of your use case so we can best support you. Using the default ' \ @@ -31,6 +32,7 @@ def extract( ) if getter != ::OpenTelemetry::Context::Propagation.text_map_getter && getter != ::OpenTelemetry::Common::Propagation.rack_env_getter + # PENDING: Not to report telemetry logs for now Datadog.logger.error( "Custom getter #{getter} is not supported. Please inform the `datadog` team at " \ ' https://github.com/DataDog/dd-trace-rb of your use case so we can best support you. Using the default ' \ diff --git a/lib/datadog/profiling.rb b/lib/datadog/profiling.rb index 367ce829415..114e781030f 100644 --- a/lib/datadog/profiling.rb +++ b/lib/datadog/profiling.rb @@ -30,7 +30,7 @@ def self.start_if_enabled profiler = Datadog.send(:components).profiler # ...but we still try to start it BECAUSE if the process forks, the profiler will exist but may # not yet have been started in the fork - profiler.start if profiler + profiler&.start !!profiler end @@ -47,6 +47,7 @@ def self.start_if_enabled # (This is similar to some OS-based time representations.) # # Note 2: All fibers in the same thread will share the same counter values. + # Note 3: This counter is not accurate when using the M:N scheduler. # # Only available when the profiler is running, and allocation-related features are not disabled via configuration. # @@ -62,7 +63,7 @@ def self.allocation_count def self.enabled? profiler = Datadog.send(:components).profiler # Use .send(...) to avoid exposing the attr_reader as an API to the outside - !!(profiler.send(:scheduler).running? if profiler) + !!profiler&.send(:scheduler)&.running? end def self.wait_until_running(timeout_seconds: 5) @@ -97,7 +98,7 @@ def self.allocation_count # rubocop:disable Lint/NestedMethodDefinition (On purp contents = file_api.read(skipped_reason_file).strip contents unless contents.empty? - rescue StandardError + rescue # Do nothing end end @@ -135,7 +136,6 @@ def self.allocation_count # rubocop:disable Lint/NestedMethodDefinition (On purp private_class_method def self.load_profiling return false unless supported? - require_relative 'profiling/ext/forking' require_relative 'profiling/ext/dir_monkey_patches' require_relative 'profiling/collectors/info' require_relative 'profiling/collectors/code_provenance' @@ -144,7 +144,6 @@ def self.allocation_count # rubocop:disable Lint/NestedMethodDefinition (On purp require_relative 'profiling/collectors/idle_sampling_helper' require_relative 'profiling/collectors/stack' require_relative 'profiling/collectors/thread_context' - require_relative 'profiling/crashtracker' require_relative 'profiling/stack_recorder' require_relative 'profiling/exporter' require_relative 'profiling/flush' diff --git a/lib/datadog/profiling/collectors/code_provenance.rb b/lib/datadog/profiling/collectors/code_provenance.rb index ea795f9526e..d72683c1932 100644 --- a/lib/datadog/profiling/collectors/code_provenance.rb +++ b/lib/datadog/profiling/collectors/code_provenance.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true -require 'set' -require 'json' +require "set" +require "json" module Datadog module Profiling @@ -14,7 +14,7 @@ module Collectors # # This class acts both as a collector (collecting data) as well as a recorder (records/serializes it) class CodeProvenance - def initialize(standard_library_path: RbConfig::CONFIG.fetch('rubylibdir')) + def initialize(standard_library_path: RbConfig::CONFIG.fetch("rubylibdir")) @libraries_by_name = {} @libraries_by_path = {} @seen_files = Set.new @@ -22,8 +22,8 @@ def initialize(standard_library_path: RbConfig::CONFIG.fetch('rubylibdir')) record_library( Library.new( - kind: 'standard library', - name: 'stdlib', + kind: "standard library", + name: "stdlib", version: RUBY_VERSION, path: standard_library_path, ) @@ -79,7 +79,7 @@ def record_loaded_specs(loaded_specs) loaded_specs.each do |spec| next if libraries_by_name.key?(spec.name) - record_library(Library.new(kind: 'library', name: spec.name, version: spec.version, path: spec.gem_dir)) + record_library(Library.new(kind: "library", name: spec.name, version: spec.version, path: spec.gem_dir)) recorded_library = true end @@ -119,7 +119,7 @@ def initialize(kind:, name:, version:, path:) end def to_json(arg = nil) - { kind: @kind, name: @name, version: @version, paths: @paths }.to_json(arg) + {kind: @kind, name: @name, version: @version, paths: @paths}.to_json(arg) end def path diff --git a/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb b/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb index de53333a09f..83715c58ac7 100644 --- a/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +++ b/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb @@ -21,6 +21,8 @@ def initialize( thread_context_collector:, dynamic_sampling_rate_overhead_target_percentage:, allocation_profiling_enabled:, + allocation_counting_enabled:, + gvl_profiling_enabled:, # **NOTE**: This should only be used for testing; disabling the dynamic sampling rate will increase the # profiler overhead! dynamic_sampling_rate_enabled: true, @@ -29,20 +31,22 @@ def initialize( ) unless dynamic_sampling_rate_enabled Datadog.logger.warn( - 'Profiling dynamic sampling rate disabled. This should only be used for testing, and will increase overhead!' + "Profiling dynamic sampling rate disabled. This should only be used for testing, and will increase overhead!" ) end self.class._native_initialize( - self, - thread_context_collector, - gc_profiling_enabled, - idle_sampling_helper, - no_signals_workaround_enabled, - dynamic_sampling_rate_enabled, - dynamic_sampling_rate_overhead_target_percentage, - allocation_profiling_enabled, - skip_idle_samples_for_testing, + self_instance: self, + thread_context_collector: thread_context_collector, + gc_profiling_enabled: gc_profiling_enabled, + idle_sampling_helper: idle_sampling_helper, + no_signals_workaround_enabled: no_signals_workaround_enabled, + dynamic_sampling_rate_enabled: dynamic_sampling_rate_enabled, + dynamic_sampling_rate_overhead_target_percentage: dynamic_sampling_rate_overhead_target_percentage, + allocation_profiling_enabled: allocation_profiling_enabled, + allocation_counting_enabled: allocation_counting_enabled, + gvl_profiling_enabled: gvl_profiling_enabled, + skip_idle_samples_for_testing: skip_idle_samples_for_testing, ) @worker_thread = nil @failure_exception = nil @@ -54,27 +58,25 @@ def initialize( def start(on_failure_proc: nil) @start_stop_mutex.synchronize do - return if @worker_thread && @worker_thread.alive? + return if @worker_thread&.alive? Datadog.logger.debug { "Starting thread for: #{self}" } @idle_sampling_helper.start @worker_thread = Thread.new do - begin - Thread.current.name = self.class.name - - self.class._native_sampling_loop(self) - - Datadog.logger.debug('CpuAndWallTimeWorker thread stopping cleanly') - rescue Exception => e # rubocop:disable Lint/RescueException - @failure_exception = e - Datadog.logger.warn( - 'CpuAndWallTimeWorker thread error. ' \ - "Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}" - ) - on_failure_proc&.call - end + Thread.current.name = self.class.name + + self.class._native_sampling_loop(self) + + Datadog.logger.debug("CpuAndWallTimeWorker thread stopping cleanly") + rescue Exception => e # rubocop:disable Lint/RescueException + @failure_exception = e + Datadog.logger.warn( + "CpuAndWallTimeWorker thread error. " \ + "Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}" + ) + on_failure_proc&.call end @worker_thread.name = self.class.name # Repeated from above to make sure thread gets named asap @worker_thread.thread_variable_set(:fork_safe, true) @@ -85,7 +87,7 @@ def start(on_failure_proc: nil) def stop @start_stop_mutex.synchronize do - Datadog.logger.debug('Requesting CpuAndWallTimeWorker thread shut down') + Datadog.logger.debug("Requesting CpuAndWallTimeWorker thread shut down") @idle_sampling_helper.stop diff --git a/lib/datadog/profiling/collectors/idle_sampling_helper.rb b/lib/datadog/profiling/collectors/idle_sampling_helper.rb index 269bc087573..c065c2125dc 100644 --- a/lib/datadog/profiling/collectors/idle_sampling_helper.rb +++ b/lib/datadog/profiling/collectors/idle_sampling_helper.rb @@ -21,7 +21,7 @@ def initialize def start @start_stop_mutex.synchronize do - return if @worker_thread && @worker_thread.alive? + return if @worker_thread&.alive? Datadog.logger.debug { "Starting thread for: #{self}" } @@ -30,19 +30,17 @@ def start self.class._native_reset(self) @worker_thread = Thread.new do - begin - Thread.current.name = self.class.name + Thread.current.name = self.class.name - self.class._native_idle_sampling_loop(self) + self.class._native_idle_sampling_loop(self) - Datadog.logger.debug('IdleSamplingHelper thread stopping cleanly') - rescue Exception => e # rubocop:disable Lint/RescueException - @failure_exception = e - Datadog.logger.warn( - 'IdleSamplingHelper thread error. ' \ - "Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}" - ) - end + Datadog.logger.debug("IdleSamplingHelper thread stopping cleanly") + rescue Exception => e # rubocop:disable Lint/RescueException + @failure_exception = e + Datadog.logger.warn( + "IdleSamplingHelper thread error. " \ + "Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}" + ) end @worker_thread.name = self.class.name # Repeated from above to make sure thread gets named asap @worker_thread.thread_variable_set(:fork_safe, true) @@ -53,7 +51,7 @@ def start def stop @start_stop_mutex.synchronize do - Datadog.logger.debug('Requesting IdleSamplingHelper thread shut down') + Datadog.logger.debug("Requesting IdleSamplingHelper thread shut down") return unless @worker_thread diff --git a/lib/datadog/profiling/collectors/info.rb b/lib/datadog/profiling/collectors/info.rb index 69a44187213..232d3e21cd4 100644 --- a/lib/datadog/profiling/collectors/info.rb +++ b/lib/datadog/profiling/collectors/info.rb @@ -1,7 +1,8 @@ # frozen_string_literal: true -require 'set' -require 'time' +require "set" +require "time" +require "libdatadog" module Datadog module Profiling @@ -61,12 +62,20 @@ def collect_application_info(settings) def collect_profiler_info(settings) unless @profiler_info - lib_datadog_gem = ::Gem.loaded_specs['libdatadog'] + lib_datadog_gem = ::Gem.loaded_specs["libdatadog"] + + libdatadog_version = + if lib_datadog_gem + "#{lib_datadog_gem.version}-#{lib_datadog_gem.platform}" + else + # In some cases, Gem.loaded_specs may not be available, as in + # https://github.com/DataDog/dd-trace-rb/pull/1506; let's use the version directly + "#{Libdatadog::VERSION}-(unknown)" + end + @profiler_info = { - # TODO: If profiling is extracted and its version diverges from the datadog gem, this is inaccurate. - # Update if this ever occurs. version: Datadog::Core::Environment::Identity.gem_datadog_version, - libdatadog: "#{lib_datadog_gem.version}-#{lib_datadog_gem.platform}", + libdatadog: libdatadog_version, settings: collect_settings_recursively(settings.profiling), }.freeze end diff --git a/lib/datadog/profiling/collectors/thread_context.rb b/lib/datadog/profiling/collectors/thread_context.rb index 78c09b55538..ec4491b5cde 100644 --- a/lib/datadog/profiling/collectors/thread_context.rb +++ b/lib/datadog/profiling/collectors/thread_context.rb @@ -20,17 +20,41 @@ def initialize( tracer:, endpoint_collection_enabled:, timeline_enabled:, - allocation_type_enabled: true + waiting_for_gvl_threshold_ns:, + otel_context_enabled: ) tracer_context_key = safely_extract_context_key_from(tracer) self.class._native_initialize( - self, - recorder, - max_frames, - tracer_context_key, - endpoint_collection_enabled, - timeline_enabled, - allocation_type_enabled, + self_instance: self, + recorder: recorder, + max_frames: max_frames, + tracer_context_key: tracer_context_key, + endpoint_collection_enabled: endpoint_collection_enabled, + timeline_enabled: timeline_enabled, + waiting_for_gvl_threshold_ns: waiting_for_gvl_threshold_ns, + otel_context_enabled: otel_context_enabled, + ) + end + + def self.for_testing( + recorder:, + max_frames: 400, + tracer: nil, + endpoint_collection_enabled: false, + timeline_enabled: false, + waiting_for_gvl_threshold_ns: 10_000_000, + otel_context_enabled: false, + **options + ) + new( + recorder: recorder, + max_frames: max_frames, + tracer: tracer, + endpoint_collection_enabled: endpoint_collection_enabled, + timeline_enabled: timeline_enabled, + waiting_for_gvl_threshold_ns: waiting_for_gvl_threshold_ns, + otel_context_enabled: otel_context_enabled, + **options, ) end @@ -48,12 +72,14 @@ def reset_after_fork private def safely_extract_context_key_from(tracer) - provider = tracer && tracer.respond_to?(:provider) && tracer.provider + return unless tracer + + provider = tracer.respond_to?(:provider) && tracer.provider return unless provider context = provider.instance_variable_get(:@context) - context && context.instance_variable_get(:@key) + context&.instance_variable_get(:@key) end end end diff --git a/lib/datadog/profiling/component.rb b/lib/datadog/profiling/component.rb index d08e161d350..19239a70c78 100644 --- a/lib/datadog/profiling/component.rb +++ b/lib/datadog/profiling/component.rb @@ -8,7 +8,7 @@ module Component # * Code Hotspots panel in the trace viewer, as well as scoping a profile down to a span # * Endpoint aggregation in the profiler UX, including normalization (resource per endpoint call) def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) # rubocop:disable Metrics/MethodLength - return [nil, { profiling_enabled: false }] unless settings.profiling.enabled + return [nil, {profiling_enabled: false}] unless settings.profiling.enabled # Workaround for weird dependency direction: the Core::Configuration::Components class currently has a # dependency on individual products, in this case the Profiler. @@ -27,9 +27,9 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) # On the other hand, if datadog/core is loaded by a different product and no general `require 'datadog'` is # done, then profiling may not be loaded, and thus to avoid this issue we do a require here (which is a # no-op if profiling is already loaded). - require_relative '../profiling' + require_relative "../profiling" - return [nil, { profiling_enabled: false }] unless Profiling.supported? + return [nil, {profiling_enabled: false}] unless Profiling.supported? # Activate forking extensions Profiling::Tasks::Setup.new.run @@ -47,12 +47,13 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) upload_period_seconds = [60, settings.profiling.advanced.upload_period_seconds].max recorder = Datadog::Profiling::StackRecorder.new( - cpu_time_enabled: RUBY_PLATFORM.include?('linux'), # Only supported on Linux currently + cpu_time_enabled: RUBY_PLATFORM.include?("linux"), # Only supported on Linux currently alloc_samples_enabled: allocation_profiling_enabled, heap_samples_enabled: heap_profiling_enabled, heap_size_enabled: heap_size_profiling_enabled, heap_sample_every: heap_sample_every, timeline_enabled: timeline_enabled, + heap_clean_after_gc_enabled: settings.profiling.advanced.heap_clean_after_gc_enabled, ) thread_context_collector = build_thread_context_collector(settings, recorder, optional_tracer, timeline_enabled) worker = Datadog::Profiling::Collectors::CpuAndWallTimeWorker.new( @@ -61,6 +62,8 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) thread_context_collector: thread_context_collector, dynamic_sampling_rate_overhead_target_percentage: overhead_target_percentage, allocation_profiling_enabled: allocation_profiling_enabled, + allocation_counting_enabled: settings.profiling.advanced.allocation_counting_enabled, + gvl_profiling_enabled: enable_gvl_profiling?(settings), ) internal_metadata = { @@ -72,14 +75,13 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) exporter = build_profiler_exporter(settings, recorder, worker, internal_metadata: internal_metadata) transport = build_profiler_transport(settings, agent_settings) scheduler = Profiling::Scheduler.new(exporter: exporter, transport: transport, interval: upload_period_seconds) - crashtracker = build_crashtracker(settings, transport) - profiler = Profiling::Profiler.new(worker: worker, scheduler: scheduler, optional_crashtracker: crashtracker) + profiler = Profiling::Profiler.new(worker: worker, scheduler: scheduler) if dir_interruption_workaround_enabled?(settings, no_signals_workaround_enabled) Datadog::Profiling::Ext::DirMonkeyPatches.apply! end - [profiler, { profiling_enabled: true }] + [profiler, {profiling_enabled: true}] end private_class_method def self.build_thread_context_collector(settings, recorder, optional_tracer, timeline_enabled) @@ -89,6 +91,8 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) tracer: optional_tracer, endpoint_collection_enabled: settings.profiling.advanced.endpoint.collection.enabled, timeline_enabled: timeline_enabled, + waiting_for_gvl_threshold_ns: settings.profiling.advanced.waiting_for_gvl_threshold_ns, + otel_context_enabled: settings.profiling.advanced.preview_otel_context_enabled, ) end @@ -116,28 +120,6 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) ) end - private_class_method def self.build_crashtracker(settings, transport) - return unless settings.profiling.advanced.experimental_crash_tracking_enabled - - # By default, the transport is an instance of HttpTransport, which validates the configuration and makes - # it available for us to use here. - # But we support overriding the transport with a user-specific one, which may e.g. write stuff to a file, - # and thus can't really provide a valid configuration to talk to a Datadog agent. Thus, in this situation, - # we can't use the crashtracker, even if enabled. - unless transport.respond_to?(:exporter_configuration) - Datadog.logger.warn( - 'Cannot enable profiling crash tracking as a custom settings.profiling.exporter.transport is configured' - ) - return - end - - Datadog::Profiling::Crashtracker.new( - exporter_configuration: transport.exporter_configuration, - tags: Datadog::Profiling::TagBuilder.call(settings: settings), - upload_timeout_seconds: settings.profiling.upload.timeout_seconds, - ) - end - private_class_method def self.enable_gc_profiling?(settings) return false unless settings.profiling.advanced.gc_enabled @@ -146,19 +128,19 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) # that causes a segmentation fault during garbage collection of Ractors # (https://bugs.ruby-lang.org/issues/18464). We don't allow enabling gc profiling on such Rubies. # This bug is fixed on Ruby versions 3.1.4, 3.2.3 and 3.3.0. - if RUBY_VERSION.start_with?('3.0.') || - (RUBY_VERSION.start_with?('3.1.') && RUBY_VERSION < '3.1.4') || - (RUBY_VERSION.start_with?('3.2.') && RUBY_VERSION < '3.2.3') + if RUBY_VERSION.start_with?("3.0.") || + (RUBY_VERSION.start_with?("3.1.") && RUBY_VERSION < "3.1.4") || + (RUBY_VERSION.start_with?("3.2.") && RUBY_VERSION < "3.2.3") Datadog.logger.warn( - "Current Ruby version (#{RUBY_VERSION}) has a VM bug where enabling GC profiling would cause "\ - 'crashes (https://bugs.ruby-lang.org/issues/18464). GC profiling has been disabled.' + "Current Ruby version (#{RUBY_VERSION}) has a VM bug where enabling GC profiling would cause " \ + "crashes (https://bugs.ruby-lang.org/issues/18464). GC profiling has been disabled." ) return false - elsif RUBY_VERSION.start_with?('3.') + elsif RUBY_VERSION.start_with?("3.") Datadog.logger.debug( - 'In all known versions of Ruby 3.x, using Ractors may result in GC profiling unexpectedly ' \ - 'stopping (https://bugs.ruby-lang.org/issues/19112). Note that this stop has no impact in your ' \ - 'application stability or performance. This does not happen if Ractors are not used.' + "In all known versions of Ruby 3.x, using Ractors may result in GC profiling unexpectedly " \ + "stopping (https://bugs.ruby-lang.org/issues/19112). Note that this stop has no impact in your " \ + "application stability or performance. This does not happen if Ractors are not used." ) end @@ -182,11 +164,11 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) # Ruby 3.2.0 to 3.2.2 have a bug in the newobj tracepoint (https://bugs.ruby-lang.org/issues/19482, # https://github.com/ruby/ruby/pull/7464) that makes this crash in any configuration. This bug is # fixed on Ruby versions 3.2.3 and 3.3.0. - if RUBY_VERSION.start_with?('3.2.') && RUBY_VERSION < '3.2.3' + if RUBY_VERSION.start_with?("3.2.") && RUBY_VERSION < "3.2.3" Datadog.logger.warn( - 'Allocation profiling is not supported in Ruby versions 3.2.0, 3.2.1 and 3.2.2 and will be forcibly '\ - 'disabled. This is due to a VM bug that can lead to crashes (https://bugs.ruby-lang.org/issues/19482). '\ - 'Other Ruby versions do not suffer from this issue.' + "Allocation profiling is not supported in Ruby versions 3.2.0, 3.2.1 and 3.2.2 and will be forcibly " \ + "disabled. This is due to a VM bug that can lead to crashes (https://bugs.ruby-lang.org/issues/19482). " \ + "Other Ruby versions do not suffer from this issue." ) return false end @@ -196,26 +178,26 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) # that causes a segmentation fault during garbage collection of Ractors # (https://bugs.ruby-lang.org/issues/18464). We don't recommend using this feature on such Rubies. # This bug is fixed on Ruby versions 3.1.4, 3.2.3 and 3.3.0. - if RUBY_VERSION.start_with?('3.0.') || - (RUBY_VERSION.start_with?('3.1.') && RUBY_VERSION < '3.1.4') || - (RUBY_VERSION.start_with?('3.2.') && RUBY_VERSION < '3.2.3') + if RUBY_VERSION.start_with?("3.0.") || + (RUBY_VERSION.start_with?("3.1.") && RUBY_VERSION < "3.1.4") || + (RUBY_VERSION.start_with?("3.2.") && RUBY_VERSION < "3.2.3") Datadog.logger.warn( - "Current Ruby version (#{RUBY_VERSION}) has a VM bug where enabling allocation profiling while using "\ - 'Ractors may cause unexpected issues, including crashes (https://bugs.ruby-lang.org/issues/18464). '\ - 'This does not happen if Ractors are not used.' + "Current Ruby version (#{RUBY_VERSION}) has a VM bug where enabling allocation profiling while using " \ + "Ractors may cause unexpected issues, including crashes (https://bugs.ruby-lang.org/issues/18464). " \ + "This does not happen if Ractors are not used." ) # ANNOYANCE - Only with Ractors # On all known versions of Ruby 3.x, due to https://bugs.ruby-lang.org/issues/19112, when a ractor gets # garbage collected, Ruby will disable all active tracepoints, which this feature internally relies on. - elsif RUBY_VERSION.start_with?('3.') + elsif RUBY_VERSION.start_with?("3.") Datadog.logger.warn( - 'In all known versions of Ruby 3.x, using Ractors may result in allocation profiling unexpectedly ' \ - 'stopping (https://bugs.ruby-lang.org/issues/19112). Note that this stop has no impact in your ' \ - 'application stability or performance. This does not happen if Ractors are not used.' + "In all known versions of Ruby 3.x, using Ractors may result in allocation profiling unexpectedly " \ + "stopping (https://bugs.ruby-lang.org/issues/19112). Note that this stop has no impact in your " \ + "application stability or performance. This does not happen if Ractors are not used." ) end - Datadog.logger.debug('Enabled allocation profiling') + Datadog.logger.debug("Enabled allocation profiling") true end @@ -225,33 +207,33 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) return false unless heap_profiling_enabled - if RUBY_VERSION.start_with?('2.') && RUBY_VERSION < '2.7' + if RUBY_VERSION.start_with?("2.") && RUBY_VERSION < "2.7" Datadog.logger.warn( - 'Heap profiling currently relies on features introduced in Ruby 2.7 and will be forcibly disabled. '\ - 'Please upgrade to Ruby >= 2.7 in order to use this feature.' + "Heap profiling currently relies on features introduced in Ruby 2.7 and will be forcibly disabled. " \ + "Please upgrade to Ruby >= 2.7 in order to use this feature." ) return false end - if RUBY_VERSION < '3.1' + if RUBY_VERSION < "3.1" Datadog.logger.debug( "Current Ruby version (#{RUBY_VERSION}) supports forced object recycling which has a bug that the " \ - 'heap profiler is forced to work around to remain accurate. This workaround requires force-setting '\ + "heap profiler is forced to work around to remain accurate. This workaround requires force-setting " \ "the SEEN_OBJ_ID flag on objects that should have it but don't. Full details can be found in " \ - 'https://github.com/DataDog/dd-trace-rb/pull/3360. This workaround should be safe but can be ' \ - 'bypassed by disabling the heap profiler or upgrading to Ruby >= 3.1 where forced object recycling ' \ - 'was completely removed (https://bugs.ruby-lang.org/issues/18290).' + "https://github.com/DataDog/dd-trace-rb/pull/3360. This workaround should be safe but can be " \ + "bypassed by disabling the heap profiler or upgrading to Ruby >= 3.1 where forced object recycling " \ + "was completely removed (https://bugs.ruby-lang.org/issues/18290)." ) end unless allocation_profiling_enabled raise ArgumentError, - 'Heap profiling requires allocation profiling to be enabled' + "Heap profiling requires allocation profiling to be enabled" end Datadog.logger.warn( "Enabled experimental heap profiling: heap_sample_rate=#{heap_sample_rate}. This is experimental, not " \ - 'recommended, and will increase overhead!' + "recommended, and will increase overhead!" ) true @@ -263,7 +245,7 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) return false unless heap_profiling_enabled && heap_size_profiling_enabled Datadog.logger.warn( - 'Enabled experimental heap size profiling. This is experimental, not recommended, and will increase overhead!' + "Enabled experimental heap size profiling. This is experimental, not recommended, and will increase overhead!" ) true @@ -271,12 +253,13 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) private_class_method def self.no_signals_workaround_enabled?(settings) # rubocop:disable Metrics/MethodLength setting_value = settings.profiling.advanced.no_signals_workaround_enabled - legacy_ruby_that_should_use_workaround = RUBY_VERSION.start_with?('2.5.') + legacy_ruby_that_should_use_workaround = RUBY_VERSION.start_with?("2.5.") unless [true, false, :auto].include?(setting_value) + # TODO: Replace with a warning instead. Datadog.logger.error( "Ignoring invalid value for profiling no_signals_workaround_enabled setting: #{setting_value.inspect}. " \ - 'Valid options are `true`, `false` or (default) `:auto`.' + "Valid options are `true`, `false` or (default) `:auto`." ) setting_value = :auto @@ -286,10 +269,10 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) if legacy_ruby_that_should_use_workaround Datadog.logger.warn( 'The profiling "no signals" workaround has been disabled via configuration on a legacy Ruby version ' \ - '(< 2.6). This is not recommended ' \ - 'in production environments, as due to limitations in Ruby APIs, we suspect it may lead to crashes ' \ - 'in very rare situations. Please report any issues you run into to Datadog support or ' \ - 'via !' + "(< 2.6). This is not recommended " \ + "in production environments, as due to limitations in Ruby APIs, we suspect it may lead to crashes " \ + "in very rare situations. Please report any issues you run into to Datadog support or " \ + "via !" ) else Datadog.logger.warn('Profiling "no signals" workaround disabled via configuration') @@ -311,30 +294,30 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) # We don't warn users in this situation because "upgrade your Ruby" is not a great warning return true if legacy_ruby_that_should_use_workaround - if Gem.loaded_specs['mysql2'] && incompatible_libmysqlclient_version?(settings) + if Gem.loaded_specs["mysql2"] && incompatible_libmysqlclient_version?(settings) Datadog.logger.warn( 'Enabling the profiling "no signals" workaround because an incompatible version of the mysql2 gem is ' \ - 'installed. Profiling data will have lower quality. ' \ - 'To fix this, upgrade the libmysqlclient in your OS image to version 8.0.0 or above.' + "installed. Profiling data will have lower quality. " \ + "To fix this, upgrade the libmysqlclient in your OS image to version 8.0.0 or above." ) return true end - if Gem.loaded_specs['rugged'] + if Gem.loaded_specs["rugged"] Datadog.logger.warn( 'Enabling the profiling "no signals" workaround because the rugged gem is installed. ' \ - 'This is needed because some operations on this gem are currently incompatible with the normal working mode ' \ - 'of the profiler, as detailed in . ' \ - 'Profiling data will have lower quality.' + "This is needed because some operations on this gem are currently incompatible with the normal working mode " \ + "of the profiler, as detailed in . " \ + "Profiling data will have lower quality." ) return true end - if (defined?(::PhusionPassenger) || Gem.loaded_specs['passenger']) && incompatible_passenger_version? + if (defined?(::PhusionPassenger) || Gem.loaded_specs["passenger"]) && incompatible_passenger_version? Datadog.logger.warn( 'Enabling the profiling "no signals" workaround because an incompatible version of the passenger gem is ' \ - 'installed. Profiling data will have lower quality.' \ - 'To fix this, upgrade the passenger gem to version 6.0.19 or above.' + "installed. Profiling data will have lower quality." \ + "To fix this, upgrade the passenger gem to version 6.0.19 or above." ) return true end @@ -355,11 +338,11 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) return true if settings.profiling.advanced.skip_mysql2_check Datadog.logger.debug( - 'Requiring `mysql2` to check if the `libmysqlclient` version it uses is compatible with profiling' + "Requiring `mysql2` to check if the `libmysqlclient` version it uses is compatible with profiling" ) begin - require 'mysql2' + require "mysql2" # The mysql2-aurora gem likes to monkey patch itself in replacement of Mysql2::Client, and uses # `method_missing` to delegate to the original BUT unfortunately does not implement `respond_to_missing?` and @@ -380,18 +363,18 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) libmysqlclient_version = Gem::Version.new(info[:version]) compatible = - libmysqlclient_version >= Gem::Version.new('8.0.0') || + libmysqlclient_version >= Gem::Version.new("8.0.0") || looks_like_mariadb?(info, libmysqlclient_version) Datadog.logger.debug( - "The `mysql2` gem is using #{compatible ? 'a compatible' : 'an incompatible'} version of " \ + "The `mysql2` gem is using #{compatible ? "a compatible" : "an incompatible"} version of " \ "the `libmysqlclient` library (#{libmysqlclient_version})" ) !compatible rescue StandardError, LoadError => e Datadog.logger.warn( - 'Failed to probe `mysql2` gem information. ' \ + "Failed to probe `mysql2` gem information. " \ "Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}" ) @@ -401,10 +384,10 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) # See https://github.com/datadog/dd-trace-rb/issues/2976 for details. private_class_method def self.incompatible_passenger_version? - first_compatible_version = Gem::Version.new('6.0.19') + first_compatible_version = Gem::Version.new("6.0.19") - if Gem.loaded_specs['passenger'] - Gem.loaded_specs['passenger'].version < first_compatible_version + if Gem.loaded_specs["passenger"] + Gem.loaded_specs["passenger"].version < first_compatible_version elsif defined?(PhusionPassenger::VERSION_STRING) Gem::Version.new(PhusionPassenger::VERSION_STRING) < first_compatible_version else @@ -416,8 +399,9 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) if overhead_target_percentage > 0 && overhead_target_percentage <= 20 overhead_target_percentage else + # TODO: Replace with a warning instead. Datadog.logger.error( - 'Ignoring invalid value for profiling overhead_target_percentage setting: ' \ + "Ignoring invalid value for profiling overhead_target_percentage setting: " \ "#{overhead_target_percentage.inspect}. Falling back to default value." ) @@ -450,18 +434,29 @@ def self.build_profiler_component(settings:, agent_settings:, optional_tracer:) header_version = Gem::Version.new(info[:header_version]) if info[:header_version] !!(header_version && - libmysqlclient_version < Gem::Version.new('5.0.0') && - header_version >= Gem::Version.new('10.0.0')) + libmysqlclient_version < Gem::Version.new("5.0.0") && + header_version >= Gem::Version.new("10.0.0")) end private_class_method def self.dir_interruption_workaround_enabled?(settings, no_signals_workaround_enabled) - return false if no_signals_workaround_enabled - - # NOTE: In the future this method will evolve to check for Ruby versions affected and not apply the workaround - # when it's not needed but currently all known Ruby versions are affected. + return false if no_signals_workaround_enabled || RUBY_VERSION >= "3.4" settings.profiling.advanced.dir_interruption_workaround_enabled end + + private_class_method def self.enable_gvl_profiling?(settings) + if RUBY_VERSION < "3.2" + if settings.profiling.advanced.preview_gvl_enabled + Datadog.logger.warn("GVL profiling is currently not supported in Ruby < 3.2 and will not be enabled.") + end + + return false + end + + # GVL profiling only makes sense in the context of timeline. We could emit a warning here, but not sure how + # useful it is -- if a customer disables timeline, there's nowhere to look for GVL profiling anyway! + settings.profiling.advanced.timeline_enabled && settings.profiling.advanced.preview_gvl_enabled + end end end end diff --git a/lib/datadog/profiling/crashtracker.rb b/lib/datadog/profiling/crashtracker.rb deleted file mode 100644 index 00080bd8419..00000000000 --- a/lib/datadog/profiling/crashtracker.rb +++ /dev/null @@ -1,91 +0,0 @@ -# frozen_string_literal: true - -require 'libdatadog' - -module Datadog - module Profiling - # Used to report Ruby VM crashes. - # The interesting bits are implemented as native code and using libdatadog. - # - # NOTE: The crashtracker native state is a singleton; so even if you create multiple instances of `Crashtracker` - # and start them, it only works as "last writer wins". Same for stop -- there's only one state, so calling stop - # on it will stop the crash tracker, regardless of which instance started it. - # - # Methods prefixed with _native_ are implemented in `crashtracker.c` - class Crashtracker - private - - attr_reader \ - :exporter_configuration, - :tags_as_array, - :path_to_crashtracking_receiver_binary, - :ld_library_path, - :upload_timeout_seconds - - public - - def initialize( - exporter_configuration:, - tags:, - upload_timeout_seconds:, - path_to_crashtracking_receiver_binary: Libdatadog.path_to_crashtracking_receiver_binary, - ld_library_path: Libdatadog.ld_library_path - ) - @exporter_configuration = exporter_configuration - @tags_as_array = tags.to_a - @upload_timeout_seconds = upload_timeout_seconds - @path_to_crashtracking_receiver_binary = path_to_crashtracking_receiver_binary - @ld_library_path = ld_library_path - end - - def start - start_or_update_on_fork(action: :start) - end - - def reset_after_fork - start_or_update_on_fork(action: :update_on_fork) - end - - def stop - begin - self.class._native_stop - Datadog.logger.debug('Crash tracking stopped successfully') - rescue => e - Datadog.logger.error("Failed to stop crash tracking: #{e.message}") - end - end - - private - - def start_or_update_on_fork(action:) - unless path_to_crashtracking_receiver_binary - Datadog.logger.warn( - "Cannot #{action} profiling crash tracking as no path_to_crashtracking_receiver_binary was found" - ) - return - end - - unless ld_library_path - Datadog.logger.warn( - "Cannot #{action} profiling crash tracking as no ld_library_path was found" - ) - return - end - - begin - self.class._native_start_or_update_on_fork( - action: action, - exporter_configuration: exporter_configuration, - path_to_crashtracking_receiver_binary: path_to_crashtracking_receiver_binary, - ld_library_path: ld_library_path, - tags_as_array: tags_as_array, - upload_timeout_seconds: Integer(upload_timeout_seconds), - ) - Datadog.logger.debug("Crash tracking #{action} successful") - rescue => e - Datadog.logger.error("Failed to #{action} crash tracking: #{e.message}") - end - end - end - end -end diff --git a/lib/datadog/profiling/exporter.rb b/lib/datadog/profiling/exporter.rb index 1423a120b91..1f2ce3b6557 100644 --- a/lib/datadog/profiling/exporter.rb +++ b/lib/datadog/profiling/exporter.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true -require_relative 'ext' -require_relative 'tag_builder' +require_relative "ext" +require_relative "tag_builder" module Datadog module Profiling @@ -61,7 +61,7 @@ def flush @last_flush_finish_at = finish if duration_below_threshold?(start, finish) - Datadog.logger.debug('Skipped exporting profiling events as profile duration is below minimum') + Datadog.logger.debug("Skipped exporting profiling events as profile duration is below minimum") return end diff --git a/lib/datadog/profiling/ext.rb b/lib/datadog/profiling/ext.rb index 9dea808ddf0..40e32c2c8e2 100644 --- a/lib/datadog/profiling/ext.rb +++ b/lib/datadog/profiling/ext.rb @@ -3,31 +3,31 @@ module Datadog module Profiling module Ext - ENV_ENABLED = 'DD_PROFILING_ENABLED' - ENV_UPLOAD_TIMEOUT = 'DD_PROFILING_UPLOAD_TIMEOUT' - ENV_MAX_FRAMES = 'DD_PROFILING_MAX_FRAMES' - ENV_AGENTLESS = 'DD_PROFILING_AGENTLESS' - ENV_ENDPOINT_COLLECTION_ENABLED = 'DD_PROFILING_ENDPOINT_COLLECTION_ENABLED' + ENV_ENABLED = "DD_PROFILING_ENABLED" + ENV_UPLOAD_TIMEOUT = "DD_PROFILING_UPLOAD_TIMEOUT" + ENV_MAX_FRAMES = "DD_PROFILING_MAX_FRAMES" + ENV_AGENTLESS = "DD_PROFILING_AGENTLESS" + ENV_ENDPOINT_COLLECTION_ENABLED = "DD_PROFILING_ENDPOINT_COLLECTION_ENABLED" module Transport module HTTP - FORM_FIELD_TAG_ENV = 'env' - FORM_FIELD_TAG_HOST = 'host' - FORM_FIELD_TAG_LANGUAGE = 'language' - FORM_FIELD_TAG_PID = 'process_id' - FORM_FIELD_TAG_PROFILER_VERSION = 'profiler_version' - FORM_FIELD_TAG_RUNTIME = 'runtime' - FORM_FIELD_TAG_RUNTIME_ENGINE = 'runtime_engine' - FORM_FIELD_TAG_RUNTIME_ID = 'runtime-id' - FORM_FIELD_TAG_RUNTIME_PLATFORM = 'runtime_platform' - FORM_FIELD_TAG_RUNTIME_VERSION = 'runtime_version' - FORM_FIELD_TAG_SERVICE = 'service' - FORM_FIELD_TAG_VERSION = 'version' - TAG_GIT_REPOSITORY_URL = 'git.repository_url' - TAG_GIT_COMMIT_SHA = 'git.commit.sha' + FORM_FIELD_TAG_ENV = "env" + FORM_FIELD_TAG_HOST = "host" + FORM_FIELD_TAG_LANGUAGE = "language" + FORM_FIELD_TAG_PID = "process_id" + FORM_FIELD_TAG_PROFILER_VERSION = "profiler_version" + FORM_FIELD_TAG_RUNTIME = "runtime" + FORM_FIELD_TAG_RUNTIME_ENGINE = "runtime_engine" + FORM_FIELD_TAG_RUNTIME_ID = "runtime-id" + FORM_FIELD_TAG_RUNTIME_PLATFORM = "runtime_platform" + FORM_FIELD_TAG_RUNTIME_VERSION = "runtime_version" + FORM_FIELD_TAG_SERVICE = "service" + FORM_FIELD_TAG_VERSION = "version" + TAG_GIT_REPOSITORY_URL = "git.repository_url" + TAG_GIT_COMMIT_SHA = "git.commit.sha" - PPROF_DEFAULT_FILENAME = 'rubyprofile.pprof' - CODE_PROVENANCE_FILENAME = 'code-provenance.json' + PPROF_DEFAULT_FILENAME = "rubyprofile.pprof" + CODE_PROVENANCE_FILENAME = "code-provenance.json" end end end diff --git a/lib/datadog/profiling/ext/dir_monkey_patches.rb b/lib/datadog/profiling/ext/dir_monkey_patches.rb index efc34194055..75a7a31cc19 100644 --- a/lib/datadog/profiling/ext/dir_monkey_patches.rb +++ b/lib/datadog/profiling/ext/dir_monkey_patches.rb @@ -27,7 +27,7 @@ def self.apply! end end - if RUBY_VERSION.start_with?('2.') + if RUBY_VERSION.start_with?("2.") # Monkey patches for Dir.singleton_class (Ruby 2 version). See DirMonkeyPatches above for more details. module DirClassMonkeyPatches def [](*args, &block) @@ -260,7 +260,7 @@ def home(*args, **kwargs, &block) end end - if RUBY_VERSION.start_with?('2.') + if RUBY_VERSION.start_with?("2.") # Monkey patches for Dir (Ruby 2 version). See DirMonkeyPatches above for more details. module DirInstanceMonkeyPatches # See note on methods that yield above. @@ -286,7 +286,7 @@ def each(*args, &block) end end - unless RUBY_VERSION.start_with?('2.5.') # This is Ruby 2.6+ + unless RUBY_VERSION.start_with?("2.5.") # This is Ruby 2.6+ # See note on methods that yield above. def each_child(*args, &block) if block diff --git a/lib/datadog/profiling/ext/forking.rb b/lib/datadog/profiling/ext/forking.rb deleted file mode 100644 index 423df49f57a..00000000000 --- a/lib/datadog/profiling/ext/forking.rb +++ /dev/null @@ -1,98 +0,0 @@ -# frozen_string_literal: true - -module Datadog - module Profiling - module Ext - # Monkey patches `Kernel#fork`, adding a `Kernel#at_fork` callback mechanism which is used to restore - # profiling abilities after the VM forks. - # - # Known limitations: Does not handle `BasicObject`s that include `Kernel` directly; e.g. - # `Class.new(BasicObject) { include(::Kernel); def call; fork { }; end }.new.call`. - # - # This will be fixed once we moved to hooking into `Process._fork` - module Forking - def self.supported? - Process.respond_to?(:fork) - end - - def self.apply! - return false unless supported? - - [ - ::Process.singleton_class, # Process.fork - ::Kernel.singleton_class, # Kernel.fork - ::Object, # fork without explicit receiver (it's defined as a method in ::Kernel) - # Note: Modifying Object as we do here is irreversible. During tests, this - # change will stick around even if we otherwise stub `Process` and `Kernel` - ].each { |target| target.prepend(Kernel) } - - ::Process.singleton_class.prepend(ProcessDaemonPatch) - end - - # Extensions for kernel - # - # TODO: Consider hooking into `Process._fork` on Ruby 3.1+ instead, see - # https://github.com/ruby/ruby/pull/5017 and https://bugs.ruby-lang.org/issues/17795 - module Kernel - def fork - # If a block is provided, it must be wrapped to trigger callbacks. - child_block = if block_given? - proc do - # Trigger :child callback - datadog_at_fork_blocks[:child].each(&:call) if datadog_at_fork_blocks.key?(:child) - - # Invoke original block - yield - end - end - - # Start fork - # If a block is provided, use the wrapped version. - result = child_block.nil? ? super : super(&child_block) - - # Trigger correct callbacks depending on whether we're in the parent or child. - # If we're in the fork, result = nil: trigger child callbacks. - # If we're in the parent, result = fork PID: trigger parent callbacks. - datadog_at_fork_blocks[:child].each(&:call) if result.nil? && datadog_at_fork_blocks.key?(:child) - - # Return PID from #fork - result - end - - def at_fork(stage, &block) - raise ArgumentError, 'Bad \'stage\' for ::at_fork' unless stage == :child - - datadog_at_fork_blocks[stage] = [] unless datadog_at_fork_blocks.key?(stage) - datadog_at_fork_blocks[stage] << block - end - - module_function - - def datadog_at_fork_blocks - # Blocks should be shared across all users of this module, - # e.g. Process#fork, Kernel#fork, etc. should all invoke the same callbacks. - # rubocop:disable Style/ClassVars - @@datadog_at_fork_blocks ||= {} - # rubocop:enable Style/ClassVars - end - end - - # A call to Process.daemon ( https://rubyapi.org/3.1/o/process#method-c-daemon ) forks the current process and - # keeps executing code in the child process, killing off the parent, thus effectively replacing it. - # - # This monkey patch makes the `Kernel#at_fork` mechanism defined above also work in this situation. - module ProcessDaemonPatch - def daemon(*args) - datadog_at_fork_blocks = Datadog::Profiling::Ext::Forking::Kernel.datadog_at_fork_blocks - - result = super - - datadog_at_fork_blocks[:child].each(&:call) if datadog_at_fork_blocks.key?(:child) - - result - end - end - end - end - end -end diff --git a/lib/datadog/profiling/flush.rb b/lib/datadog/profiling/flush.rb index b8c93227247..2cd968ef9d8 100644 --- a/lib/datadog/profiling/flush.rb +++ b/lib/datadog/profiling/flush.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require 'json' +require "json" module Datadog module Profiling diff --git a/lib/datadog/profiling/http_transport.rb b/lib/datadog/profiling/http_transport.rb index 8b2f98bde7d..2c89c6548b7 100644 --- a/lib/datadog/profiling/http_transport.rb +++ b/lib/datadog/profiling/http_transport.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true -require_relative '../core/transport/ext' +require_relative "../core/transport/ext" +require_relative "../core/telemetry/logger" module Datadog module Profiling @@ -53,17 +54,21 @@ def export(flush) if status == :ok if (200..299).cover?(result) - Datadog.logger.debug('Successfully reported profiling data') + Datadog.logger.debug("Successfully reported profiling data") true else Datadog.logger.error( "Failed to report profiling data (#{config_without_api_key}): " \ "server returned unexpected HTTP #{result} status code" ) + Datadog::Core::Telemetry::Logger.error( + "Failed to report profiling data: unexpected HTTP #{result} status code" + ) false end else Datadog.logger.error("Failed to report profiling data (#{config_without_api_key}): #{result}") + Datadog::Core::Telemetry::Logger.error("Failed to report profiling data") false end end @@ -73,7 +78,7 @@ def export(flush) def base_url_from(agent_settings) case agent_settings.adapter when Datadog::Core::Configuration::Ext::Agent::HTTP::ADAPTER - "#{agent_settings.ssl ? 'https' : 'http'}://#{agent_settings.hostname}:#{agent_settings.port}/" + "#{agent_settings.ssl ? "https" : "http"}://#{agent_settings.hostname}:#{agent_settings.port}/" when Datadog::Core::Configuration::Ext::Agent::UnixSocket::ADAPTER "unix://#{agent_settings.uds_path}" else @@ -82,12 +87,14 @@ def base_url_from(agent_settings) end def validate_agent_settings(agent_settings) - supported_adapters = [Datadog::Core::Configuration::Ext::Agent::UnixSocket::ADAPTER, - Datadog::Core::Configuration::Ext::Agent::HTTP::ADAPTER] + supported_adapters = [ + Datadog::Core::Configuration::Ext::Agent::UnixSocket::ADAPTER, + Datadog::Core::Configuration::Ext::Agent::HTTP::ADAPTER + ] unless supported_adapters.include?(agent_settings.adapter) raise ArgumentError, "Unsupported transport configuration for profiling: Adapter #{agent_settings.adapter} " \ - ' is not supported' + " is not supported" end end @@ -132,7 +139,7 @@ def do_export( end def config_without_api_key - [exporter_configuration[0..1]].to_h + "#{exporter_configuration[0]}: #{exporter_configuration[1]}" end end end diff --git a/lib/datadog/profiling/load_native_extension.rb b/lib/datadog/profiling/load_native_extension.rb index 306f195d4dd..88b983792cf 100644 --- a/lib/datadog/profiling/load_native_extension.rb +++ b/lib/datadog/profiling/load_native_extension.rb @@ -15,26 +15,26 @@ require "datadog_profiling_loader.#{RUBY_VERSION}_#{RUBY_PLATFORM}" rescue LoadError => e raise LoadError, - 'Failed to load the profiling loader extension. To fix this, please remove and then reinstall datadog ' \ + "Failed to load the profiling loader extension. To fix this, please remove and then reinstall datadog " \ "(Details: #{e.message})" end extension_name = "datadog_profiling_native_extension.#{RUBY_VERSION}_#{RUBY_PLATFORM}" -file_name = "#{extension_name}.#{RbConfig::CONFIG['DLEXT']}" +file_name = "#{extension_name}.#{RbConfig::CONFIG["DLEXT"]}" full_file_path = "#{__dir__}/../../#{file_name}" unless File.exist?(full_file_path) - extension_dir = Gem.loaded_specs['datadog'].extension_dir + extension_dir = Gem.loaded_specs["datadog"].extension_dir candidate_path = "#{extension_dir}/#{file_name}" if File.exist?(candidate_path) full_file_path = candidate_path - else # rubocop:disable Style/EmptyElse + else # We found none of the files. This is unexpected. Let's go ahead anyway, the error is going to be reported further # down anyway. end end -init_function_name = "Init_#{extension_name.split('.').first}" +init_function_name = "Init_#{extension_name.split(".").first}" status, result = Datadog::Profiling::Loader._native_load(full_file_path, init_function_name) diff --git a/lib/datadog/profiling/preload.rb b/lib/datadog/profiling/preload.rb index 192b6e39416..1e5be627fd0 100644 --- a/lib/datadog/profiling/preload.rb +++ b/lib/datadog/profiling/preload.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true -require_relative '../../datadog' +require_relative "../../datadog" Datadog::Profiling.start_if_enabled diff --git a/lib/datadog/profiling/profiler.rb b/lib/datadog/profiling/profiler.rb index 3231eabc330..fcfb952d241 100644 --- a/lib/datadog/profiling/profiler.rb +++ b/lib/datadog/profiling/profiler.rb @@ -8,34 +8,30 @@ class Profiler private - attr_reader :worker, :scheduler, :optional_crashtracker + attr_reader :worker, :scheduler public - def initialize(worker:, scheduler:, optional_crashtracker:) + def initialize(worker:, scheduler:) @worker = worker @scheduler = scheduler - @optional_crashtracker = optional_crashtracker end def start after_fork! do - optional_crashtracker.reset_after_fork if optional_crashtracker worker.reset_after_fork scheduler.reset_after_fork end - optional_crashtracker.start if optional_crashtracker worker.start(on_failure_proc: proc { component_failed(:worker) }) scheduler.start(on_failure_proc: proc { component_failed(:scheduler) }) end def shutdown! - Datadog.logger.debug('Shutting down profiler') + Datadog.logger.debug("Shutting down profiler") stop_worker stop_scheduler - optional_crashtracker.stop if optional_crashtracker end private @@ -52,13 +48,14 @@ def stop_scheduler def component_failed(failed_component) Datadog.logger.warn( "Detected issue with profiler (#{failed_component} component), stopping profiling. " \ - 'See previous log messages for details.' + "See previous log messages for details." ) # We explicitly not stop the crash tracker in this situation, under the assumption that, if a component failed, # we're operating in a degraded state and crash tracking may still be helpful. if failed_component == :worker + scheduler.mark_profiler_failed stop_scheduler elsif failed_component == :scheduler stop_worker diff --git a/lib/datadog/profiling/scheduler.rb b/lib/datadog/profiling/scheduler.rb index 96da490b4e2..0a9cc43d2d5 100644 --- a/lib/datadog/profiling/scheduler.rb +++ b/lib/datadog/profiling/scheduler.rb @@ -1,9 +1,10 @@ # frozen_string_literal: true -require_relative '../core/utils/time' +require_relative "../core/utils/time" -require_relative '../core/worker' -require_relative '../core/workers/polling' +require_relative "../core/worker" +require_relative "../core/workers/polling" +require_relative "../core/telemetry/logger" module Datadog module Profiling @@ -22,7 +23,8 @@ class Scheduler < Core::Worker attr_reader \ :exporter, - :transport + :transport, + :profiler_failed public @@ -34,6 +36,7 @@ def initialize( ) @exporter = exporter @transport = transport + @profiler_failed = false # Workers::Async::Thread settings self.fork_policy = fork_policy @@ -50,25 +53,23 @@ def start(on_failure_proc: nil) end def perform(on_failure_proc) - begin - # A profiling flush may be called while the VM is shutting down, to report the last profile. When we do so, - # we impose a strict timeout. This means this last profile may or may not be sent, depending on if the flush can - # successfully finish in the strict timeout. - # This can be somewhat confusing (why did it not get reported?), so let's at least log what happened. - interrupted = true - - flush_and_wait - interrupted = false - rescue Exception => e # rubocop:disable Lint/RescueException - Datadog.logger.warn( - 'Profiling::Scheduler thread error. ' \ - "Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}" - ) - on_failure_proc&.call - raise - ensure - Datadog.logger.debug('#flush was interrupted or failed before it could complete') if interrupted - end + # A profiling flush may be called while the VM is shutting down, to report the last profile. When we do so, + # we impose a strict timeout. This means this last profile may or may not be sent, depending on if the flush can + # successfully finish in the strict timeout. + # This can be somewhat confusing (why did it not get reported?), so let's at least log what happened. + interrupted = true + + flush_and_wait + interrupted = false + rescue Exception => e # rubocop:disable Lint/RescueException + Datadog.logger.warn( + "Profiling::Scheduler thread error. " \ + "Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}" + ) + on_failure_proc&.call + raise + ensure + Datadog.logger.debug("#flush was interrupted or failed before it could complete") if interrupted end # Configure Workers::IntervalLoop to not report immediately when scheduler starts @@ -80,8 +81,14 @@ def loop_wait_before_first_iteration? true end + # This is called by the Profiler class whenever an issue happened in the profiler. This makes sure that even + # if there is data to be flushed, we don't try to flush it. + def mark_profiler_failed + @profiler_failed = true + end + def work_pending? - exporter.can_flush? + !profiler_failed && exporter.can_flush? end def reset_after_fork @@ -124,10 +131,11 @@ def flush_events begin transport.export(flush) - rescue StandardError => e + rescue => e Datadog.logger.error( "Unable to report profile. Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}" ) + Datadog::Core::Telemetry::Logger.report(e, description: "Unable to report profile") end true diff --git a/lib/datadog/profiling/stack_recorder.rb b/lib/datadog/profiling/stack_recorder.rb index d5ce0e7c359..2d463a66854 100644 --- a/lib/datadog/profiling/stack_recorder.rb +++ b/lib/datadog/profiling/stack_recorder.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require_relative "../core/telemetry/logger" + module Datadog module Profiling # Stores stack samples in a native libdatadog data structure and expose Ruby-level serialization APIs @@ -7,8 +9,13 @@ module Profiling # Methods prefixed with _native_ are implemented in `stack_recorder.c` class StackRecorder def initialize( - cpu_time_enabled:, alloc_samples_enabled:, heap_samples_enabled:, heap_size_enabled:, - heap_sample_every:, timeline_enabled: + cpu_time_enabled:, + alloc_samples_enabled:, + heap_samples_enabled:, + heap_size_enabled:, + heap_sample_every:, + timeline_enabled:, + heap_clean_after_gc_enabled: ) # This mutex works in addition to the fancy C-level mutexes we have in the native side (see the docs there). # It prevents multiple Ruby threads calling serialize at the same time -- something like @@ -19,13 +26,36 @@ def initialize( @no_concurrent_synchronize_mutex = Mutex.new self.class._native_initialize( - self, - cpu_time_enabled, - alloc_samples_enabled, - heap_samples_enabled, - heap_size_enabled, - heap_sample_every, - timeline_enabled, + self_instance: self, + cpu_time_enabled: cpu_time_enabled, + alloc_samples_enabled: alloc_samples_enabled, + heap_samples_enabled: heap_samples_enabled, + heap_size_enabled: heap_size_enabled, + heap_sample_every: heap_sample_every, + timeline_enabled: timeline_enabled, + heap_clean_after_gc_enabled: heap_clean_after_gc_enabled, + ) + end + + def self.for_testing( + cpu_time_enabled: true, + alloc_samples_enabled: false, + heap_samples_enabled: false, + heap_size_enabled: false, + heap_sample_every: 1, + timeline_enabled: false, + heap_clean_after_gc_enabled: true, + **options + ) + new( + cpu_time_enabled: cpu_time_enabled, + alloc_samples_enabled: alloc_samples_enabled, + heap_samples_enabled: heap_samples_enabled, + heap_size_enabled: heap_size_enabled, + heap_sample_every: heap_sample_every, + timeline_enabled: timeline_enabled, + heap_clean_after_gc_enabled: heap_clean_after_gc_enabled, + **options, ) end @@ -42,6 +72,7 @@ def serialize error_message = result Datadog.logger.error("Failed to serialize profiling data: #{error_message}") + Datadog::Core::Telemetry::Logger.error("Failed to serialize profiling data") nil end diff --git a/lib/datadog/profiling/tag_builder.rb b/lib/datadog/profiling/tag_builder.rb index 3f8cd07bfdb..a244b1c1719 100644 --- a/lib/datadog/profiling/tag_builder.rb +++ b/lib/datadog/profiling/tag_builder.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true -require_relative '../core/utils' -require_relative '../core/environment/git' +require_relative "../core/utils" +require_relative "../core/environment/git" module Datadog module Profiling diff --git a/lib/datadog/profiling/tasks/exec.rb b/lib/datadog/profiling/tasks/exec.rb index 42f5ca4774a..abf39bbf9c1 100644 --- a/lib/datadog/profiling/tasks/exec.rb +++ b/lib/datadog/profiling/tasks/exec.rb @@ -18,16 +18,16 @@ def run def rubyopts [ - '-rdatadog/profiling/preload' + "-rdatadog/profiling/preload" ] end private def set_rubyopt! - existing_rubyopt = ENV['RUBYOPT'] + existing_rubyopt = ENV["RUBYOPT"] - ENV['RUBYOPT'] = existing_rubyopt ? "#{existing_rubyopt} #{rubyopts.join(' ')}" : rubyopts.join(' ') + ENV["RUBYOPT"] = existing_rubyopt ? "#{existing_rubyopt} #{rubyopts.join(" ")}" : rubyopts.join(" ") end # If there's an error here, rather than throwing a cryptic stack trace, let's instead have clearer messages, and @@ -38,10 +38,10 @@ def set_rubyopt! def exec_with_error_handling(args) Kernel.exec(*args) rescue Errno::ENOENT => e - Kernel.warn "ddprofrb exec failed: #{e.class.name} #{e.message} (command was '#{args.join(' ')}')" + Kernel.warn "ddprofrb exec failed: #{e.class.name} #{e.message} (command was '#{args.join(" ")}')" Kernel.exit 127 rescue Errno::EACCES, Errno::ENOEXEC => e - Kernel.warn "ddprofrb exec failed: #{e.class.name} #{e.message} (command was '#{args.join(' ')}')" + Kernel.warn "ddprofrb exec failed: #{e.class.name} #{e.message} (command was '#{args.join(" ")}')" Kernel.exit 126 end end diff --git a/lib/datadog/profiling/tasks/setup.rb b/lib/datadog/profiling/tasks/setup.rb index 185bfec6807..9eccbf5b8f5 100644 --- a/lib/datadog/profiling/tasks/setup.rb +++ b/lib/datadog/profiling/tasks/setup.rb @@ -1,56 +1,37 @@ # frozen_string_literal: true -require_relative '../../core/utils/only_once' -require_relative '../ext/forking' +require_relative "../../core/utils/only_once" +require_relative "../../core/utils/at_fork_monkey_patch" module Datadog module Profiling module Tasks - # Takes care of loading our extensions/monkey patches to handle fork() and validating if CPU-time profiling is usable + # Takes care of restarting the profiler when the process forks class Setup ACTIVATE_EXTENSIONS_ONLY_ONCE = Core::Utils::OnlyOnce.new def run ACTIVATE_EXTENSIONS_ONLY_ONCE.run do - begin - activate_forking_extensions - setup_at_fork_hooks - rescue StandardError, ScriptError => e - Datadog.logger.warn do - "Profiler extensions unavailable. Cause: #{e.class.name} #{e.message} " \ - "Location: #{Array(e.backtrace).first}" - end + Datadog::Core::Utils::AtForkMonkeyPatch.apply! + setup_at_fork_hooks + rescue StandardError, ScriptError => e + Datadog.logger.warn do + "Profiler extensions unavailable. Cause: #{e.class.name} #{e.message} " \ + "Location: #{Array(e.backtrace).first}" end end end private - def activate_forking_extensions - if Ext::Forking.supported? - Ext::Forking.apply! - elsif Datadog.configuration.profiling.enabled - Datadog.logger.debug('Profiler forking extensions skipped; forking not supported.') - end - rescue StandardError, ScriptError => e - Datadog.logger.warn do - "Profiler forking extensions unavailable. Cause: #{e.class.name} #{e.message} " \ - "Location: #{Array(e.backtrace).first}" - end - end - def setup_at_fork_hooks - if Process.respond_to?(:at_fork) - Process.at_fork(:child) do - begin - # Restart profiler, if enabled - Profiling.start_if_enabled - rescue StandardError => e - Datadog.logger.warn do - "Error during post-fork hooks. Cause: #{e.class.name} #{e.message} " \ - "Location: #{Array(e.backtrace).first}" - end - end + Datadog::Core::Utils::AtForkMonkeyPatch.at_fork(:child) do + # Restart profiler, if enabled + Profiling.start_if_enabled + rescue => e + Datadog.logger.warn do + "Error during post-fork hooks. Cause: #{e.class.name} #{e.message} " \ + "Location: #{Array(e.backtrace).first}" end end end diff --git a/lib/datadog/single_step_instrument.rb b/lib/datadog/single_step_instrument.rb new file mode 100644 index 00000000000..91d75e1bc43 --- /dev/null +++ b/lib/datadog/single_step_instrument.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +# +# Entrypoint file for single step instrumentation. +# +# This file's path is private. Do not reference this file. +# +begin + require_relative 'auto_instrument' +rescue StandardError, LoadError => e + warn "Single step instrumentation failed: #{e.class}:#{e.message}\n\tSource:\n\t#{Array(e.backtrace).join("\n\t")}" +end diff --git a/lib/datadog/tracing/component.rb b/lib/datadog/tracing/component.rb index 96c91ad48f2..34744e53ef6 100644 --- a/lib/datadog/tracing/component.rb +++ b/lib/datadog/tracing/component.rb @@ -73,6 +73,19 @@ def build_sampler(settings) return sampler end + # AppSec events are sent to the backend using traces. + # Standalone ASM billing means that we don't want to charge clients for APM traces, + # so we want to send the minimum amount of traces possible (idealy only traces that contains security events), + # but for features such as API Security, we need to send at least one trace per minute, + # to keep the service alive on the backend side. + if settings.appsec.standalone.enabled + post_sampler = Tracing::Sampling::RuleSampler.new( + [Tracing::Sampling::SimpleRule.new(sample_rate: 1.0)], + rate_limiter: Datadog::Core::TokenBucket.new(1.0 / 60, 1.0), + default_sample_rate: 1.0 / 60 + ) + end + # Sampling rules are provided if (rules = settings.tracing.sampling.rules) post_sampler = Tracing::Sampling::RuleSampler.parse( diff --git a/lib/datadog/tracing/contrib/action_cable/instrumentation.rb b/lib/datadog/tracing/contrib/action_cable/instrumentation.rb index 5978fc17761..2baea187f23 100644 --- a/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +++ b/lib/datadog/tracing/contrib/action_cable/instrumentation.rb @@ -14,21 +14,17 @@ module Instrumentation module ActionCableConnection def on_open Tracing.trace(Ext::SPAN_ON_OPEN) do |span, trace| - begin - span.resource = "#{self.class}#on_open" - span.type = Tracing::Metadata::Ext::AppTypes::TYPE_WEB + span.resource = "#{self.class}#on_open" + span.type = Tracing::Metadata::Ext::AppTypes::TYPE_WEB - span.set_tag(Ext::TAG_ACTION, 'on_open') - span.set_tag(Ext::TAG_CONNECTION, self.class.to_s) + span.set_tag(Ext::TAG_ACTION, 'on_open') + span.set_tag(Ext::TAG_CONNECTION, self.class.to_s) - span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) - span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ON_OPEN) + span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) + span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ON_OPEN) - # Set the resource name of the trace - trace.resource = span.resource - rescue StandardError => e - Datadog.logger.error("Error preparing span for ActionCable::Connection: #{e}") - end + # Set the resource name of the trace + trace.resource = span.resource super end diff --git a/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb b/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb index 33427bdef7c..80e462e4a42 100644 --- a/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +++ b/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb @@ -7,6 +7,7 @@ require_relative '../utils' require_relative '../../rack/middlewares' require_relative '../../analytics' +require_relative '../../../../core/telemetry/logger' module Datadog module Tracing @@ -43,6 +44,7 @@ def start_processing(payload) span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_CONTROLLER) rescue StandardError => e Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) end def finish_processing(payload) @@ -81,10 +83,13 @@ def finish_processing(payload) end rescue StandardError => e Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) end # Instrumentation for ActionController::Metal module Metal + # TODO: Refactor this method to avoid using async API that splits the logic + # into two different methods (`start_processing` and `finish_processing`) def process_action(*args) # mutable payload with a tracing context that is used in two different # signals; it propagates the request span so that it can be finished diff --git a/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb b/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb new file mode 100644 index 00000000000..d18ff8e2ca1 --- /dev/null +++ b/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb @@ -0,0 +1,78 @@ +# frozen_string_literal: true + +require_relative '../../../metadata/ext' + +module Datadog + module Tracing + module Contrib + module ActionPack + module ActionDispatch + # Instrumentation for ActionDispatch components + module Instrumentation + module_function + + def set_http_route_tags(route_spec, script_name) + return unless Tracing.enabled? + + return unless route_spec + + request_trace = Tracing.active_trace + return unless request_trace + + request_trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, route_spec.to_s.gsub(/\(.:format\)\z/, '')) + + if script_name && !script_name.empty? + request_trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, script_name) + end + end + + def dispatcher_route?(route) + return true if route.dispatcher? + + # in Rails 4 there is no #rack_app method on the app + return true if route.app.respond_to?(:rack_app) && !route.app.rack_app.nil? + + false + end + + # Instrumentation for ActionDispatch::Journey components + module Journey + # Instrumentation for ActionDispatch::Journey::Router for Rails versions older than 7.1 + module Router + def find_routes(req) + result = super + + # result is an array of [match, parameters, route] tuples + routes = result.map(&:last) + + routes.each do |route| + if Instrumentation.dispatcher_route?(route) + Instrumentation.set_http_route_tags(route.path.spec, req.env['SCRIPT_NAME']) + break + end + end + + result + end + end + + # Since Rails 7.1 `Router#find_routes` makes the route computation lazy + # https://github.com/rails/rails/commit/35b280fcc2d5d474f9f2be3aca3ae7aa6bba66eb + module LazyRouter + def find_routes(req) + super do |match, parameters, route| + if Instrumentation.dispatcher_route?(route) + Instrumentation.set_http_route_tags(route.path.spec, req.env['SCRIPT_NAME']) + end + + yield [match, parameters, route] + end + end + end + end + end + end + end + end + end +end diff --git a/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb b/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb new file mode 100644 index 00000000000..bb371f81d2d --- /dev/null +++ b/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require_relative '../../patcher' +require_relative 'instrumentation' + +module Datadog + module Tracing + module Contrib + module ActionPack + module ActionDispatch + # Patcher for ActionController components + module Patcher + include Contrib::Patcher + + module_function + + def target_version + Integration.version + end + + def patch + if ::ActionPack.gem_version >= Gem::Version.new('7.1') + ::ActionDispatch::Journey::Router.prepend(ActionDispatch::Instrumentation::Journey::LazyRouter) + else + ::ActionDispatch::Journey::Router.prepend(ActionDispatch::Instrumentation::Journey::Router) + end + end + end + end + end + end + end +end diff --git a/lib/datadog/tracing/contrib/action_pack/patcher.rb b/lib/datadog/tracing/contrib/action_pack/patcher.rb index c124718921d..ebab1741813 100644 --- a/lib/datadog/tracing/contrib/action_pack/patcher.rb +++ b/lib/datadog/tracing/contrib/action_pack/patcher.rb @@ -2,6 +2,7 @@ require_relative '../patcher' require_relative 'action_controller/patcher' +require_relative 'action_dispatch/patcher' module Datadog module Tracing @@ -19,6 +20,7 @@ def target_version def patch ActionController::Patcher.patch + ActionDispatch::Patcher.patch end end end diff --git a/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb b/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb index c64a06d5b01..04fb6de57e2 100644 --- a/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +++ b/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb @@ -2,6 +2,7 @@ require_relative '../../configuration/resolver' require_relative 'makara_resolver' +require_relative '../../../../core/telemetry/logger' module Datadog module Tracing @@ -72,10 +73,12 @@ def resolve(db_config) # # `db_config` input may contain sensitive information such as passwords, # hence provide a succinct summary for the error logging. + # Datadog.logger.error( 'Failed to resolve ActiveRecord database configuration. '\ "Cause: #{e.class.name} Source: #{Array(e.backtrace).first}" ) + Core::Telemetry::Logger.report(e, description: 'Failed to resolve ActiveRecord database configuration') nil end @@ -95,6 +98,7 @@ def parse_matcher(matcher) "Failed to resolve key #{matcher.inspect}. " \ "Cause: #{e.class.name} Source: #{Array(e.backtrace).first}" ) + Core::Telemetry::Logger.report(e, description: 'Failed to resolve key') nil end diff --git a/lib/datadog/tracing/contrib/active_record/events/instantiation.rb b/lib/datadog/tracing/contrib/active_record/events/instantiation.rb index 0d0cf07b6cc..fb0d4465f53 100644 --- a/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +++ b/lib/datadog/tracing/contrib/active_record/events/instantiation.rb @@ -4,6 +4,7 @@ require_relative '../../analytics' require_relative '../ext' require_relative '../event' +require_relative '../../../../core/telemetry/logger' module Datadog module Tracing @@ -48,7 +49,8 @@ def on_start(span, event, _id, payload) span.set_tag(Ext::TAG_INSTANTIATION_CLASS_NAME, payload.fetch(:class_name)) span.set_tag(Ext::TAG_INSTANTIATION_RECORD_COUNT, payload.fetch(:record_count)) rescue StandardError => e - Datadog.logger.debug(e.message) + Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) end end end diff --git a/lib/datadog/tracing/contrib/active_record/events/sql.rb b/lib/datadog/tracing/contrib/active_record/events/sql.rb index 1e1c1a87382..8640ac43aa9 100644 --- a/lib/datadog/tracing/contrib/active_record/events/sql.rb +++ b/lib/datadog/tracing/contrib/active_record/events/sql.rb @@ -6,6 +6,7 @@ require_relative '../ext' require_relative '../../analytics' require_relative '../../utils/database' +require_relative '../../../../core/telemetry/logger' module Datadog module Tracing @@ -68,7 +69,8 @@ def on_start(span, event, _id, payload) span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, config[:host]) if config[:host] span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, config[:port]) if config[:port] rescue StandardError => e - Datadog.logger.debug(e.message) + Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) end end end diff --git a/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb b/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb index 2abec4c1d26..0b8820c8fec 100644 --- a/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +++ b/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb @@ -2,6 +2,7 @@ require_relative '../../ext' require_relative '../event' +require_relative '../../../../../core/telemetry/logger' module Datadog module Tracing @@ -64,7 +65,7 @@ def on_start(span, event, _id, payload) key = payload[:key] store = payload[:store] - mapping = MAPPING[event] + mapping = MAPPING.fetch(event) span.service = configuration[:cache_service] span.resource = mapping[:resource] @@ -81,6 +82,9 @@ def on_start(span, event, _id, payload) span.set_tag('EVENT', event) set_cache_key(span, key, mapping[:multi_key]) + rescue StandardError => e + Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) end def set_cache_key(span, key, multi_key) diff --git a/lib/datadog/tracing/contrib/aws/instrumentation.rb b/lib/datadog/tracing/contrib/aws/instrumentation.rb index 7194ef9ae01..a19ea684877 100644 --- a/lib/datadog/tracing/contrib/aws/instrumentation.rb +++ b/lib/datadog/tracing/contrib/aws/instrumentation.rb @@ -29,6 +29,7 @@ def call(context) private # rubocop:disable Metrics/AbcSize + # rubocop:disable Metrics/MethodLength def annotate!(span, context) span.service = configuration[:service_name] span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND @@ -76,7 +77,11 @@ def annotate!(span, context) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, context.safely(:status_code)) Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES) + rescue StandardError => e + Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) end + # rubocop:enable Metrics/MethodLength # rubocop:enable Metrics/AbcSize def configuration diff --git a/lib/datadog/tracing/contrib/elasticsearch/patcher.rb b/lib/datadog/tracing/contrib/elasticsearch/patcher.rb index 87388f0f5f7..92dbfe30612 100644 --- a/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +++ b/lib/datadog/tracing/contrib/elasticsearch/patcher.rb @@ -93,11 +93,16 @@ def perform_request(*args) span.resource = "#{method} #{quantized_url}" Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES) rescue StandardError => e + # TODO: Refactor the code to streamline the execution without ensure Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) ensure # the call is still executed response = super - span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, response.status) + + if response && response.respond_to?(:status) + span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, response.status) + end end end response diff --git a/lib/datadog/tracing/contrib/ethon/easy_patch.rb b/lib/datadog/tracing/contrib/ethon/easy_patch.rb index af661e86b0c..72e2c104f6b 100644 --- a/lib/datadog/tracing/contrib/ethon/easy_patch.rb +++ b/lib/datadog/tracing/contrib/ethon/easy_patch.rb @@ -110,6 +110,10 @@ def datadog_before_request(continue_from: nil) datadog_tag_request + if Datadog::AppSec::Utils::TraceOperation.appsec_standalone_reject?(datadog_trace) + datadog_trace.sampling_priority = Tracing::Sampling::Ext::Priority::AUTO_REJECT + end + if datadog_configuration[:distributed_tracing] @datadog_original_headers ||= {} Contrib::HTTP.inject(datadog_trace, @datadog_original_headers) diff --git a/lib/datadog/tracing/contrib/excon/middleware.rb b/lib/datadog/tracing/contrib/excon/middleware.rb index e25ee1941cd..9bb3f8629ef 100644 --- a/lib/datadog/tracing/contrib/excon/middleware.rb +++ b/lib/datadog/tracing/contrib/excon/middleware.rb @@ -30,6 +30,9 @@ def request_call(datum) trace = Tracing.active_trace datum[:datadog_span] = span annotate!(span, datum) + if Datadog::AppSec::Utils::TraceOperation.appsec_standalone_reject?(trace) + trace.sampling_priority = Tracing::Sampling::Ext::Priority::AUTO_REJECT + end propagate!(trace, span, datum) if distributed_tracing? span diff --git a/lib/datadog/tracing/contrib/faraday/middleware.rb b/lib/datadog/tracing/contrib/faraday/middleware.rb index 1134fb9379a..0795ba29b2c 100644 --- a/lib/datadog/tracing/contrib/faraday/middleware.rb +++ b/lib/datadog/tracing/contrib/faraday/middleware.rb @@ -7,6 +7,7 @@ require_relative '../analytics' require_relative 'ext' require_relative '../http_annotation_helper' +require_relative '../../../core/telemetry/logger' module Datadog module Tracing @@ -28,6 +29,9 @@ def call(env) Tracing.trace(Ext::SPAN_REQUEST, on_error: request_options[:on_error]) do |span, trace| annotate!(span, env, request_options) + if Datadog::AppSec::Utils::TraceOperation.appsec_standalone_reject?(trace) + trace.sampling_priority = Tracing::Sampling::Ext::Priority::AUTO_REJECT + end propagate!(trace, span, env) if request_options[:distributed_tracing] && Tracing.enabled? app.call(env).on_complete { |resp| handle_response(span, resp, request_options) } end @@ -37,6 +41,7 @@ def call(env) attr_reader :app + # rubocop:disable Metrics/AbcSize def annotate!(span, env, options) span.resource = resource_name(env) span.service = service_name(env[:url].host, options) @@ -75,7 +80,11 @@ def annotate!(span, env, options) ) Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES) + rescue StandardError => e + Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) end + # rubocop:enable Metrics/AbcSize def handle_response(span, env, options) span.set_error(["Error #{env[:status]}", env[:body]]) if options[:error_status_codes].include? env[:status] @@ -85,6 +94,9 @@ def handle_response(span, env, options) span.set_tags( Datadog.configuration.tracing.header_tags.response_tags(env[:response_headers]) ) + rescue StandardError => e + Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) end def propagate!(trace, span, env) diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index 834a0ce1da7..1473585a422 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require_relative '../../../core' +require_relative '../../../core/telemetry/logger' require_relative '../../metadata/ext' require_relative '../analytics' require_relative '../rack/ext' @@ -41,6 +42,7 @@ def endpoint_start_process(_name, _start, _finish, _id, payload) # collect endpoint details endpoint = payload.fetch(:endpoint) + env = payload.fetch(:env) api_view = api_view(endpoint.options[:for]) request_method = endpoint.options.fetch(:method).first path = endpoint_expand_path(endpoint) @@ -61,9 +63,22 @@ def endpoint_start_process(_name, _start, _finish, _id, payload) span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ENDPOINT_RUN) + if (grape_route = env['grape.routing_args']) && grape_route[:route_info] + trace.set_tag( + Tracing::Metadata::Ext::HTTP::TAG_ROUTE, + # here we are removing the format from the path: + # e.g. /path/to/resource(.json) => /path/to/resource + # e.g. /path/to/resource(.:format) => /path/to/resource + grape_route[:route_info].path&.gsub(/\(\.:?\w+\)\z/, '') + ) + + trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, env['SCRIPT_NAME']) + end + Thread.current[KEY_RUN] = true rescue StandardError => e Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) end def endpoint_run(name, start, finish, id, payload) @@ -107,6 +122,7 @@ def endpoint_run(name, start, finish, id, payload) end rescue StandardError => e Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) end # Status code resolution is tied to the exception handling @@ -150,6 +166,7 @@ def endpoint_start_render(*) Thread.current[KEY_RENDER] = true rescue StandardError => e Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) end def endpoint_render(name, start, finish, id, payload) @@ -174,6 +191,7 @@ def endpoint_render(name, start, finish, id, payload) end rescue StandardError => e Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) end def endpoint_run_filters(name, start, finish, id, payload) @@ -212,6 +230,7 @@ def endpoint_run_filters(name, start, finish, id, payload) end rescue StandardError => e Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) end private diff --git a/lib/datadog/tracing/contrib/graphql/patcher.rb b/lib/datadog/tracing/contrib/graphql/patcher.rb index b473b999ff5..36c1e736be5 100644 --- a/lib/datadog/tracing/contrib/graphql/patcher.rb +++ b/lib/datadog/tracing/contrib/graphql/patcher.rb @@ -21,13 +21,18 @@ def target_version end def patch + # DEV-3.0: We should remove as many patching options as possible, given the alternatives do not + # DEV-3.0: provide any benefit to the recommended `with_unified_tracer` patching method. + # DEV-3.0: `with_deprecated_tracer` is likely safe to remove. + # DEV-3.0: `with_unified_tracer: false` should be removed if possible. + # DEV-3.0: `with_unified_tracer: true` should be the default and hopefully not even necessary as an option. if configuration[:with_deprecated_tracer] - TracingPatcher.patch!(schemas, trace_options) + TracingPatcher.patch!(schemas) elsif Integration.trace_supported? if configuration[:with_unified_tracer] - UnifiedTracePatcher.patch!(schemas, trace_options) + UnifiedTracePatcher.patch!(schemas) else - TracePatcher.patch!(schemas, trace_options) + TracePatcher.patch!(schemas) end else Datadog.logger.warn( @@ -35,18 +40,10 @@ def patch 'or Datadog::Tracing::Contrib::GraphQL::UnifiedTrace.'\ 'Falling back to GraphQL::Tracing::DataDogTracing.' ) - TracingPatcher.patch!(schemas, trace_options) + TracingPatcher.patch!(schemas) end end - def trace_options - { - service: configuration[:service_name], - analytics_enabled: Contrib::Analytics.enabled?(configuration[:analytics_enabled]), - analytics_sample_rate: configuration[:analytics_sample_rate] - } - end - def configuration Datadog.configuration.tracing[:graphql] end diff --git a/lib/datadog/tracing/contrib/graphql/trace_patcher.rb b/lib/datadog/tracing/contrib/graphql/trace_patcher.rb index ea4d90797e7..dfc00dc0d01 100644 --- a/lib/datadog/tracing/contrib/graphql/trace_patcher.rb +++ b/lib/datadog/tracing/contrib/graphql/trace_patcher.rb @@ -8,12 +8,12 @@ module GraphQL module TracePatcher module_function - def patch!(schemas, options) + def patch!(schemas) if schemas.empty? - ::GraphQL::Schema.trace_with(::GraphQL::Tracing::DataDogTrace, **options) + ::GraphQL::Schema.trace_with(::GraphQL::Tracing::DataDogTrace) else schemas.each do |schema| - schema.trace_with(::GraphQL::Tracing::DataDogTrace, **options) + schema.trace_with(::GraphQL::Tracing::DataDogTrace) end end end diff --git a/lib/datadog/tracing/contrib/graphql/tracing_patcher.rb b/lib/datadog/tracing/contrib/graphql/tracing_patcher.rb index 9a662c0c30c..d43de7f3d79 100644 --- a/lib/datadog/tracing/contrib/graphql/tracing_patcher.rb +++ b/lib/datadog/tracing/contrib/graphql/tracing_patcher.rb @@ -8,13 +8,13 @@ module GraphQL module TracingPatcher module_function - def patch!(schemas, options) + def patch!(schemas) if schemas.empty? - ::GraphQL::Schema.tracer(::GraphQL::Tracing::DataDogTracing.new(**options)) + ::GraphQL::Schema.tracer(::GraphQL::Tracing::DataDogTracing.new) else schemas.each do |schema| if schema.respond_to? :use - schema.use(::GraphQL::Tracing::DataDogTracing, **options) + schema.use(::GraphQL::Tracing::DataDogTracing) else Datadog.logger.warn("Unable to patch #{schema}: Please migrate to class-based schema.") end diff --git a/lib/datadog/tracing/contrib/graphql/unified_trace.rb b/lib/datadog/tracing/contrib/graphql/unified_trace.rb index 1f4ba8f73e8..12ea44b5940 100644 --- a/lib/datadog/tracing/contrib/graphql/unified_trace.rb +++ b/lib/datadog/tracing/contrib/graphql/unified_trace.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require 'graphql/tracing' +require 'graphql' module Datadog module Tracing @@ -11,14 +11,7 @@ module GraphQL # which is required to use features such as API Catalog. # DEV-3.0: This tracer should be the default one in the next major version. module UnifiedTrace - # @param analytics_enabled [Boolean] Deprecated - # @param analytics_sample_rate [Float] Deprecated - # @param service [String|nil] The service name to be set on the spans - def initialize(*args, analytics_enabled: false, analytics_sample_rate: 1.0, service: nil, **kwargs) - @analytics_enabled = analytics_enabled - @analytics_sample_rate = analytics_sample_rate - - @service_name = service + def initialize(*args, **kwargs) @has_prepare_span = respond_to?(:prepare_span) super end @@ -139,7 +132,18 @@ def platform_resolve_type_key(type, *args, **kwargs) private def trace(callable, trace_key, resource, **kwargs) - Tracing.trace("graphql.#{trace_key}", resource: resource, service: @service_name, type: 'graphql') do |span| + config = Datadog.configuration.tracing[:graphql] + + Tracing.trace( + "graphql.#{trace_key}", + type: 'graphql', + resource: resource, + service: config[:service_name] + ) do |span| + if Contrib::Analytics.enabled?(config[:analytics_enabled]) + Contrib::Analytics.set_sample_rate(span, config[:analytics_sample_rate]) + end + yield(span) if block_given? prepare_span(trace_key, kwargs, span) if @has_prepare_span diff --git a/lib/datadog/tracing/contrib/graphql/unified_trace_patcher.rb b/lib/datadog/tracing/contrib/graphql/unified_trace_patcher.rb index 0d3b1d33d79..9959f8733e0 100644 --- a/lib/datadog/tracing/contrib/graphql/unified_trace_patcher.rb +++ b/lib/datadog/tracing/contrib/graphql/unified_trace_patcher.rb @@ -1,5 +1,9 @@ # frozen_string_literal: true +if Gem.loaded_specs['graphql'] && Gem.loaded_specs['graphql'].version >= Gem::Version.new('2.0.19') + require_relative 'unified_trace' +end + module Datadog module Tracing module Contrib @@ -8,13 +12,15 @@ module GraphQL module UnifiedTracePatcher module_function - def patch!(schemas, options) - require_relative 'unified_trace' + # TODO: `GraphQL::Schema.trace_with` and `YOUR_SCHEMA.trace_with` don't mix. + # TODO: They create duplicate spans when combined. + # TODO: We should measure how frequently users use `YOUR_SCHEMA.trace_with`, and hopefully we can remove it. + def patch!(schemas) if schemas.empty? - ::GraphQL::Schema.trace_with(UnifiedTrace, **options) + ::GraphQL::Schema.trace_with(UnifiedTrace) else schemas.each do |schema| - schema.trace_with(UnifiedTrace, **options) + schema.trace_with(UnifiedTrace) end end end diff --git a/lib/datadog/tracing/contrib/http/circuit_breaker.rb b/lib/datadog/tracing/contrib/http/circuit_breaker.rb index ffa8e164ce8..d35ceda5a3e 100644 --- a/lib/datadog/tracing/contrib/http/circuit_breaker.rb +++ b/lib/datadog/tracing/contrib/http/circuit_breaker.rb @@ -29,6 +29,15 @@ def internal_request?(request) end def should_skip_distributed_tracing?(client_config) + if Datadog.configuration.appsec.standalone.enabled + # Skip distributed tracing so that we don't bill distributed traces in case of absence of + # upstream ASM event (_dd.p.appsec:1) and no local security event (which sets _dd.p.appsec:1 locally). + # If there is an ASM event, we still have to check if distributed tracing is enabled or not + return true unless Tracing.active_trace + + return true if Tracing.active_trace.get_tag(Datadog::AppSec::Ext::TAG_DISTRIBUTED_APPSEC_EVENT) != '1' + end + return !client_config[:distributed_tracing] if client_config && client_config.key?(:distributed_tracing) !Datadog.configuration.tracing[:http][:distributed_tracing] diff --git a/lib/datadog/tracing/contrib/http/instrumentation.rb b/lib/datadog/tracing/contrib/http/instrumentation.rb index 0ec94183c87..b913a7d41dd 100644 --- a/lib/datadog/tracing/contrib/http/instrumentation.rb +++ b/lib/datadog/tracing/contrib/http/instrumentation.rb @@ -6,6 +6,7 @@ require_relative '../analytics' require_relative '../http_annotation_helper' require_relative '../utils/quantization/http' +require_relative '../../../core/telemetry/logger' module Datadog module Tracing @@ -30,23 +31,23 @@ def request(req, body = nil, &block) return super(req, body, &block) if Contrib::HTTP.should_skip_tracing?(req) Tracing.trace(Ext::SPAN_REQUEST, on_error: method(:annotate_span_with_error!)) do |span, trace| - begin - span.service = service_name(host, request_options, client_config) - span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND - span.resource = req.method - - if Tracing.enabled? && !Contrib::HTTP.should_skip_distributed_tracing?(client_config) - Contrib::HTTP.inject(trace, req) - end - - # Add additional request specific tags to the span. - annotate_span_with_request!(span, req, request_options) - rescue StandardError => e - Datadog.logger.error("error preparing span for http request: #{e}") - ensure - response = super(req, body, &block) + span.service = service_name(host, request_options, client_config) + span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND + span.resource = req.method + + if Datadog::AppSec::Utils::TraceOperation.appsec_standalone_reject?(trace) + trace.sampling_priority = Tracing::Sampling::Ext::Priority::AUTO_REJECT + end + + if Tracing.enabled? && !Contrib::HTTP.should_skip_distributed_tracing?(client_config) + Contrib::HTTP.inject(trace, req) end + # Add additional request specific tags to the span. + annotate_span_with_request!(span, req, request_options) + + response = super(req, body, &block) + # Add additional response specific tags to the span. annotate_span_with_response!(span, response, request_options) @@ -91,6 +92,9 @@ def annotate_span_with_request!(span, request, request_options) ) Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES) + rescue StandardError => e + Datadog.logger.error("error preparing span from http request: #{e}") + Datadog::Core::Telemetry::Logger.report(e) end def annotate_span_with_response!(span, response, request_options) @@ -103,6 +107,9 @@ def annotate_span_with_response!(span, response, request_options) span.set_tags( Datadog.configuration.tracing.header_tags.response_tags(response) ) + rescue StandardError => e + Datadog.logger.error("error preparing span from http response: #{e}") + Datadog::Core::Telemetry::Logger.report(e) end def annotate_span_with_error!(span, error) diff --git a/lib/datadog/tracing/contrib/httpclient/instrumentation.rb b/lib/datadog/tracing/contrib/httpclient/instrumentation.rb index 31097c7ae63..15c218bf333 100644 --- a/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +++ b/lib/datadog/tracing/contrib/httpclient/instrumentation.rb @@ -4,6 +4,7 @@ require_relative '../http' require_relative '../analytics' require_relative '../http_annotation_helper' +require_relative '../../../core/telemetry/logger' module Datadog module Tracing @@ -29,6 +30,10 @@ def do_get_block(req, proxy, conn, &block) span.service = service_name(host, request_options, client_config) span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND + if Datadog::AppSec::Utils::TraceOperation.appsec_standalone_reject?(trace) + trace.sampling_priority = Tracing::Sampling::Ext::Priority::AUTO_REJECT + end + if Tracing.enabled? && !should_skip_distributed_tracing?(client_config) Contrib::HTTP.inject(trace, req.header) end @@ -36,7 +41,8 @@ def do_get_block(req, proxy, conn, &block) # Add additional request specific tags to the span. annotate_span_with_request!(span, req, request_options) rescue StandardError => e - logger.error("error preparing span for httpclient request: #{e}, Source: #{e.backtrace}") + Datadog.logger.error("error preparing span for httpclient request: #{e}, Source: #{e.backtrace}") + Datadog::Core::Telemetry::Logger.report(e) ensure res = super end @@ -100,6 +106,9 @@ def annotate_span_with_response!(span, response, request_options) span.set_tags( Datadog.configuration.tracing.header_tags.response_tags(response.header) ) + rescue StandardError => e + Datadog.logger.error("error preparing span from httpclient response: #{e}, Source: #{e.backtrace}") + Datadog::Core::Telemetry::Logger.report(e) end def annotate_span_with_error!(span, error) @@ -114,10 +123,6 @@ def analytics_enabled?(request_options) Contrib::Analytics.enabled?(request_options[:analytics_enabled]) end - def logger - Datadog.logger - end - def should_skip_distributed_tracing?(client_config) return !client_config[:distributed_tracing] if client_config && client_config.key?(:distributed_tracing) diff --git a/lib/datadog/tracing/contrib/httpclient/patcher.rb b/lib/datadog/tracing/contrib/httpclient/patcher.rb index 1d6a4934a17..cd1779a3ce5 100644 --- a/lib/datadog/tracing/contrib/httpclient/patcher.rb +++ b/lib/datadog/tracing/contrib/httpclient/patcher.rb @@ -13,27 +13,14 @@ module Httpclient module Patcher include Contrib::Patcher - PATCH_ONLY_ONCE = Core::Utils::OnlyOnce.new - module_function - def patched? - PATCH_ONLY_ONCE.ran? - end - def target_version Integration.version end - # patch applies our patch def patch - PATCH_ONLY_ONCE.run do - begin - ::HTTPClient.include(Instrumentation) - rescue StandardError => e - Datadog.logger.error("Unable to apply httpclient integration: #{e}") - end - end + ::HTTPClient.include(Instrumentation) end end end diff --git a/lib/datadog/tracing/contrib/httprb/instrumentation.rb b/lib/datadog/tracing/contrib/httprb/instrumentation.rb index dcd6fffba01..7d0a11e7ff9 100644 --- a/lib/datadog/tracing/contrib/httprb/instrumentation.rb +++ b/lib/datadog/tracing/contrib/httprb/instrumentation.rb @@ -4,6 +4,7 @@ require_relative '../http' require_relative '../analytics' require_relative '../http_annotation_helper' +require_relative '../../../core/telemetry/logger' module Datadog module Tracing @@ -29,12 +30,17 @@ def perform(req, options) span.service = service_name(host, request_options, client_config) span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND + if Datadog::AppSec::Utils::TraceOperation.appsec_standalone_reject?(trace) + trace.sampling_priority = Tracing::Sampling::Ext::Priority::AUTO_REJECT + end + Contrib::HTTP.inject(trace, req) if Tracing.enabled? && !should_skip_distributed_tracing?(client_config) # Add additional request specific tags to the span. annotate_span_with_request!(span, req, request_options) rescue StandardError => e logger.error("error preparing span for http.rb request: #{e}, Source: #{e.backtrace}") + Datadog::Core::Telemetry::Logger.report(e) ensure res = super(req, options) end @@ -108,6 +114,9 @@ def annotate_span_with_response!(span, response, request_options) span.set_tags( Datadog.configuration.tracing.header_tags.response_tags(response.headers) ) + rescue StandardError => e + logger.error("error preparing span from http.rb response: #{e}, Source: #{e.backtrace}") + Datadog::Core::Telemetry::Logger.report(e) end def annotate_span_with_error!(span, error) diff --git a/lib/datadog/tracing/contrib/httprb/patcher.rb b/lib/datadog/tracing/contrib/httprb/patcher.rb index e07fa54f0aa..509c645a892 100644 --- a/lib/datadog/tracing/contrib/httprb/patcher.rb +++ b/lib/datadog/tracing/contrib/httprb/patcher.rb @@ -13,27 +13,14 @@ module Httprb module Patcher include Contrib::Patcher - PATCH_ONLY_ONCE = Core::Utils::OnlyOnce.new - module_function - def patched? - PATCH_ONLY_ONCE.ran? - end - def target_version Integration.version end - # patch applies our patch def patch - PATCH_ONLY_ONCE.run do - begin - ::HTTP::Client.include(Instrumentation) - rescue StandardError => e - Datadog.logger.error("Unable to apply httprb integration: #{e}") - end - end + ::HTTP::Client.include(Instrumentation) end end end diff --git a/lib/datadog/tracing/contrib/lograge/patcher.rb b/lib/datadog/tracing/contrib/lograge/patcher.rb index e27bc8bbfa2..0045c894930 100644 --- a/lib/datadog/tracing/contrib/lograge/patcher.rb +++ b/lib/datadog/tracing/contrib/lograge/patcher.rb @@ -20,6 +20,21 @@ def target_version # patch applies our patch def patch + # ActiveSupport::TaggedLogging is the default Rails logger since Rails 5 + if defined?(::ActiveSupport::TaggedLogging::Formatter) && + ::Lograge::LogSubscribers::ActionController + .logger&.formatter.is_a?(::ActiveSupport::TaggedLogging::Formatter) + Datadog.logger.warn( + 'Lograge and ActiveSupport::TaggedLogging (the default Rails log formatter) are not compatible: ' \ + 'Lograge does not account for Rails log tags, creating polluted logs and breaking log formatting. ' \ + 'Traces and Logs correlation may not work. ' \ + 'Either: 1. Disable tagged logging in your Rails configuration ' \ + '`config.logger = ActiveSupport::Logger.new(STDOUT); ' \ + 'config.active_job.logger = ActiveSupport::Logger.new(STDOUT)` ' \ + 'or 2. Use the `semantic_logger` gem instead of `lograge`.' + ) + end + ::Lograge::LogSubscribers::Base.include(Instrumentation) end end diff --git a/lib/datadog/tracing/contrib/mongodb/subscribers.rb b/lib/datadog/tracing/contrib/mongodb/subscribers.rb index 06e67add3ef..fe34da1ad9e 100644 --- a/lib/datadog/tracing/contrib/mongodb/subscribers.rb +++ b/lib/datadog/tracing/contrib/mongodb/subscribers.rb @@ -70,6 +70,8 @@ def started(event) # set the resource with the quantized query span.resource = serialized_query + rescue StandardError => e + Datadog.logger.debug("error when handling MongoDB 'started' event: #{e}") end # rubocop:enable Metrics/AbcSize diff --git a/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb b/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb index 6451ebe8789..125d9fa4056 100644 --- a/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +++ b/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb @@ -48,6 +48,11 @@ class Settings < Contrib::Configuration::Settings o.default Contrib::Propagation::SqlComment::Ext::DISABLED end + option :append_comment do |o| + o.type :bool + o.default false + end + option :peer_service do |o| o.type :string, nilable: true o.env Ext::ENV_PEER_SERVICE diff --git a/lib/datadog/tracing/contrib/mysql2/instrumentation.rb b/lib/datadog/tracing/contrib/mysql2/instrumentation.rb index e58286730c4..974a3ae3031 100644 --- a/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +++ b/lib/datadog/tracing/contrib/mysql2/instrumentation.rb @@ -57,15 +57,7 @@ def query(sql, options = {}) Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES) - propagation_mode = Contrib::Propagation::SqlComment::Mode.new(comment_propagation) - - Contrib::Propagation::SqlComment.annotate!(span, propagation_mode) - sql = Contrib::Propagation::SqlComment.prepend_comment( - sql, - span, - trace_op, - propagation_mode - ) + sql = inject_propagation(span, sql, trace_op) super(sql, options) end @@ -73,6 +65,21 @@ def query(sql, options = {}) private + def inject_propagation(span, sql, trace_op) + propagation_mode = Contrib::Propagation::SqlComment::Mode.new( + datadog_configuration[:comment_propagation], + datadog_configuration[:append_comment] + ) + + Contrib::Propagation::SqlComment.annotate!(span, propagation_mode) + Contrib::Propagation::SqlComment.prepend_comment( + sql, + span, + trace_op, + propagation_mode + ) + end + def datadog_configuration Datadog.configuration.tracing[:mysql2] end @@ -84,10 +91,6 @@ def analytics_enabled? def analytics_sample_rate datadog_configuration[:analytics_sample_rate] end - - def comment_propagation - datadog_configuration[:comment_propagation] - end end end end diff --git a/lib/datadog/tracing/contrib/opensearch/patcher.rb b/lib/datadog/tracing/contrib/opensearch/patcher.rb index 8766d827247..1bb4134df85 100644 --- a/lib/datadog/tracing/contrib/opensearch/patcher.rb +++ b/lib/datadog/tracing/contrib/opensearch/patcher.rb @@ -6,6 +6,7 @@ require_relative '../ext' require_relative '../integration' require_relative '../patcher' +require_relative '../../../core/telemetry/logger' module Datadog module Tracing @@ -81,6 +82,8 @@ def perform_request(method, path, params = {}, body = nil, headers = nil) Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES) rescue StandardError => e Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) + # TODO: Refactor the code to streamline the execution without ensure ensure begin response = super @@ -90,12 +93,16 @@ def perform_request(method, path, params = {}, body = nil, headers = nil) raise end # Set post-response tags - span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, response.status) - if response.headers['content-length'] - span.set_tag( - OpenSearch::Ext::TAG_RESPONSE_CONTENT_LENGTH, - response.headers['content-length'].to_i - ) + if response + if response.respond_to?(:status) + span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, response.status) + end + if response.respond_to?(:headers) && (response.headers || {})['content-length'] + span.set_tag( + OpenSearch::Ext::TAG_RESPONSE_CONTENT_LENGTH, + response.headers['content-length'].to_i + ) + end end end end diff --git a/lib/datadog/tracing/contrib/patcher.rb b/lib/datadog/tracing/contrib/patcher.rb index 5bec3dd4bc2..85156da3cef 100644 --- a/lib/datadog/tracing/contrib/patcher.rb +++ b/lib/datadog/tracing/contrib/patcher.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require_relative '../../core/utils/only_once' +require_relative '../../core/telemetry/logger' module Datadog module Tracing @@ -49,8 +50,8 @@ def patch # Processes patching errors. This default implementation logs the error and reports relevant metrics. # @param e [Exception] def on_patch_error(e) - # Log the error Datadog.logger.error("Failed to apply #{patch_name} patch. Cause: #{e} Location: #{Array(e.backtrace).first}") + Datadog::Core::Telemetry::Logger.report(e, description: "Failed to apply #{patch_name} patch") @patch_error_result = { type: e.class.name, diff --git a/lib/datadog/tracing/contrib/pg/configuration/settings.rb b/lib/datadog/tracing/contrib/pg/configuration/settings.rb index b14b859036d..99c93655cdd 100644 --- a/lib/datadog/tracing/contrib/pg/configuration/settings.rb +++ b/lib/datadog/tracing/contrib/pg/configuration/settings.rb @@ -52,6 +52,11 @@ class Settings < Contrib::Configuration::Settings o.default Contrib::Propagation::SqlComment::Ext::DISABLED end + option :append_comment do |o| + o.type :bool + o.default false + end + option :peer_service do |o| o.type :string, nilable: true o.env Ext::ENV_PEER_SERVICE diff --git a/lib/datadog/tracing/contrib/pg/instrumentation.rb b/lib/datadog/tracing/contrib/pg/instrumentation.rb index b42a9f1b08c..01e4198f149 100644 --- a/lib/datadog/tracing/contrib/pg/instrumentation.rb +++ b/lib/datadog/tracing/contrib/pg/instrumentation.rb @@ -114,7 +114,10 @@ def trace(name, sql: nil, statement_name: nil, block: nil) Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled? if sql - propagation_mode = Contrib::Propagation::SqlComment::Mode.new(comment_propagation) + propagation_mode = Contrib::Propagation::SqlComment::Mode.new( + comment_propagation, + datadog_configuration[:append_comment] + ) Contrib::Propagation::SqlComment.annotate!(span, propagation_mode) propagated_sql_statement = Contrib::Propagation::SqlComment.prepend_comment( sql, diff --git a/lib/datadog/tracing/contrib/presto/patcher.rb b/lib/datadog/tracing/contrib/presto/patcher.rb index b05441012bf..4070f05a248 100644 --- a/lib/datadog/tracing/contrib/presto/patcher.rb +++ b/lib/datadog/tracing/contrib/presto/patcher.rb @@ -13,22 +13,10 @@ module Presto module Patcher include Contrib::Patcher - PATCH_ONLY_ONCE = Core::Utils::OnlyOnce.new - module_function - def patched? - PATCH_ONLY_ONCE.ran? - end - def patch - PATCH_ONLY_ONCE.run do - begin - ::Presto::Client::Client.include(Instrumentation::Client) - rescue StandardError => e - Datadog.logger.error("Unable to apply Presto integration: #{e}") - end - end + ::Presto::Client::Client.include(Instrumentation::Client) end end end diff --git a/lib/datadog/tracing/contrib/propagation/sql_comment.rb b/lib/datadog/tracing/contrib/propagation/sql_comment.rb index fd557489331..62765f026ec 100644 --- a/lib/datadog/tracing/contrib/propagation/sql_comment.rb +++ b/lib/datadog/tracing/contrib/propagation/sql_comment.rb @@ -22,13 +22,15 @@ def self.annotate!(span_op, mode) def self.prepend_comment(sql, span_op, trace_op, mode) return sql unless mode.enabled? - parent_service = datadog_configuration.service + config = Datadog.configuration + + parent_service = config.service peer_service = span_op.get_tag(Tracing::Metadata::Ext::TAG_PEER_SERVICE) tags = { - Ext::KEY_ENVIRONMENT => datadog_configuration.env, + Ext::KEY_ENVIRONMENT => config.env, Ext::KEY_PARENT_SERVICE => parent_service, - Ext::KEY_VERSION => datadog_configuration.version, + Ext::KEY_VERSION => config.version, Ext::KEY_HOSTNAME => span_op.get_tag(Tracing::Metadata::Ext::TAG_PEER_HOSTNAME), Ext::KEY_DB_NAME => span_op.get_tag(Contrib::Ext::DB::TAG_INSTANCE), Ext::KEY_PEER_SERVICE => peer_service, @@ -41,7 +43,7 @@ def self.prepend_comment(sql, span_op, trace_op, mode) if mode.full? # When tracing is disabled, trace_operation is a dummy object that does not contain data to build traceparent - if datadog_configuration.tracing.enabled + if config.tracing.enabled tags[Ext::KEY_TRACEPARENT] = Tracing::Distributed::TraceContext.new(fetcher: nil).send(:build_traceparent, trace_op.to_digest) else @@ -52,11 +54,11 @@ def self.prepend_comment(sql, span_op, trace_op, mode) end end - "#{Comment.new(tags)} #{sql}" - end - - def self.datadog_configuration - Datadog.configuration + if mode.append? + "#{sql} #{Comment.new(tags)}" + else + "#{Comment.new(tags)} #{sql}" + end end end end diff --git a/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb b/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb index 39ae1461c72..6f909e28537 100644 --- a/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +++ b/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb @@ -8,7 +8,7 @@ module Contrib module Propagation # Implements sql comment propagation related contracts. module SqlComment - Mode = Struct.new(:mode) do + Mode = Struct.new(:mode, :append) do def enabled? service? || full? end @@ -20,6 +20,10 @@ def service? def full? mode == Ext::FULL end + + def append? + append + end end end end diff --git a/lib/datadog/tracing/contrib/rack/middlewares.rb b/lib/datadog/tracing/contrib/rack/middlewares.rb index 6ac74e13719..fc2662c95ca 100644 --- a/lib/datadog/tracing/contrib/rack/middlewares.rb +++ b/lib/datadog/tracing/contrib/rack/middlewares.rb @@ -138,6 +138,29 @@ def set_request_tags!(trace, request_span, env, status, headers, response, origi request_span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_REQUEST) request_span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_SERVER) + if status != 404 && (last_route = trace.get_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + last_script_name = trace.get_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH) || '' + + # If the last_script_name is empty but the env['SCRIPT_NAME'] is NOT empty + # then the current rack request was not routed and must be accounted for + # which only happens in pure nested rack requests i.e /rack/rack/hello/world + # + # To account for the unaccounted nested rack requests of /rack/hello/world, + # we use 'PATH_INFO knowing that rack cannot have named parameters + if last_script_name == '' && env['SCRIPT_NAME'] && env['SCRIPT_NAME'] != '' + last_script_name = last_route + last_route = env['PATH_INFO'] + end + + # Clear the route and route path tags from the request trace to avoid possibility of misplacement + trace.clear_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE) + trace.clear_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH) + + # Ensure tags are placed in rack.request span as desired + request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, last_script_name + last_route) + request_span.clear_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH) + end + # Set analytics sample rate if Contrib::Analytics.enabled?(configuration[:analytics_enabled]) Contrib::Analytics.set_sample_rate(request_span, configuration[:analytics_sample_rate]) @@ -195,6 +218,10 @@ def set_request_tags!(trace, request_span, env, status, headers, response, origi request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_USER_AGENT, user_agent) end + if request_span.get_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE).nil? && status != 404 + request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, env['PATH_INFO']) + end + HeaderTagging.tag_request_headers(request_span, request_header_collection, configuration) HeaderTagging.tag_response_headers(request_span, headers, configuration) if headers diff --git a/lib/datadog/tracing/contrib/rails/runner.rb b/lib/datadog/tracing/contrib/rails/runner.rb index 79920d5b707..c6461c63a08 100644 --- a/lib/datadog/tracing/contrib/rails/runner.rb +++ b/lib/datadog/tracing/contrib/rails/runner.rb @@ -58,7 +58,7 @@ def runner(code_or_file = nil, *_command_argv) # Capture the executed source code when provided from STDIN. def eval(*args) span = Datadog::Tracing.active_span - if span.name == Ext::SPAN_RUNNER_STDIN + if span&.name == Ext::SPAN_RUNNER_STDIN source = args[0] span.set_tag( Ext::TAG_RUNNER_SOURCE, diff --git a/lib/datadog/tracing/contrib/redis/tags.rb b/lib/datadog/tracing/contrib/redis/tags.rb index 6e8feb49029..98de54f41a9 100644 --- a/lib/datadog/tracing/contrib/redis/tags.rb +++ b/lib/datadog/tracing/contrib/redis/tags.rb @@ -4,6 +4,7 @@ require_relative '../analytics' require_relative 'ext' require_relative '../ext' +require_relative '../../../core/telemetry/logger' module Datadog module Tracing @@ -45,6 +46,9 @@ def set_common_tags(client, span, raw_command) span.set_tag Ext::TAG_RAW_COMMAND, raw_command Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES) + rescue StandardError => e + Datadog.logger.error(e.message) + Datadog::Core::Telemetry::Logger.report(e) end private diff --git a/lib/datadog/tracing/contrib/rest_client/request_patch.rb b/lib/datadog/tracing/contrib/rest_client/request_patch.rb index cabb1b73161..4f340c5356d 100644 --- a/lib/datadog/tracing/contrib/rest_client/request_patch.rb +++ b/lib/datadog/tracing/contrib/rest_client/request_patch.rb @@ -25,6 +25,9 @@ def execute(&block) return super(&block) unless Tracing.enabled? datadog_trace_request(uri) do |_span, trace| + if Datadog::AppSec::Utils::TraceOperation.appsec_standalone_reject?(trace) + trace.sampling_priority = Tracing::Sampling::Ext::Priority::AUTO_REJECT + end Contrib::HTTP.inject(trace, processed_headers) if datadog_configuration[:distributed_tracing] super(&block) diff --git a/lib/datadog/tracing/contrib/sinatra/tracer.rb b/lib/datadog/tracing/contrib/sinatra/tracer.rb index 4c535c0c8c8..36b823933e8 100644 --- a/lib/datadog/tracing/contrib/sinatra/tracer.rb +++ b/lib/datadog/tracing/contrib/sinatra/tracer.rb @@ -69,6 +69,10 @@ def route_eval trace.resource = span.resource + _, path = env['sinatra.route'].split(' ', 2) + trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, path) + trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, env['SCRIPT_NAME']) + sinatra_request_span = Sinatra::Env.datadog_span(env) sinatra_request_span.resource = span.resource diff --git a/lib/datadog/tracing/contrib/stripe/request.rb b/lib/datadog/tracing/contrib/stripe/request.rb index a05a52cd4c2..ac295b3af4c 100644 --- a/lib/datadog/tracing/contrib/stripe/request.rb +++ b/lib/datadog/tracing/contrib/stripe/request.rb @@ -47,8 +47,9 @@ def tag_span(span, event) # Measure service stats Contrib::Analytics.set_measured(span) - - span.set_tag(Ext::TAG_REQUEST_ID, event.request_id) + # `5.38.0` Add request_id to RequestEndEvent + # https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md#5380---2021-08-10 + span.set_tag(Ext::TAG_REQUEST_ID, event.request_id) if event.respond_to?(:request_id) span.set_tag(Ext::TAG_REQUEST_HTTP_STATUS, event.http_status.to_s) span.set_tag(Ext::TAG_REQUEST_METHOD, event.method) span.set_tag(Ext::TAG_REQUEST_PATH, event.path) diff --git a/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb b/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb index 811d1cd1c1c..c3705504055 100644 --- a/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +++ b/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb @@ -46,6 +46,11 @@ class Settings < Contrib::Configuration::Settings o.default Contrib::Propagation::SqlComment::Ext::DISABLED end + option :append_comment do |o| + o.type :bool + o.default false + end + option :peer_service do |o| o.type :string, nilable: true o.env Ext::ENV_PEER_SERVICE diff --git a/lib/datadog/tracing/contrib/trilogy/instrumentation.rb b/lib/datadog/tracing/contrib/trilogy/instrumentation.rb index df31995f4d7..c5de53619dd 100644 --- a/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +++ b/lib/datadog/tracing/contrib/trilogy/instrumentation.rb @@ -56,7 +56,9 @@ def query(sql) Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES) - propagation_mode = Contrib::Propagation::SqlComment::Mode.new(comment_propagation) + propagation_mode = Contrib::Propagation::SqlComment::Mode.new( + comment_propagation, datadog_configuration[:append_comment] + ) Contrib::Propagation::SqlComment.annotate!(span, propagation_mode) sql = Contrib::Propagation::SqlComment.prepend_comment( diff --git a/lib/datadog/tracing/distributed/propagation.rb b/lib/datadog/tracing/distributed/propagation.rb index 2c56b441220..9ad8b63ee35 100644 --- a/lib/datadog/tracing/distributed/propagation.rb +++ b/lib/datadog/tracing/distributed/propagation.rb @@ -3,6 +3,7 @@ require_relative '../configuration/ext' require_relative '../trace_digest' require_relative '../trace_operation' +require_relative '../../core/telemetry/logger' module Datadog module Tracing @@ -43,6 +44,7 @@ def initialize( # DEV-2.0: if needed. # DEV-2.0: Ideally, we'd have a separate stream to report tracer errors and never # DEV-2.0: touch the active span. + # DEV-3.0: Sample trace here instead of when generating digest. # # @param digest [TraceDigest] # @param data [Hash] @@ -72,6 +74,10 @@ def inject!(digest, data) ::Datadog.logger.error( "Error injecting distributed trace data. Cause: #{e} Location: #{Array(e.backtrace).first}" ) + ::Datadog::Core::Telemetry::Logger.report( + e, + description: "Error injecting distributed trace data with #{propagator.class.name}" + ) end result @@ -127,6 +133,7 @@ def extract(data) ) end rescue => e + # TODO: Not to report Telemetry logs for now ::Datadog.logger.error( "Error extracting distributed trace data. Cause: #{e} Location: #{Array(e.backtrace).first}" ) diff --git a/lib/datadog/tracing/metadata/errors.rb b/lib/datadog/tracing/metadata/errors.rb index 22773c60328..2fd8129b2ff 100644 --- a/lib/datadog/tracing/metadata/errors.rb +++ b/lib/datadog/tracing/metadata/errors.rb @@ -10,6 +10,14 @@ module Metadata # Adds error tagging behavior # @public_api module Errors + def set_error(e) + Datadog::Core.log_deprecation do + 'Errors.set_error(..) is deprecated. ' \ + 'Use Errors.set_error_tags(..) instead.' + end + set_error_tags(e) + end + # Mark the span with the given error. def set_error_tags(e) e = Core::Error.build_from(e) diff --git a/lib/datadog/tracing/metadata/ext.rb b/lib/datadog/tracing/metadata/ext.rb index 02b87b86877..95cf3d4e7f0 100644 --- a/lib/datadog/tracing/metadata/ext.rb +++ b/lib/datadog/tracing/metadata/ext.rb @@ -87,6 +87,8 @@ module HTTP TAG_STATUS_CODE = 'http.status_code' TAG_USER_AGENT = 'http.useragent' TAG_URL = 'http.url' + TAG_ROUTE = 'http.route' + TAG_ROUTE_PATH = 'http.route.path' TYPE_INBOUND = AppTypes::TYPE_WEB.freeze TYPE_OUTBOUND = 'http' TYPE_PROXY = 'proxy' diff --git a/lib/datadog/tracing/pipeline/span_filter.rb b/lib/datadog/tracing/pipeline/span_filter.rb index 494978fe7e6..74b1c562a76 100644 --- a/lib/datadog/tracing/pipeline/span_filter.rb +++ b/lib/datadog/tracing/pipeline/span_filter.rb @@ -10,8 +10,8 @@ module Pipeline # This processor executes the configured `operation` for each {Datadog::Tracing::Span} # in a {Datadog::Tracing::TraceSegment}. # - # If `operation` returns a truthy value for a span, that span is kept, - # otherwise the span is removed from the trace. + # If `operation` returns a truthy value for a span, that span is dropped, + # otherwise the span is kept. # # @public_api class SpanFilter < SpanProcessor diff --git a/lib/datadog/tracing/remote.rb b/lib/datadog/tracing/remote.rb index ebef54cbf31..459a8276417 100644 --- a/lib/datadog/tracing/remote.rb +++ b/lib/datadog/tracing/remote.rb @@ -13,7 +13,10 @@ class << self PRODUCT = 'APM_TRACING' CAPABILITIES = [ - 1 << 29 # APM_TRACING_SAMPLE_RULES: Dynamic trace sampling rules configuration + 1 << 12, # APM_TRACING_SAMPLE_RATE: Dynamic trace sampling rate configuration + 1 << 13, # APM_TRACING_LOGS_INJECTION: Dynamic trace logs injection configuration + 1 << 14, # APM_TRACING_HTTP_HEADER_TAGS: Dynamic trace HTTP header tags configuration + 1 << 29, # APM_TRACING_SAMPLE_RULES: Dynamic trace sampling rules configuration ].freeze def products @@ -45,7 +48,7 @@ def process_config(config, content) content.errored("#{e.class.name} #{e.message}: #{Array(e.backtrace).join("\n")}") end - def receivers + def receivers(_telemetry) receiver do |repository, _changes| # DEV: Filter our by product. Given it will be very common # DEV: we can filter this out before we receive the data in this method. diff --git a/lib/datadog/tracing/sampling/matcher.rb b/lib/datadog/tracing/sampling/matcher.rb index 4bca551c40e..27347322200 100644 --- a/lib/datadog/tracing/sampling/matcher.rb +++ b/lib/datadog/tracing/sampling/matcher.rb @@ -28,7 +28,7 @@ def match?(trace) # @return [#match?(String)] def self.glob_to_regex(glob) # Optimization for match-all case - return MATCH_ALL if glob == MATCH_ALL_PATTERN + return MATCH_ALL if /\A\*+\z/.match?(glob) # Ensure no undesired characters are treated as regex. glob = Regexp.quote(glob) @@ -100,6 +100,11 @@ def tags_match?(trace) @tags.all? do |name, matcher| tag = trace.get_tag(name) + # Floats: Matching floating point values with a non-zero decimal part is not supported. + # For floating point values with a non-zero decimal part, any all * pattern always returns true. + # Other patterns always return false. + return false if tag.is_a?(Float) && tag.truncate != tag && matcher != MATCH_ALL + # Format metrics as strings, to allow for partial number matching (/4.*/ matching '400', '404', etc.). # Because metrics are floats, we use the '%g' format specifier to avoid trailing zeros, which # can affect exact string matching (e.g. '400' matching '400.0'). diff --git a/lib/datadog/tracing/sampling/rate_limiter.rb b/lib/datadog/tracing/sampling/rate_limiter.rb deleted file mode 100644 index 40424f146fc..00000000000 --- a/lib/datadog/tracing/sampling/rate_limiter.rb +++ /dev/null @@ -1,185 +0,0 @@ -# frozen_string_literal: true - -require_relative '../../core/utils/time' - -module Datadog - module Tracing - module Sampling - # Checks for rate limiting on a resource. - class RateLimiter - # Checks if resource of specified size can be - # conforms with the current limit. - # - # Implementations of this method are not guaranteed - # to be side-effect free. - # - # @return [Boolean] whether a resource conforms with the current limit - def allow?(size); end - - # The effective rate limiting ratio based on - # recent calls to `allow?`. - # - # @return [Float] recent allowance ratio - def effective_rate; end - end - - # Implementation of the Token Bucket metering algorithm - # for rate limiting. - # - # @see https://en.wikipedia.org/wiki/Token_bucket Token bucket - class TokenBucket < RateLimiter - attr_reader :rate, :max_tokens - - # @param rate [Numeric] Allowance rate, in units per second - # if rate is negative, always allow - # if rate is zero, never allow - # @param max_tokens [Numeric] Limit of available tokens - def initialize(rate, max_tokens = rate) - super() - - raise ArgumentError, "rate must be a number: #{rate}" unless rate.is_a?(Numeric) - raise ArgumentError, "max_tokens must be a number: #{max_tokens}" unless max_tokens.is_a?(Numeric) - - @rate = rate - @max_tokens = max_tokens - - @tokens = max_tokens - @total_messages = 0 - @conforming_messages = 0 - @prev_conforming_messages = nil - @prev_total_messages = nil - @current_window = nil - - @last_refill = Core::Utils::Time.get_time - end - - # Checks if a message of provided +size+ - # conforms with the current bucket limit. - # - # If it does, return +true+ and remove +size+ - # tokens from the bucket. - # If it does not, return +false+ without affecting - # the tokens from the bucket. - # - # @return [Boolean] +true+ if message conforms with current bucket limit - def allow?(size) - allowed = should_allow?(size) - update_rate_counts(allowed) - allowed - end - - # Ratio of 'conformance' per 'total messages' checked - # averaged for the past 2 buckets - # - # Returns +1.0+ when no messages have been checked yet. - # - # @return [Float] Conformance ratio, between +[0,1]+ - def effective_rate - return 0.0 if @rate.zero? - return 1.0 if @rate < 0 || @total_messages.zero? - - return current_window_rate if @prev_conforming_messages.nil? || @prev_total_messages.nil? - - (@conforming_messages.to_f + @prev_conforming_messages.to_f) / (@total_messages + @prev_total_messages) - end - - # Ratio of 'conformance' per 'total messages' checked - # on this bucket - # - # Returns +1.0+ when no messages have been checked yet. - # - # @return [Float] Conformance ratio, between +[0,1]+ - def current_window_rate - return 1.0 if @total_messages.zero? - - @conforming_messages.to_f / @total_messages - end - - # @return [Numeric] number of tokens currently available - def available_tokens - @tokens - end - - private - - def refill_since_last_message - now = Core::Utils::Time.get_time - elapsed = now - @last_refill - - # Update the number of available tokens, but ensure we do not exceed the max - # we return the min of tokens + rate*elapsed, or max tokens - refill_tokens(@rate * elapsed) - - @last_refill = now - end - - def refill_tokens(size) - @tokens += size - @tokens = @max_tokens if @tokens > @max_tokens - end - - def increment_total_count - @total_messages += 1 - end - - def increment_conforming_count - @conforming_messages += 1 - end - - def should_allow?(size) - # rate limit of 0 blocks everything - return false if @rate.zero? - - # negative rate limit disables rate limiting - return true if @rate < 0 - - refill_since_last_message - - # if tokens < 1 we don't allow? - return false if @tokens < size - - @tokens -= size - - true - end - - # Sets and Updates the past two 1 second windows for which - # the rate limiter must compute it's rate over and updates - # the total count, and conforming message count if +allowed+ - def update_rate_counts(allowed) - now = Core::Utils::Time.get_time - - # No tokens have been seen yet, start a new window - if @current_window.nil? - @current_window = now - # If more than 1 second has past since last window, reset - elsif now - @current_window >= 1 - @prev_conforming_messages = @conforming_messages - @prev_total_messages = @total_messages - @conforming_messages = 0 - @total_messages = 0 - @current_window = now - end - - increment_conforming_count if allowed - - increment_total_count - end - end - - # {Datadog::Tracing::Sampling::RateLimiter} that accepts all resources, - # with no limits. - class UnlimitedLimiter < RateLimiter - # @return [Boolean] always +true+ - def allow?(_) - true - end - - # @return [Float] always 100% - def effective_rate - 1.0 - end - end - end - end -end diff --git a/lib/datadog/tracing/sampling/rate_sampler.rb b/lib/datadog/tracing/sampling/rate_sampler.rb index bc79714bcec..ea581dd70fa 100644 --- a/lib/datadog/tracing/sampling/rate_sampler.rb +++ b/lib/datadog/tracing/sampling/rate_sampler.rb @@ -20,7 +20,7 @@ def initialize(sample_rate = 1.0, decision: nil) super() unless sample_rate >= 0.0 && sample_rate <= 1.0 - Datadog.logger.error('sample rate is not between 0 and 1, falling back to 1') + Datadog.logger.warn('sample rate is not between 0 and 1, falling back to 1') sample_rate = 1.0 end diff --git a/lib/datadog/tracing/sampling/rule.rb b/lib/datadog/tracing/sampling/rule.rb index 9c18bed7fac..6f458ba093f 100644 --- a/lib/datadog/tracing/sampling/rule.rb +++ b/lib/datadog/tracing/sampling/rule.rb @@ -2,6 +2,7 @@ require_relative 'matcher' require_relative 'rate_sampler' +require_relative '../../core/telemetry/logger' module Datadog module Tracing @@ -35,6 +36,7 @@ def match?(trace) Datadog.logger.error( "Matcher failed. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}" ) + Datadog::Core::Telemetry::Logger.report(e, description: 'Matcher failed') nil end diff --git a/lib/datadog/tracing/sampling/rule_sampler.rb b/lib/datadog/tracing/sampling/rule_sampler.rb index a7d11efe49f..a6542edc9f3 100644 --- a/lib/datadog/tracing/sampling/rule_sampler.rb +++ b/lib/datadog/tracing/sampling/rule_sampler.rb @@ -1,8 +1,9 @@ # frozen_string_literal: true require_relative 'ext' -require_relative 'rate_limiter' +require_relative '../../core/rate_limiter' require_relative 'rule' +require_relative '../../core/telemetry/logger' module Datadog module Tracing @@ -28,20 +29,22 @@ def initialize( default_sample_rate: Datadog.configuration.tracing.sampling.default_rate, default_sampler: nil ) - @rules = rules + @rules = if default_sample_rate && !default_sampler + # Add to the end of the rule list a rule always matches any trace + rules << SimpleRule.new(sample_rate: default_sample_rate) + else + rules + end @rate_limiter = if rate_limiter rate_limiter elsif rate_limit - TokenBucket.new(rate_limit) + Core::TokenBucket.new(rate_limit) else - UnlimitedLimiter.new + Core::UnlimitedLimiter.new end - @default_sampler = if default_sampler default_sampler elsif default_sample_rate - # Add to the end of the rule list a rule always matches any trace - @rules << SimpleRule.new(sample_rate: default_sample_rate) nil else # TODO: Simplify .tags access, as `Tracer#tags` can't be arbitrarily changed anymore @@ -80,9 +83,10 @@ def self.parse(rules, rate_limit, default_sample_rate) new(parsed_rules, rate_limit: rate_limit, default_sample_rate: default_sample_rate) rescue => e - Datadog.logger.error do + Datadog.logger.warn do "Could not parse trace sampling rules '#{rules}': #{e.class.name} #{e.message} at #{Array(e.backtrace).first}" end + nil end @@ -121,7 +125,7 @@ def sample_trace(trace) return false unless sampled - rate_limiter.allow?(1).tap do |allowed| + rate_limiter.allow?.tap do |allowed| set_priority(trace, allowed) set_limiter_metrics(trace, rate_limiter.effective_rate) @@ -140,6 +144,8 @@ def sample_trace(trace) Datadog.logger.error( "Rule sampling failed. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}" ) + Datadog::Core::Telemetry::Logger.report(e, description: 'Rule sampling failed') + yield(trace) end diff --git a/lib/datadog/tracing/sampling/span/ext.rb b/lib/datadog/tracing/sampling/span/ext.rb index 5b04dfa6d1d..cc43505dd91 100644 --- a/lib/datadog/tracing/sampling/span/ext.rb +++ b/lib/datadog/tracing/sampling/span/ext.rb @@ -9,7 +9,7 @@ module Ext # Accept all spans (100% retention). DEFAULT_SAMPLE_RATE = 1.0 # Unlimited. - # @see Datadog::Tracing::Sampling::TokenBucket + # @see Datadog::Core::TokenBucket DEFAULT_MAX_PER_SECOND = -1 # Sampling decision method used to come to the sampling decision for this span diff --git a/lib/datadog/tracing/sampling/span/rule.rb b/lib/datadog/tracing/sampling/span/rule.rb index 797b355518c..45fff8664a2 100644 --- a/lib/datadog/tracing/sampling/span/rule.rb +++ b/lib/datadog/tracing/sampling/span/rule.rb @@ -30,7 +30,7 @@ def initialize( @rate_limit = rate_limit @sampler = Sampling::RateSampler.new(sample_rate) - @rate_limiter = Sampling::TokenBucket.new(rate_limit) + @rate_limiter = Core::TokenBucket.new(rate_limit) end # This method should only be invoked for spans that are part @@ -54,7 +54,7 @@ def initialize( def sample!(trace_op, span_op) return :not_matched unless @matcher.match?(span_op) - if @rate_limiter.allow?(1) && @sampler.sample!(trace_op) + if @rate_limiter.allow? && @sampler.sample!(trace_op) span_op.set_metric(Span::Ext::TAG_MECHANISM, Sampling::Ext::Mechanism::SPAN_SAMPLING_RATE) span_op.set_metric(Span::Ext::TAG_RULE_RATE, @sample_rate) span_op.set_metric(Span::Ext::TAG_MAX_PER_SECOND, @rate_limit) diff --git a/lib/datadog/tracing/trace_operation.rb b/lib/datadog/tracing/trace_operation.rb index 9ebaf46ef85..eb85182af75 100644 --- a/lib/datadog/tracing/trace_operation.rb +++ b/lib/datadog/tracing/trace_operation.rb @@ -2,7 +2,7 @@ require_relative '../core/environment/identity' require_relative '../core/utils' - +require_relative 'tracer' require_relative 'event' require_relative 'metadata/tagging' require_relative 'sampling/ext' @@ -75,7 +75,9 @@ def initialize( metrics: nil, trace_state: nil, trace_state_unknown_fields: nil, - remote_parent: false + remote_parent: false, + tracer: nil + ) # Attributes @id = id || Tracing::Utils::TraceId.next_id @@ -98,6 +100,7 @@ def initialize( @profiling_enabled = profiling_enabled @trace_state = trace_state @trace_state_unknown_fields = trace_state_unknown_fields + @tracer = tracer # Generic tags set_tags(tags) if tags @@ -161,6 +164,23 @@ def resource @resource || (root_span && root_span.resource) end + # When retrieving tags or metrics we need to include root span tags for sampling purposes + def get_tag(key) + super || (root_span && root_span.get_tag(key)) + end + + def get_metric(key) + super || (root_span && root_span.get_metric(key)) + end + + def tags + all_tags = {} + all_tags.merge!(root_span&.tags || {}) if root_span + all_tags.merge!(super) + + all_tags + end + # Returns true if the resource has been explicitly set # # @return [Boolean] @@ -284,10 +304,14 @@ def flush! # Returns a set of trace headers used for continuing traces. # Used for propagation across execution contexts. # Data should reflect the active state of the trace. + # DEV-3.0: Sampling is a side effect of generating the digest. + # We should move the sample call to inject and right before moving to new contexts(threads, forking etc.) def to_digest # Resolve current span ID span_id = @active_span && @active_span.id span_id ||= @parent_span_id unless finished? + # sample the trace_operation with the tracer + @tracer&.sample_trace(self) unless sampling_priority TraceDigest.new( span_id: span_id, diff --git a/lib/datadog/tracing/tracer.rb b/lib/datadog/tracing/tracer.rb index 37cde2cf01b..d31418f0406 100644 --- a/lib/datadog/tracing/tracer.rb +++ b/lib/datadog/tracing/tracer.rb @@ -262,6 +262,17 @@ def continue_trace!(digest, key = nil, &block) context.activate!(trace, &block) end + # Sample a span, tagging the trace as appropriate. + def sample_trace(trace_op) + begin + @sampler.sample!(trace_op) + rescue StandardError => e + SAMPLE_TRACE_LOG_ONLY_ONCE.run do + Datadog.logger.warn { "Failed to sample trace: #{e.class.name} #{e} at #{Array(e.backtrace).first}" } + end + end + end + # @!visibility private # TODO: make this private def trace_completed @@ -331,12 +342,14 @@ def build_trace(digest = nil) trace_state: digest.trace_state, trace_state_unknown_fields: digest.trace_state_unknown_fields, remote_parent: digest.span_remote, + tracer: self ) else TraceOperation.new( hostname: hostname, profiling_enabled: profiling_enabled, remote_parent: false, + tracer: self ) end end @@ -347,7 +360,6 @@ def bind_trace_events!(trace_op) events.span_before_start.subscribe do |event_span_op, event_trace_op| event_trace_op.service ||= @default_service event_span_op.service ||= @default_service - sample_trace(event_trace_op) if event_span_op && event_span_op.parent_id == 0 end events.span_finished.subscribe do |event_span, event_trace_op| @@ -468,17 +480,6 @@ def subscribe_trace_deactivation!(context, trace, original_trace) end end - # Sample a span, tagging the trace as appropriate. - def sample_trace(trace_op) - begin - @sampler.sample!(trace_op) - rescue StandardError => e - SAMPLE_TRACE_LOG_ONLY_ONCE.run do - Datadog.logger.warn { "Failed to sample trace: #{e.class.name} #{e} at #{Array(e.backtrace).first}" } - end - end - end - SAMPLE_TRACE_LOG_ONLY_ONCE = Core::Utils::OnlyOnce.new private_constant :SAMPLE_TRACE_LOG_ONLY_ONCE @@ -497,6 +498,7 @@ def sample_span(trace_op, span) # Flush finished spans from the trace buffer, send them to writer. def flush_trace(trace_op) + sample_trace(trace_op) unless trace_op.sampling_priority begin trace = @trace_flush.consume!(trace_op) write(trace) if trace && !trace.empty? diff --git a/lib/datadog/tracing/transport/http.rb b/lib/datadog/tracing/transport/http.rb index 25a7e77c426..190dc31e408 100644 --- a/lib/datadog/tracing/transport/http.rb +++ b/lib/datadog/tracing/transport/http.rb @@ -74,6 +74,10 @@ def default_headers # Add container ID, if present. container_id = Datadog::Core::Environment::Container.container_id headers[Datadog::Core::Transport::Ext::HTTP::HEADER_CONTAINER_ID] = container_id unless container_id.nil? + # Pretend that stats computation are already done by the client + if Datadog.configuration.appsec.standalone.enabled + headers[Datadog::Core::Transport::Ext::HTTP::HEADER_CLIENT_COMPUTED_STATS] = 'yes' + end end end diff --git a/lib/datadog/tracing/transport/http/client.rb b/lib/datadog/tracing/transport/http/client.rb index e19491ddabc..ab2c7191df8 100644 --- a/lib/datadog/tracing/transport/http/client.rb +++ b/lib/datadog/tracing/transport/http/client.rb @@ -38,6 +38,7 @@ def send_request(request, &block) if stats.consecutive_errors > 0 Datadog.logger.debug(message) else + # Not to report telemetry logs Datadog.logger.error(message) end diff --git a/lib/datadog/tracing/transport/io/client.rb b/lib/datadog/tracing/transport/io/client.rb index 685c7512190..4288889ec76 100644 --- a/lib/datadog/tracing/transport/io/client.rb +++ b/lib/datadog/tracing/transport/io/client.rb @@ -49,6 +49,7 @@ def send_request(request) if stats.consecutive_errors > 0 Datadog.logger.debug(message) else + # Not to report telemetry logs Datadog.logger.error(message) end diff --git a/lib/datadog/tracing/workers.rb b/lib/datadog/tracing/workers.rb index fdcce6772ba..4ca75b813c2 100644 --- a/lib/datadog/tracing/workers.rb +++ b/lib/datadog/tracing/workers.rb @@ -56,7 +56,7 @@ def callback_traces # ensures that the thread will not die because of an exception. # TODO[manu]: findout the reason and reschedule the send if it's not # a fatal exception - Datadog.logger.error( + Datadog.logger.warn( "Error during traces flush: dropped #{traces.length} items. Cause: #{e} Location: #{Array(e.backtrace).first}" ) end @@ -70,7 +70,7 @@ def start @run = true Datadog.logger.debug { "Starting thread for: #{self}" } @worker = Thread.new { perform } - @worker.name = self.class.name unless Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3') + @worker.name = self.class.name @worker.thread_variable_set(:fork_safe, true) nil diff --git a/lib/datadog/tracing/workers/trace_writer.rb b/lib/datadog/tracing/workers/trace_writer.rb index fda409e74e5..bbb04ff219a 100644 --- a/lib/datadog/tracing/workers/trace_writer.rb +++ b/lib/datadog/tracing/workers/trace_writer.rb @@ -43,7 +43,7 @@ def write_traces(traces) traces = process_traces(traces) flush_traces(traces) rescue StandardError => e - Datadog.logger.error( + Datadog.logger.warn( "Error while writing traces: dropped #{traces.length} items. Cause: #{e} Location: #{Array(e.backtrace).first}" ) end diff --git a/lib/datadog/version.rb b/lib/datadog/version.rb index ba299e4e7ae..1438267dbfc 100644 --- a/lib/datadog/version.rb +++ b/lib/datadog/version.rb @@ -3,7 +3,7 @@ module Datadog module VERSION MAJOR = 2 - MINOR = 2 + MINOR = 4 PATCH = 0 PRE = nil BUILD = nil diff --git a/shell.nix b/shell.nix index 68fa197e5a1..950c1c81804 100644 --- a/shell.nix +++ b/shell.nix @@ -1,44 +1,11 @@ -{ - # use the environment channel - pkgs ? import {}, - - # use a pinned package state - pinned ? import(fetchTarball("https://github.com/NixOS/nixpkgs/archive/25865a40d14b.tar.gz")) {}, -}: -let - # specify ruby version to use - ruby = pinned.ruby_3_3; - - # control llvm/clang version (e.g for packages built from source) - llvm = pinned.llvmPackages_16; - - # control gcc version (e.g for packages built from source) - gcc = pinned.gcc13; -in llvm.stdenv.mkDerivation { - # unique project name for this environment derivation - name = "dd-trace-rb.devshell"; - - buildInputs = [ - ruby - - # TODO: some gems insist on using `gcc` on Linux, satisfy them for now: - # - json - # - protobuf - # - ruby-prof - gcc - ]; - - shellHook = '' - # get major.minor.0 ruby version - export RUBY_VERSION="$(ruby -e 'puts RUBY_VERSION.gsub(/\d+$/, "0")')" - - # make gem install work in-project, compatibly with bundler - export GEM_HOME="$(pwd)/vendor/bundle/ruby/$RUBY_VERSION" - - # make bundle work in-project - export BUNDLE_PATH="$(pwd)/vendor/bundle" - - # enable calling gem scripts without bundle exec - export PATH="$GEM_HOME/bin:$PATH" - ''; -} +# flake-compat shim for usage without flakes +(import + ( + let lock = builtins.fromJSON (builtins.readFile ./flake.lock); in + fetchTarball { + url = lock.nodes.flake-compat.locked.url or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; + sha256 = lock.nodes.flake-compat.locked.narHash; + } + ) + { src = ./.; } +).shellNix diff --git a/sig/datadog/appsec.rbs b/sig/datadog/appsec.rbs index df6659ad690..a39a0a33e3e 100644 --- a/sig/datadog/appsec.rbs +++ b/sig/datadog/appsec.rbs @@ -4,7 +4,11 @@ module Datadog def self.processor: () -> Datadog::AppSec::Processor? - def self.reconfigure: (ruleset: ::Hash[untyped, untyped], actions: Array[Hash[String, untyped]]) -> void + def self.reconfigure: ( + ruleset: ::Hash[untyped, untyped], + actions: Array[Hash[String, untyped]], + telemetry: Datadog::Core::Telemetry::Component + ) -> void def self.reconfigure_lock: () { () -> void } -> void diff --git a/sig/datadog/appsec/component.rbs b/sig/datadog/appsec/component.rbs index 9908d305e32..71409bb4d2c 100644 --- a/sig/datadog/appsec/component.rbs +++ b/sig/datadog/appsec/component.rbs @@ -12,7 +12,11 @@ module Datadog def initialize: (processor: Datadog::AppSec::Processor?) -> void - def self.reconfigure: (ruleset: ::Hash[untyped, untyped], actions: Array[Hash[String, untyped]]) -> void + def self.reconfigure: ( + ruleset: ::Hash[untyped, untyped], + actions: Array[Hash[String, untyped]], + telemetry: Datadog::Core::Telemetry::Component + ) -> void def self.reconfigure_lock: () { () -> void } -> void diff --git a/sig/datadog/appsec/contrib/devise/patcher/rememberable_patch.rbs b/sig/datadog/appsec/contrib/devise/patcher/rememberable_patch.rbs new file mode 100644 index 00000000000..f1fd54e4509 --- /dev/null +++ b/sig/datadog/appsec/contrib/devise/patcher/rememberable_patch.rbs @@ -0,0 +1,13 @@ +module Datadog + module AppSec + module Contrib + module Devise + module Patcher + module RememberablePatch + def validate: (*untyped args) -> untyped + end + end + end + end + end +end diff --git a/sig/datadog/appsec/contrib/graphql/appsec_trace.rbs b/sig/datadog/appsec/contrib/graphql/appsec_trace.rbs new file mode 100644 index 00000000000..d150197227a --- /dev/null +++ b/sig/datadog/appsec/contrib/graphql/appsec_trace.rbs @@ -0,0 +1,11 @@ +module Datadog + module AppSec + module Contrib + module GraphQL + module AppSecTrace + def execute_multiplex: (multiplex: GraphQL::Execution::Multiplex) -> Array[GraphQL::Query::Result] + end + end + end + end +end diff --git a/sig/datadog/appsec/contrib/graphql/gateway/multiplex.rbs b/sig/datadog/appsec/contrib/graphql/gateway/multiplex.rbs new file mode 100644 index 00000000000..3465dcb1193 --- /dev/null +++ b/sig/datadog/appsec/contrib/graphql/gateway/multiplex.rbs @@ -0,0 +1,29 @@ +module Datadog + module AppSec + module Contrib + module GraphQL + module Gateway + class Multiplex < Instrumentation::Gateway::Argument + @multiplex: GraphQL::Execution::Multiplex + + @arguments: Hash[String, Array[Hash[String, String]]] + + attr_reader multiplex: GraphQL::Execution::Multiplex + + def initialize: (GraphQL::Execution::Multiplex multiplex) -> void + + def arguments: () -> Hash[String, Array[Hash[String, String]]] + + def queries: () -> Array[GraphQL::Query] + + private + + def create_arguments_hash: () -> Hash[String, Array[Hash[String, String]]] + + def set_hash_with_variables: (Hash[String, String] resolver_hash, Array[GraphQL::Language::Nodes::Argument] arguments, Hash[String, String|Integer] provided_variables) -> void + end + end + end + end + end +end diff --git a/sig/datadog/appsec/contrib/graphql/gateway/watcher.rbs b/sig/datadog/appsec/contrib/graphql/gateway/watcher.rbs new file mode 100644 index 00000000000..d9a814b9db2 --- /dev/null +++ b/sig/datadog/appsec/contrib/graphql/gateway/watcher.rbs @@ -0,0 +1,15 @@ +module Datadog + module AppSec + module Contrib + module GraphQL + module Gateway + module Watcher + def self.watch: () -> untyped + + def self.watch_multiplex: (?Datadog::AppSec::Instrumentation::Gateway gateway) -> Hash[String, Datadog::AppSec::Instrumentation::Gateway::Middleware]? + end + end + end + end + end +end diff --git a/sig/datadog/appsec/contrib/graphql/integration.rbs b/sig/datadog/appsec/contrib/graphql/integration.rbs new file mode 100644 index 00000000000..249f84a2ce8 --- /dev/null +++ b/sig/datadog/appsec/contrib/graphql/integration.rbs @@ -0,0 +1,23 @@ +module Datadog + module AppSec + module Contrib + module GraphQL + class Integration + include Datadog::AppSec::Contrib::Integration + + MINIMUM_VERSION: ::Gem::Version + + def self.version: () -> ::Gem::Version? + + def self.loaded?: () -> bool + + def self.compatible?: () -> bool + + def self.auto_instrument?: () -> bool + + def patcher: () -> Datadog::AppSec::Contrib::GraphQL::Patcher + end + end + end + end +end diff --git a/sig/datadog/appsec/contrib/graphql/patcher.rbs b/sig/datadog/appsec/contrib/graphql/patcher.rbs new file mode 100644 index 00000000000..95a698a97d2 --- /dev/null +++ b/sig/datadog/appsec/contrib/graphql/patcher.rbs @@ -0,0 +1,17 @@ +module Datadog + module AppSec + module Contrib + module GraphQL + module Patcher + include Datadog::AppSec::Contrib::Patcher + + def self?.patched?: () -> bool + + def self?.target_version: () -> ::Gem::Version + + def self?.patch: () -> bool + end + end + end + end +end diff --git a/sig/datadog/appsec/contrib/graphql/reactive/multiplex.rbs b/sig/datadog/appsec/contrib/graphql/reactive/multiplex.rbs new file mode 100644 index 00000000000..7095e94da50 --- /dev/null +++ b/sig/datadog/appsec/contrib/graphql/reactive/multiplex.rbs @@ -0,0 +1,17 @@ +module Datadog + module AppSec + module Contrib + module GraphQL + module Reactive + module Multiplex + ADDRESSES: ::Array[String] + + def self.publish: (Datadog::AppSec::Reactive::Operation op, Datadog::AppSec::Contrib::GraphQL::Gateway::Multiplex gateway_multiplex) -> boolish + + def self.subscribe: (Datadog::AppSec::Reactive::Operation op, Datadog::AppSec::Contrib::GraphQL::Gateway::Multiplex waf_context) -> void + end + end + end + end + end +end diff --git a/sig/datadog/appsec/event.rbs b/sig/datadog/appsec/event.rbs index 36d75ca6e55..b4b0e584513 100644 --- a/sig/datadog/appsec/event.rbs +++ b/sig/datadog/appsec/event.rbs @@ -13,7 +13,9 @@ module Datadog def self.record_via_span: (Datadog::Tracing::SpanOperation, *untyped events) -> untyped def self.build_service_entry_tags: (Array[Hash[::Symbol, untyped]] event_group) -> Hash[::String, untyped] - + + def self.tag_and_keep!: (Datadog::AppSec::Scope scope, Datadog::AppSec::WAF::Result waf_result) -> void + private def self.compressed_and_base64_encoded: (untyped value) -> untyped @@ -21,6 +23,8 @@ module Datadog def self.json_parse: (untyped value) -> untyped def self.gzip: (untyped value) -> untyped + + def self.add_distributed_tags: (Datadog::Tracing::TraceOperation trace) -> void end end end diff --git a/sig/datadog/appsec/ext.rbs b/sig/datadog/appsec/ext.rbs index 39703d21368..2ac545ba1d3 100644 --- a/sig/datadog/appsec/ext.rbs +++ b/sig/datadog/appsec/ext.rbs @@ -3,6 +3,10 @@ module Datadog module Ext INTERRUPT: Symbol SCOPE_KEY: String + + TAG_APPSEC_ENABLED: String + TAG_APM_ENABLED: String + TAG_DISTRIBUTED_APPSEC_EVENT: String end end end diff --git a/sig/datadog/appsec/processor.rbs b/sig/datadog/appsec/processor.rbs index 0f2be11a9b3..1ff5ca24a65 100644 --- a/sig/datadog/appsec/processor.rbs +++ b/sig/datadog/appsec/processor.rbs @@ -1,40 +1,18 @@ module Datadog module AppSec class Processor - class Context - type event = untyped - type data = WAF::data - - attr_reader time_ns: ::Float - attr_reader time_ext_ns: ::Float - attr_reader timeouts: ::Integer - attr_reader events: ::Array[event] - - @context: WAF::Context - - @run_mutex: ::Thread::Mutex - - def initialize: (Processor processor) -> void - def run: (Hash[untyped, untyped] input, ?::Integer timeout) -> WAF::Result - def extract_schema: () -> WAF::Result? - def finalize: () -> void - - private - def extract_schema?: () -> bool - end - def self.active_context: () -> Context private - attr_reader diagnostics: untyped - attr_reader addresses: untyped + attr_reader diagnostics: WAF::LibDDWAF::Object? + attr_reader addresses: ::Array[::String] @handle: WAF::Handle @ruleset: ::Hash[::String, untyped] @addresses: ::Array[::String] - def initialize: (ruleset: ::Hash[untyped, untyped]) -> void + def initialize: (ruleset: ::Hash[untyped, untyped], telemetry: Core::Telemetry::Component) -> void def ready?: () -> bool def finalize: () -> void @@ -42,14 +20,11 @@ module Datadog private - def load_libddwaf: () -> bool - def create_waf_handle: (Datadog::Core::Configuration::Settings::_AppSec settings, ::Hash[String, untyped] ruleset) -> bool - - def self.libddwaf_provides_waf?: () -> bool - def self.require_libddwaf: () -> bool - def self.libddwaf_spec: () -> ::Gem::BasicSpecification - def self.libddwaf_platform: () -> ::String - def self.ruby_platforms: () -> ::Array[::String] + def require_libddwaf: () -> bool + def libddwaf_provides_waf?: () -> bool + def create_waf_handle: (Core::Configuration::Settings::_AppSec settings, ::Hash[String, untyped] ruleset) -> bool + def libddwaf_platform: () -> ::String + def ruby_platforms: () -> ::Array[::String] end end end diff --git a/sig/datadog/appsec/processor/actions.rbs b/sig/datadog/appsec/processor/actions.rbs index 080a2922165..5d689a11b60 100644 --- a/sig/datadog/appsec/processor/actions.rbs +++ b/sig/datadog/appsec/processor/actions.rbs @@ -6,7 +6,7 @@ module Datadog def self.actions: () -> Array[Hash[String, untyped]] - def self.fecth_configuration: (String action) -> Hash[String, untyped]? + def self.fetch_configuration: (String action) -> Hash[String, untyped]? def self.merge: (Array[Hash[String, untyped]] actions_to_merge) -> Array[Hash[String, untyped]]? diff --git a/sig/datadog/appsec/processor/context.rbs b/sig/datadog/appsec/processor/context.rbs new file mode 100644 index 00000000000..95843dc391d --- /dev/null +++ b/sig/datadog/appsec/processor/context.rbs @@ -0,0 +1,27 @@ +module Datadog + module AppSec + class Processor + class Context + type event = untyped + type data = WAF::data + + attr_reader time_ns: ::Float + attr_reader time_ext_ns: ::Float + attr_reader timeouts: ::Integer + attr_reader events: ::Array[event] + + @context: WAF::Context + + @run_mutex: ::Thread::Mutex + + def initialize: (Processor processor) -> void + def run: (Hash[untyped, untyped] input, ?::Integer timeout) -> WAF::Result + def extract_schema: () -> WAF::Result? + def finalize: () -> void + + private + def extract_schema?: () -> bool + end + end + end +end diff --git a/sig/datadog/appsec/processor/rule_loader.rbs b/sig/datadog/appsec/processor/rule_loader.rbs index 4f8fe74a7ba..857caa2d818 100644 --- a/sig/datadog/appsec/processor/rule_loader.rbs +++ b/sig/datadog/appsec/processor/rule_loader.rbs @@ -3,7 +3,11 @@ module Datadog class Processor module RuleLoader type ruleset = Symbol | String | File | StringIO | Hash[String, untyped] - def self.load_rules: (ruleset: ruleset) -> ::Hash[untyped, untyped]? + + def self.load_rules: ( + telemetry: Datadog::Core::Telemetry::Component, + ruleset: ruleset + ) -> ::Hash[untyped, untyped]? def self.load_data: (?ip_denylist: Array[String], ?user_id_denylist: Array[String]) -> Array[Hash[String, untyped]] diff --git a/sig/datadog/appsec/processor/rule_merger.rbs b/sig/datadog/appsec/processor/rule_merger.rbs index ffd4127fe81..cf4c498fc63 100644 --- a/sig/datadog/appsec/processor/rule_merger.rbs +++ b/sig/datadog/appsec/processor/rule_merger.rbs @@ -14,13 +14,27 @@ module Datadog type processors = ::Array[::Hash[::String, untyped]] type scanners = ::Array[::Hash[::String, untyped]] - DEFAULT_WAF_PROCESSORS: processors - DEFAULT_WAF_SCANNERS: processors - - def self.merge: (rules: ::Array[rules], ?data: ::Array[data], ?overrides: overrides, ?exclusions: exclusions, ?custom_rules: custom_rules, ?processors: processors, ?scanners: scanners) -> rules + def self.merge: ( + telemetry: Datadog::Core::Telemetry::Component, + rules: ::Array[rules], + ?data: ::Array[data], + ?overrides: overrides, + ?exclusions: exclusions, + ?custom_rules: custom_rules, + ?processors: processors?, + ?scanners: scanners? + ) -> rules private + self.@default_waf_processors: processors + + self.@default_waf_scanners: scanners + + def self.default_waf_processors: -> processors + + def self.default_waf_scanners: -> scanners + def self.combine_rules: (::Array[rules] rules) -> rules def self.combine_data: (::Array[data] data) -> data? diff --git a/sig/datadog/appsec/rate_limiter.rbs b/sig/datadog/appsec/rate_limiter.rbs index 8528bfed118..4dc0802af57 100644 --- a/sig/datadog/appsec/rate_limiter.rbs +++ b/sig/datadog/appsec/rate_limiter.rbs @@ -1,24 +1,23 @@ module Datadog module AppSec class RateLimiter - type timestamp = ::Float - type rate = ::Integer + @rate_limiter: Datadog::Core::TokenBucket - @rate: ::Integer - @timestamps: ::Array[timestamp] + THREAD_KEY: :datadog_security_appsec_rate_limiter - def initialize: (rate rate) -> void + def self.thread_local: () -> RateLimiter - # TODO: return type of limit is return type of block - def limit: () { () -> untyped } -> untyped + def self.reset!: () -> void - def self.limit: (::Symbol name) { () -> untyped } -> untyped + private - def self.reset!: (::Symbol name) -> void + def self.trace_rate_limit: () -> ::Integer - def self.rate_limiter: (::Symbol name) -> RateLimiter + public - def self.trace_rate_limit: () -> rate + def initialize: (::Integer rate) -> void + + def limit: () { () -> untyped } -> void end end end diff --git a/sig/datadog/appsec/remote.rbs b/sig/datadog/appsec/remote.rbs index 4639d99cca2..8b1e54b7af2 100644 --- a/sig/datadog/appsec/remote.rbs +++ b/sig/datadog/appsec/remote.rbs @@ -37,7 +37,7 @@ module Datadog def self.products: () -> ::Array[String] - def self.receivers: () -> ::Array[Core::Remote::Dispatcher::Receiver] + def self.receivers: (Datadog::Core::Telemetry::Component telemetry) -> ::Array[Core::Remote::Dispatcher::Receiver] def self.remote_features_enabled?: () -> bool diff --git a/sig/datadog/appsec/response.rbs b/sig/datadog/appsec/response.rbs index 4d177fac1d6..d74f4c47128 100644 --- a/sig/datadog/appsec/response.rbs +++ b/sig/datadog/appsec/response.rbs @@ -12,6 +12,7 @@ module Datadog def to_action_dispatch_response: () -> ::ActionDispatch::Response def self.negotiate: (::Hash[untyped, untyped] env, Array[String] actions) -> Response + def self.graphql_response: (Datadog::AppSec::Contrib::GraphQL::Gateway::Multiplex gateway_multiplex) -> Array[::GraphQL::Query::Result] private diff --git a/sig/datadog/appsec/utils/trace_operation.rbs b/sig/datadog/appsec/utils/trace_operation.rbs new file mode 100644 index 00000000000..cd7a86680a1 --- /dev/null +++ b/sig/datadog/appsec/utils/trace_operation.rbs @@ -0,0 +1,9 @@ +module Datadog + module AppSec + module Utils + class TraceOperation + def self.appsec_standalone_reject?: (Datadog::Tracing::TraceOperation trace) -> bool + end + end + end +end diff --git a/sig/datadog/core/configuration/settings.rbs b/sig/datadog/core/configuration/settings.rbs index ca81552f618..48d9617ac7c 100644 --- a/sig/datadog/core/configuration/settings.rbs +++ b/sig/datadog/core/configuration/settings.rbs @@ -54,6 +54,44 @@ module Datadog def templates: () -> _TemplatesBlock end + interface _DI + def enabled: () -> bool + + def enabled=: (bool) -> void + + def untargeted_trace_points: () -> bool + + def untargeted_trace_points=: (bool) -> void + + def propagate_all_exceptions: () -> bool + + def propagate_all_exceptions=: (bool) -> void + + def redacted_identifiers: () -> Array[String] + + def redacted_identifiers=: (Array[String]) -> void + + def redacted_type_names: () -> Array[String] + + def redacted_type_names=: (Array[String]) -> void + + def max_capture_depth: () -> Integer + + def max_capture_depth=: (Integer) -> void + + def max_capture_collection_size: () -> Integer + + def max_capture_collection_size=: (Integer) -> void + + def max_capture_string_length: () -> Integer + + def max_capture_string_length=: (Integer) -> void + + def max_capture_attribute_count: () -> Integer + + def max_capture_attribute_count=: (Integer) -> void + end + interface _TemplatesBlock def html=: (::String) -> void @@ -70,18 +108,22 @@ module Datadog def initialize: (*untyped _) -> untyped - def env: -> String + def env: -> String? def service: -> String def version: -> String? + def tags: -> ::Hash[::String, ::String] + def logger=: (untyped logger) -> untyped def runtime_metrics: (?untyped? options) -> untyped def appsec: (?untyped? options) -> Datadog::Core::Configuration::Settings::_AppSec + def dynamic_instrumentation: (?untyped? options) -> Datadog::Core::Configuration::Settings::_DI + def remote: (?untyped? options) -> Datadog::Core::Configuration::Settings::_Remote end end diff --git a/sig/datadog/core/crashtracking/agent_base_url.rbs b/sig/datadog/core/crashtracking/agent_base_url.rbs new file mode 100644 index 00000000000..2bdf7f07259 --- /dev/null +++ b/sig/datadog/core/crashtracking/agent_base_url.rbs @@ -0,0 +1,9 @@ +module Datadog + module Core + module Crashtracking + module AgentBaseUrl + def self.resolve: (Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings) -> ::String? + end + end + end +end diff --git a/sig/datadog/core/crashtracking/component.rbs b/sig/datadog/core/crashtracking/component.rbs new file mode 100644 index 00000000000..3915a0bac56 --- /dev/null +++ b/sig/datadog/core/crashtracking/component.rbs @@ -0,0 +1,51 @@ +module Datadog + module Core + module Crashtracking + class Component + LIBDATADOG_API_FAILURE: ::String? + ONLY_ONCE: Core::Utils::OnlyOnce + + def self.build: ( + Datadog::Core::Configuration::Settings settings, + Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings agent_settings, + logger: untyped + ) -> Datadog::Core::Crashtracking::Component? + + def initialize: ( + tags: ::Hash[::String, ::String], + agent_base_url: ::String, + ld_library_path: ::String, + path_to_crashtracking_receiver_binary: ::String, + logger: untyped + ) -> void + + def start: -> void + + def update_on_fork: -> void + + def stop: -> void + + private + + attr_reader tags: ::Hash[::String, ::String] + attr_reader agent_base_url: ::String + attr_reader ld_library_path: ::String + attr_reader path_to_crashtracking_receiver_binary: ::String + attr_reader logger: untyped + + def start_or_update_on_fork: (action: :start | :update_on_fork) -> void + + def self._native_start_or_update_on_fork: ( + action: :start | :update_on_fork, + agent_base_url: ::String, + path_to_crashtracking_receiver_binary: ::String, + ld_library_path: ::String, + tags_as_array: ::Array[[::String, ::String]], + upload_timeout_seconds: ::Integer, + ) -> void + + def self._native_stop: -> void + end + end + end +end diff --git a/sig/datadog/core/crashtracking/tag_builder.rbs b/sig/datadog/core/crashtracking/tag_builder.rbs new file mode 100644 index 00000000000..7be270c565e --- /dev/null +++ b/sig/datadog/core/crashtracking/tag_builder.rbs @@ -0,0 +1,9 @@ +module Datadog + module Core + module Crashtracking + module TagBuilder + def self.call: (Datadog::Core::Configuration::Settings) -> ::Hash[::String, ::String] + end + end + end +end diff --git a/sig/datadog/core/diagnostics/environment_logger.rbs b/sig/datadog/core/diagnostics/environment_logger.rbs index a4d06786b52..fe526f4ebb1 100644 --- a/sig/datadog/core/diagnostics/environment_logger.rbs +++ b/sig/datadog/core/diagnostics/environment_logger.rbs @@ -2,26 +2,23 @@ module Datadog module Core module Diagnostics module EnvironmentLogging - def log_configuration!: (untyped prefix, untyped data) -> untyped + def log_configuration!: (string prefix, string data) -> void - def log_error!: (untyped prefix, untyped type, untyped error) -> untyped + def log_debug!: (string prefix, string data) -> void - def logger: () -> untyped - def log?: () -> untyped + def log_error!: (string prefix, string type, string error) -> void - REPL_PROGRAM_NAMES: ::Array[::String] - - def repl?: () -> untyped - - def rspec?: () -> untyped + def logger: () -> ::Logger + def log?: () -> bool end module EnvironmentLogger extend EnvironmentLogging - def self.collect_and_log!: (untyped extra_fields) -> untyped + def self.collect_and_log!: (Hash[Symbol, untyped] extra_fields) -> void end module EnvironmentCollector def self.collect_config!: () -> { date: untyped, os_name: untyped, version: untyped, lang: untyped, lang_version: untyped, env: untyped, service: untyped, dd_version: untyped, debug: untyped, tags: untyped, runtime_metrics_enabled: untyped, vm: untyped, health_metrics_enabled: untyped } + def self.date: () -> untyped def self.os_name: () -> untyped def self.version: () -> untyped diff --git a/sig/datadog/core/environment/execution.rbs b/sig/datadog/core/environment/execution.rbs index c27ddad58e5..9ae21d4ec20 100644 --- a/sig/datadog/core/environment/execution.rbs +++ b/sig/datadog/core/environment/execution.rbs @@ -5,8 +5,6 @@ module Datadog def self.development?: () -> bool def self.webmock_enabled?: () -> bool - def self.cucumber?: -> bool - private def self.test?: () -> bool def self.repl?: () -> bool @@ -17,6 +15,8 @@ module Datadog RSPEC_PROGRAM_NAME: ::String def self.minitest?: () -> bool + def self.cucumber?: -> bool + def self.rails_development?: -> bool RAILS_ENV_DEVELOPMENT: Set[String] diff --git a/sig/datadog/core/environment/ext.rbs b/sig/datadog/core/environment/ext.rbs index 328bdfc4e9e..dfb2579f8bc 100644 --- a/sig/datadog/core/environment/ext.rbs +++ b/sig/datadog/core/environment/ext.rbs @@ -2,21 +2,45 @@ module Datadog module Core module Environment module Ext - LANG: untyped + LANG: String - LANG_ENGINE: untyped + LANG_ENGINE: String - LANG_INTERPRETER: untyped + LANG_INTERPRETER: String - LANG_PLATFORM: untyped + LANG_PLATFORM: String - LANG_VERSION: untyped + LANG_VERSION: String - RUBY_ENGINE: untyped + RUBY_ENGINE: String - GEM_DATADOG_VERSION: untyped + GEM_DATADOG_VERSION: String - ENGINE_VERSION: untyped + ENGINE_VERSION: String + + ENV_API_KEY: String + + ENV_ENVIRONMENT: String + + ENV_SERVICE: String + + ENV_OTEL_SERVICE: String + + ENV_SITE: String + + ENV_TAGS: String + + ENV_OTEL_RESOURCE_ATTRIBUTES: String + + ENV_VERSION: String + + FALLBACK_SERVICE_NAME: String + + TAG_ENV: String + + TAG_SERVICE: String + + TAG_VERSION: String end end end diff --git a/sig/datadog/core/environment/yjit.rbs b/sig/datadog/core/environment/yjit.rbs index e8413bd1554..af483a351e1 100644 --- a/sig/datadog/core/environment/yjit.rbs +++ b/sig/datadog/core/environment/yjit.rbs @@ -11,6 +11,7 @@ module Datadog def self?.code_region_size: () -> untyped def self?.object_shape_count: () -> untyped def self?.yjit_alloc_size: () -> untyped + def self?.ratio_in_yjit: () -> untyped def self?.available?: () -> untyped end diff --git a/sig/datadog/core/rate_limiter.rbs b/sig/datadog/core/rate_limiter.rbs new file mode 100644 index 00000000000..62c3d18dbb6 --- /dev/null +++ b/sig/datadog/core/rate_limiter.rbs @@ -0,0 +1,73 @@ +module Datadog + module Core + class RateLimiter + def allow?: (?::Integer size) -> void + + def effective_rate: () -> void + end + + class TokenBucket < RateLimiter + # This should be `::Numeric`, but it's used with `*` method on another + # `Numeric` which makes steep fail with an error `Ruby::UnresolvedOverloading` + # "Cannot find compatible overloading of method" + @rate: ::Float + + @max_tokens: ::Numeric + + @tokens: ::Numeric + + @total_messages: ::Integer + + @conforming_messages: ::Integer + + # This should be `::Integer?` but steep can't see conditional branching + # which safe-guards us from errors like "undefined method for NilClass" + @prev_conforming_messages: ::Integer + + # This should be `::Integer?` but steep can't see conditional branching + # which safe-guards us from errors like "undefined method for NilClass" + @prev_total_messages: ::Integer + + # This should be `::Integer?`, but steep can't see conditional branching + # which safe-guards us from errors like "undefined method for NilClass" + @current_window: ::Numeric + + @last_refill: ::Numeric + + # This should be `::Numeric`, but has to follow `@rate` type definition + attr_reader rate: ::Float + + attr_reader max_tokens: ::Numeric + + def initialize: (::Numeric rate, ?::Numeric max_tokens) -> void + + def allow?: (?::Integer size) -> bool + + def effective_rate: () -> ::Float + + def current_window_rate: () -> ::Float + + def available_tokens: () -> ::Numeric + + private + + def refill_since_last_message: () -> void + + def refill_tokens: (::Numeric size) -> void + + def increment_total_count: () -> void + + def increment_conforming_count: () -> void + + def should_allow?: (?::Integer size) -> bool + + def update_rate_counts: (bool allowed) -> void + end + + class UnlimitedLimiter < RateLimiter + def allow?: (?::Integer _) -> true + + def effective_rate: () -> ::Float + end + end +end diff --git a/sig/datadog/core/remote/client/capabilities.rbs b/sig/datadog/core/remote/client/capabilities.rbs index f74590664dd..6bd98582e6c 100644 --- a/sig/datadog/core/remote/client/capabilities.rbs +++ b/sig/datadog/core/remote/client/capabilities.rbs @@ -11,8 +11,12 @@ module Datadog attr_reader base64_capabilities: String - def initialize: (Datadog::Core::Configuration::Settings settings) -> void + @telemetry: Datadog::Core::Telemetry::Component + def initialize: ( + Datadog::Core::Configuration::Settings settings, + Datadog::Core::Telemetry::Component telemetry + ) -> void private diff --git a/sig/datadog/core/remote/component.rbs b/sig/datadog/core/remote/component.rbs index 73a01709572..7f15b40de45 100644 --- a/sig/datadog/core/remote/component.rbs +++ b/sig/datadog/core/remote/component.rbs @@ -22,7 +22,11 @@ module Datadog def shutdown!: () -> void - def self.build: (untyped settings, Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings agent_settings) -> Datadog::Core::Remote::Component? + def self.build: ( + untyped settings, + Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings agent_settings, + telemetry: Datadog::Core::Telemetry::Component + ) -> Datadog::Core::Remote::Component? class Barrier type timeout_s = ::Integer | ::Float diff --git a/sig/datadog/core/remote/tie.rbs b/sig/datadog/core/remote/tie.rbs index b4af9d4f2d4..793db6c802d 100644 --- a/sig/datadog/core/remote/tie.rbs +++ b/sig/datadog/core/remote/tie.rbs @@ -2,14 +2,14 @@ module Datadog module Core module Remote module Tie - class Boot < ::Struct[untyped] + class Boot < ::Struct[[Component::Barrier, Numeric]] def initialize: (Component::Barrier? barrier, Numeric? time) -> void attr_reader barrier: Component::Barrier attr_reader time: Numeric end - def self.boot: () -> (nil | Boot) + def self.boot: () -> Boot? end end end diff --git a/sig/datadog/core/telemetry/component.rbs b/sig/datadog/core/telemetry/component.rbs index d9d54fae227..2d14a670d17 100644 --- a/sig/datadog/core/telemetry/component.rbs +++ b/sig/datadog/core/telemetry/component.rbs @@ -9,9 +9,13 @@ module Datadog attr_reader enabled: bool + include Core::Telemetry::Logging + include Core::Telemetry::_Logging include Core::Utils::Forking - def initialize: (heartbeat_interval_seconds: Float, metrics_aggregation_interval_seconds: Float, dependency_collection: bool, ?enabled: bool, ?metrics_enabled: bool) -> void + def self.build: (untyped settings, Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings agent_settings, Datadog::Core::Logger logger) -> Component + + def initialize: (http_transport: Datadog::Core::Telemetry::Http::Transport, heartbeat_interval_seconds: Float, metrics_aggregation_interval_seconds: Float, dependency_collection: bool, ?enabled: bool, ?metrics_enabled: bool, shutdown_timeout_seconds: Float | Integer) -> void def disable!: () -> void @@ -22,6 +26,16 @@ module Datadog def stop!: () -> void def integrations_change!: () -> void + + def inc: (String namespace, String metric_name, Datadog::Core::Telemetry::Metric::input_value value, ?tags: Datadog::Core::Telemetry::Metric::tags_input, ?common: bool) -> void + + def dec: (String namespace, String metric_name, Datadog::Core::Telemetry::Metric::input_value value, ?tags: Datadog::Core::Telemetry::Metric::tags_input, ?common: bool) -> void + + def gauge: (String namespace, String metric_name, Datadog::Core::Telemetry::Metric::input_value value, ?tags: Datadog::Core::Telemetry::Metric::tags_input, ?common: bool) -> void + + def rate: (String namespace, String metric_name, Datadog::Core::Telemetry::Metric::input_value value, ?tags: Datadog::Core::Telemetry::Metric::tags_input, ?common: bool) -> void + + def distribution: (String namespace, String metric_name, Datadog::Core::Telemetry::Metric::input_value value, ?tags: Datadog::Core::Telemetry::Metric::tags_input, ?common: bool) -> void end end end diff --git a/sig/datadog/core/telemetry/emitter.rbs b/sig/datadog/core/telemetry/emitter.rbs index 40b1432bedc..5a72c55071f 100644 --- a/sig/datadog/core/telemetry/emitter.rbs +++ b/sig/datadog/core/telemetry/emitter.rbs @@ -4,12 +4,12 @@ module Datadog class Emitter self.@sequence: Datadog::Core::Utils::Sequence - attr_reader http_transport: untyped + attr_reader http_transport: Datadog::Core::Telemetry::Http::Transport extend Core::Utils::Forking - def initialize: (?http_transport: untyped) -> void - def request: (Datadog::Core::Telemetry::Event::Base event) -> Datadog::Core::Telemetry::Http::Adapters::Net::Response - def self.sequence: () -> untyped + def initialize: (http_transport: Datadog::Core::Telemetry::Http::Transport) -> void + def request: (Datadog::Core::Telemetry::Event::Base event) -> (Datadog::Core::Telemetry::Http::Adapters::Net::Response | Datadog::Core::Telemetry::Http::InternalErrorResponse) + def self.sequence: () -> Datadog::Core::Utils::Sequence end end end diff --git a/sig/datadog/core/telemetry/event.rbs b/sig/datadog/core/telemetry/event.rbs index 53cc1e20819..4818992176f 100644 --- a/sig/datadog/core/telemetry/event.rbs +++ b/sig/datadog/core/telemetry/event.rbs @@ -10,7 +10,7 @@ module Datadog class Base def payload: () -> (Hash[Symbol, untyped] | Array[Hash[Symbol, untyped]]) - def type: -> String? + def type: -> String end class AppStarted < Base @@ -24,7 +24,7 @@ module Datadog def agent_transport: (untyped config) -> String - def conf_value: (String name, Object value, Integer seq_id, ?String origin) -> Hash[Symbol, untyped] + def conf_value: (String name, untyped value, Integer seq_id, ?String origin) -> Hash[Symbol, untyped] def to_value: (Object value) -> Object @@ -67,6 +67,18 @@ module Datadog def initialize: (String namespace, Enumerable[Datadog::Core::Telemetry::Metric::Base] metric_series) -> void end + class Log < Base + LEVELS: Hash[Symbol, String] + + @message: String + @level: "ERROR" | "DEBUG" | "WARN" + @stack_trace: String? + + def initialize: (message: String, level: Symbol, ?stack_trace: String?) -> void + + def payload: () -> { logs: [Hash[Symbol, String]] } + end + class Distributions < GenerateMetrics end diff --git a/sig/datadog/core/telemetry/ext.rbs b/sig/datadog/core/telemetry/ext.rbs index 96ad27c06d9..05f860a21a3 100644 --- a/sig/datadog/core/telemetry/ext.rbs +++ b/sig/datadog/core/telemetry/ext.rbs @@ -10,6 +10,7 @@ module Datadog ENV_INSTALL_ID: ::String ENV_INSTALL_TIME: ::String ENV_INSTALL_TYPE: ::String + ENV_AGENTLESS_URL_OVERRIDE: ::String end end end diff --git a/sig/datadog/core/telemetry/http/ext.rbs b/sig/datadog/core/telemetry/http/ext.rbs index 11271822da3..4168ebc415a 100644 --- a/sig/datadog/core/telemetry/http/ext.rbs +++ b/sig/datadog/core/telemetry/http/ext.rbs @@ -23,7 +23,11 @@ module Datadog API_VERSION: "v2" + AGENTLESS_HOST_PREFIX: "instrumentation-telemetry-intake" + AGENT_ENDPOINT: "/telemetry/proxy/api/v2/apmtelemetry" + + AGENTLESS_ENDPOINT: "/api/v2/apmtelemetry" end end end diff --git a/sig/datadog/core/telemetry/http/transport.rbs b/sig/datadog/core/telemetry/http/transport.rbs index d6ac33f5a40..7a50a6941e5 100644 --- a/sig/datadog/core/telemetry/http/transport.rbs +++ b/sig/datadog/core/telemetry/http/transport.rbs @@ -5,6 +5,10 @@ module Datadog class Transport @adapter: Http::Adapters::Net + def self.build_agentless_transport: (api_key: String?, dd_site: String, ?url_override: String?) -> Transport + + def self.build_agent_transport: (Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings agent_settings) -> Transport + attr_reader host: String attr_reader port: Integer @@ -13,7 +17,9 @@ module Datadog attr_reader path: String - def initialize: () -> void + attr_reader api_key: String? + + def initialize: (host: String, port: Integer, path: String, ?ssl: bool, ?api_key: String?) -> void def request: (request_type: String, payload: String) -> Datadog::Core::Telemetry::Http::Adapters::Net::response diff --git a/sig/datadog/core/telemetry/logger.rbs b/sig/datadog/core/telemetry/logger.rbs new file mode 100644 index 00000000000..b32bf487c1c --- /dev/null +++ b/sig/datadog/core/telemetry/logger.rbs @@ -0,0 +1,15 @@ +module Datadog + module Core + module Telemetry + module Logger + def self.report: (Exception exception, ?level: Symbol, ?description: String?) -> void + + def self.error: (String description) -> void + + private + + def self.instance: () -> Datadog::Core::Telemetry::Component? + end + end + end +end diff --git a/sig/datadog/core/telemetry/logging.rbs b/sig/datadog/core/telemetry/logging.rbs new file mode 100644 index 00000000000..f64aa023f3c --- /dev/null +++ b/sig/datadog/core/telemetry/logging.rbs @@ -0,0 +1,21 @@ +module Datadog + module Core + module Telemetry + interface _Logging + def log!: (Datadog::Core::Telemetry::Event::Log) -> void + end + + module Logging : _Logging + module DatadogStackTrace + GEM_ROOT: String + + def self.from: (Exception exception) -> String? + end + + def report: (Exception exception, ?level: Symbol, ?description: String?) -> void + + def error: (String description) -> void + end + end + end +end diff --git a/sig/datadog/core/telemetry/worker.rbs b/sig/datadog/core/telemetry/worker.rbs index 8d98714f912..e4de55a104d 100644 --- a/sig/datadog/core/telemetry/worker.rbs +++ b/sig/datadog/core/telemetry/worker.rbs @@ -21,7 +21,7 @@ module Datadog @ticks_per_heartbeat: Integer @current_ticks: Integer - def initialize: (?enabled: bool, heartbeat_interval_seconds: Float, metrics_aggregation_interval_seconds: Float, emitter: Emitter, metrics_manager: MetricsManager, ?shutdown_timeout: Integer, ?buffer_size: Integer, dependency_collection: bool) -> void + def initialize: (?enabled: bool, heartbeat_interval_seconds: Float, metrics_aggregation_interval_seconds: Float, emitter: Emitter, metrics_manager: MetricsManager, ?shutdown_timeout: Float | Integer, ?buffer_size: Integer, dependency_collection: bool) -> void def start: () -> void @@ -41,11 +41,11 @@ module Datadog def flush_events: (Array[Event::Base] events) -> void - def send_event: (Event::Base event) -> Http::Adapters::Net::Response + def send_event: (Event::Base event) -> (Http::Adapters::Net::Response | Telemetry::Http::InternalErrorResponse) def disable!: () -> void - def disable_on_not_found!: (Http::Adapters::Net::Response response) -> void + def disable_on_not_found!: ((Http::Adapters::Net::Response | Telemetry::Http::InternalErrorResponse) response) -> void def buffer_klass: () -> untyped end diff --git a/sig/datadog/core/transport/ext.rbs b/sig/datadog/core/transport/ext.rbs index 335e293b941..74a3d3e21b8 100644 --- a/sig/datadog/core/transport/ext.rbs +++ b/sig/datadog/core/transport/ext.rbs @@ -15,6 +15,8 @@ module Datadog HEADER_CLIENT_COMPUTED_TOP_LEVEL: ::String + HEADER_CLIENT_COMPUTED_STATS: ::String + HEADER_META_LANG: ::String HEADER_META_LANG_INTERPRETER_VENDOR: ::String diff --git a/sig/datadog/core/utils/at_fork_monkey_patch.rbs b/sig/datadog/core/utils/at_fork_monkey_patch.rbs new file mode 100644 index 00000000000..b6ccdce0736 --- /dev/null +++ b/sig/datadog/core/utils/at_fork_monkey_patch.rbs @@ -0,0 +1,28 @@ +# TODO: Fix and remove `ignore 'lib/datadog/core/utils/at_fork_monkey_patch.rb` from `Steep` +module Datadog + module Core + module Utils + module AtForkMonkeyPatch + AT_FORK_CHILD_BLOCKS: ::Array[untyped] + + def self.supported?: () -> (false | true) + + def self.apply!: () -> (false | true) + + def self.run_at_fork_blocks: (Symbol stage) -> void + + def self.at_fork: (Symbol stage) { () -> untyped } -> true + + module KernelMonkeyPatch + def fork: () ?{ () -> untyped } -> untyped + end + + module ProcessMonkeyPatch + def _fork: () -> Integer + + def daemon: (*untyped args) -> untyped + end + end + end + end +end diff --git a/sig/datadog/core/utils/time.rbs b/sig/datadog/core/utils/time.rbs index 74aeb383b29..39a01face69 100644 --- a/sig/datadog/core/utils/time.rbs +++ b/sig/datadog/core/utils/time.rbs @@ -5,6 +5,7 @@ module Datadog def self?.get_time: (?::Symbol unit) -> ::Numeric def self?.now: () -> ::Time def self?.now_provider=: (^() -> ::Time block) -> void + def self?.get_time_provider=: (^(?::Symbol unit) -> ::Numeric block) -> void def self?.measure: (?::Symbol unit) { () -> void } -> ::Numeric def self?.as_utc_epoch_ns: (::Time time) -> ::Integer end diff --git a/sig/datadog/di.rbs b/sig/datadog/di.rbs new file mode 100644 index 00000000000..da9704ab847 --- /dev/null +++ b/sig/datadog/di.rbs @@ -0,0 +1,4 @@ +module Datadog + module DI + end +end diff --git a/sig/datadog/di/code_tracker.rbs b/sig/datadog/di/code_tracker.rbs new file mode 100644 index 00000000000..57b9534667b --- /dev/null +++ b/sig/datadog/di/code_tracker.rbs @@ -0,0 +1,23 @@ +module Datadog + module DI + class CodeTracker + @registry: Hash[String,RubyVM::InstructionSequence] + + @lock: Thread::Mutex + + @compiled_trace_point: TracePoint? + + def initialize: () -> void + + def start: () -> void + def active?: () -> bool + def iseqs_for_path: (String suffix) -> (::Array[RubyVM::InstructionSequence]) + def stop: () -> void + + private + attr_reader registry: Hash[String,RubyVM::InstructionSequence] + attr_reader trace_point_lock: Thread::Mutex + attr_reader registry_lock: Thread::Mutex + end + end +end diff --git a/sig/datadog/di/configuration.rbs b/sig/datadog/di/configuration.rbs new file mode 100644 index 00000000000..c993aa74e16 --- /dev/null +++ b/sig/datadog/di/configuration.rbs @@ -0,0 +1,6 @@ +module Datadog + module DI + module Configuration + end + end +end diff --git a/sig/datadog/di/configuration/settings.rbs b/sig/datadog/di/configuration/settings.rbs new file mode 100644 index 00000000000..a31058a58ce --- /dev/null +++ b/sig/datadog/di/configuration/settings.rbs @@ -0,0 +1,10 @@ +module Datadog + module DI + module Configuration + module Settings + def self.extended: (untyped base) -> untyped + def self.add_settings!: (untyped base) -> untyped + end + end + end +end diff --git a/sig/datadog/di/error.rbs b/sig/datadog/di/error.rbs new file mode 100644 index 00000000000..3f3dddc7780 --- /dev/null +++ b/sig/datadog/di/error.rbs @@ -0,0 +1,12 @@ +module Datadog + module DI + class Error < StandardError + class MissingLineNumber < Error + end + class AgentCommunicationError < Error + end + class DITargetNotDefined < Error + end + end + end +end diff --git a/sig/datadog/di/extensions.rbs b/sig/datadog/di/extensions.rbs new file mode 100644 index 00000000000..ac0a8530534 --- /dev/null +++ b/sig/datadog/di/extensions.rbs @@ -0,0 +1,7 @@ +module Datadog + module DI + module Extensions + def self.activate!: () -> untyped + end + end +end diff --git a/sig/datadog/di/probe.rbs b/sig/datadog/di/probe.rbs new file mode 100644 index 00000000000..760c7755dbc --- /dev/null +++ b/sig/datadog/di/probe.rbs @@ -0,0 +1,49 @@ +module Datadog + module DI + class Probe + KNOWN_TYPES: Array[Symbol] + + @id: String + + @type: Symbol + + @file: String? + + @line_no: Integer? + + @type_name: String? + + @method_name: String? + + @template: String + + @capture_snapshot: bool + + @rate_limiter: Datadog::Core::RateLimiter + + def initialize: (id: String, type: Symbol, ?file: String?, ?line_no: Integer?, ?type_name: String?, ?method_name: String?, ?template: String?, ?capture_snapshot: bool, + ?max_capture_depth: Integer, ?rate_limit: Integer) -> void + + attr_reader id: String + + attr_reader type: Symbol + + attr_reader file: String? + + attr_reader line_no: Integer? + + attr_reader type_name: String? + + attr_reader method_name: String? + + attr_reader template: String + attr_reader rate_limiter: Datadog::Core::RateLimiter + + def capture_snapshot?: () -> bool + def line?: () -> bool + def method?: () -> bool + def line_no!: () -> Integer + def location: () -> ::String + end + end +end diff --git a/sig/datadog/di/probe_builder.rbs b/sig/datadog/di/probe_builder.rbs new file mode 100644 index 00000000000..17068c79c72 --- /dev/null +++ b/sig/datadog/di/probe_builder.rbs @@ -0,0 +1,9 @@ +module Datadog + module DI + module ProbeBuilder + PROBE_TYPES: { "LOG_PROBE" => :log } + + def self?.build_from_remote_config: (Hash[untyped,untyped] config) -> Probe + end + end +end diff --git a/sig/datadog/di/redactor.rbs b/sig/datadog/di/redactor.rbs new file mode 100644 index 00000000000..5337bd3d0a2 --- /dev/null +++ b/sig/datadog/di/redactor.rbs @@ -0,0 +1,27 @@ +module Datadog + module DI + class Redactor + @settings: untyped + + @redacted_identifiers: untyped + + @redacted_type_names_regexp: Regexp + + def initialize: (untyped settings) -> void + + attr_reader settings: Datadog::Core::Configuration::Settings + + def redact_identifier?: (String name) -> (true | false) + + def redact_type?: (untyped value) -> (true | false) + + private + + def redacted_identifiers: () -> untyped + + def redacted_type_names_regexp: () -> untyped + DEFAULT_REDACTED_IDENTIFIERS: ::Array["2fa" | "accesstoken" | "aiohttpsession" | "apikey" | "apisecret" | "apisignature" | "appkey" | "applicationkey" | "auth" | "authorization" | "authtoken" | "ccnumber" | "certificatepin" | "cipher" | "clientid" | "clientsecret" | "connectionstring" | "connectsid" | "cookie" | "credentials" | "creditcard" | "csrf" | "csrftoken" | "cvv" | "databaseurl" | "dburl" | "encryptionkey" | "encryptionkeyid" | "env" | "geolocation" | "gpgkey" | "ipaddress" | "jti" | "jwt" | "licensekey" | "masterkey" | "mysqlpwd" | "nonce" | "oauth" | "oauthtoken" | "otp" | "passhash" | "passwd" | "password" | "passwordb" | "pemfile" | "pgpkey" | "phpsessid" | "pin" | "pincode" | "pkcs8" | "privatekey" | "publickey" | "pwd" | "recaptchakey" | "refreshtoken" | "routingnumber" | "salt" | "secret" | "secretkey" | "secrettoken" | "securityanswer" | "securitycode" | "securityquestion" | "serviceaccountcredentials" | "session" | "sessionid" | "sessionkey" | "setcookie" | "signature" | "signaturekey" | "sshkey" | "ssn" | "symfony" | "token" | "transactionid" | "twiliotoken" | "usersession" | "voterid" | "xapikey" | "xauthtoken" | "xcsrftoken" | "xforwardedfor" | "xrealip" | "xsrf" | "xsrftoken"] + def normalize: (untyped str) -> untyped + end + end +end diff --git a/sig/datadog/di/serializer.rbs b/sig/datadog/di/serializer.rbs new file mode 100644 index 00000000000..aaaf674148e --- /dev/null +++ b/sig/datadog/di/serializer.rbs @@ -0,0 +1,22 @@ +module Datadog + module DI + class Serializer + @settings: untyped + + @redactor: untyped + + def initialize: (untyped settings, untyped redactor) -> void + + attr_reader settings: Datadog::Core::Configuration::Settings + + attr_reader redactor: Datadog::DI::Redactor + + def serialize_args: (untyped args, untyped kwargs) -> untyped + def serialize_vars: (untyped vars) -> untyped + + private + def serialize_value: (untyped value, ?name: String, ?depth: untyped) -> ({ type: untyped, notCapturedReason: "redactedType" } | { type: untyped, notCapturedReason: "redactedIdent" } | untyped) + def class_name: (untyped cls) -> untyped + end + end +end diff --git a/sig/datadog/di/transport.rbs b/sig/datadog/di/transport.rbs new file mode 100644 index 00000000000..cfd6b1c07fa --- /dev/null +++ b/sig/datadog/di/transport.rbs @@ -0,0 +1,23 @@ +module Datadog + module DI + class Transport + @client: untyped + + DIAGNOSTICS_PATH: "/debugger/v1/diagnostics" + + INPUT_PATH: "/debugger/v1/input" + + def initialize: (untyped agent_settings) -> void + + def send_diagnostics: (Hash[untyped,untyped] payload) -> untyped + + def send_input: (Hash[untyped,untyped] payload) -> untyped + + private + + attr_reader client: untyped + + def send_request: (String desc, String path, Hash[untyped,untyped] payload, ?headers: ::Hash[untyped, untyped]) -> void + end + end +end diff --git a/sig/datadog/profiling/collectors/cpu_and_wall_time_worker.rbs b/sig/datadog/profiling/collectors/cpu_and_wall_time_worker.rbs index bea60e8971b..5813dff08d5 100644 --- a/sig/datadog/profiling/collectors/cpu_and_wall_time_worker.rbs +++ b/sig/datadog/profiling/collectors/cpu_and_wall_time_worker.rbs @@ -15,19 +15,23 @@ module Datadog ?idle_sampling_helper: Datadog::Profiling::Collectors::IdleSamplingHelper, ?dynamic_sampling_rate_enabled: bool, allocation_profiling_enabled: bool, + allocation_counting_enabled: bool, + gvl_profiling_enabled: bool, ?skip_idle_samples_for_testing: false, ) -> void def self._native_initialize: ( - CpuAndWallTimeWorker self_instance, - ThreadContext thread_context_collector, - bool gc_profiling_enabled, - IdleSamplingHelper idle_sampling_helper, - bool no_signals_workaround_enabled, - bool dynamic_sampling_rate_enabled, - Float dynamic_sampling_rate_overhead_target_percentage, - bool allocation_profiling_enabled, - bool skip_idle_samples_for_testing, + self_instance: CpuAndWallTimeWorker, + thread_context_collector: ThreadContext, + gc_profiling_enabled: bool, + idle_sampling_helper: IdleSamplingHelper, + no_signals_workaround_enabled: bool, + dynamic_sampling_rate_enabled: bool, + dynamic_sampling_rate_overhead_target_percentage: Float, + allocation_profiling_enabled: bool, + allocation_counting_enabled: bool, + gvl_profiling_enabled: bool, + skip_idle_samples_for_testing: bool, ) -> true def start: (?on_failure_proc: ::Proc?) -> bool? diff --git a/sig/datadog/profiling/collectors/thread_context.rbs b/sig/datadog/profiling/collectors/thread_context.rbs index 888fdc9dda0..76f649c6ee7 100644 --- a/sig/datadog/profiling/collectors/thread_context.rbs +++ b/sig/datadog/profiling/collectors/thread_context.rbs @@ -8,17 +8,19 @@ module Datadog tracer: Datadog::Tracing::Tracer?, endpoint_collection_enabled: bool, timeline_enabled: bool, - ?allocation_type_enabled: bool, + waiting_for_gvl_threshold_ns: ::Integer, + otel_context_enabled: (::Symbol? | bool), ) -> void def self._native_initialize: ( - Datadog::Profiling::Collectors::ThreadContext collector_instance, - Datadog::Profiling::StackRecorder recorder_instance, - ::Integer max_frames, - ::Symbol? tracer_context_key, - bool endpoint_collection_enabled, - bool timeline_enabled, - bool allocation_type_enabled, + self_instance: Datadog::Profiling::Collectors::ThreadContext, + recorder: Datadog::Profiling::StackRecorder, + max_frames: ::Integer, + tracer_context_key: ::Symbol?, + endpoint_collection_enabled: bool, + timeline_enabled: bool, + waiting_for_gvl_threshold_ns: ::Integer, + otel_context_enabled: (::Symbol? | bool), ) -> void def inspect: () -> ::String diff --git a/sig/datadog/profiling/component.rbs b/sig/datadog/profiling/component.rbs index bda16b8f78e..227383e0de6 100644 --- a/sig/datadog/profiling/component.rbs +++ b/sig/datadog/profiling/component.rbs @@ -26,11 +26,6 @@ module Datadog Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings agent_settings ) -> untyped - def self.build_crashtracker: ( - untyped settings, - untyped transport, - ) -> Datadog::Profiling::Crashtracker? - def self.enable_gc_profiling?: (untyped settings) -> bool def self.enable_allocation_profiling?: (untyped settings) -> bool def self.get_heap_sample_every: (untyped settings) -> ::Integer @@ -44,6 +39,7 @@ module Datadog def self.valid_overhead_target: (::Float overhead_target_percentage) -> ::Float def self.looks_like_mariadb?: ({ header_version: ::String? }, ::Gem::Version) -> bool def self.dir_interruption_workaround_enabled?: (untyped settings, bool no_signals_workaround_enabled) -> bool + def self.enable_gvl_profiling?: (untyped settings) -> bool end end end diff --git a/sig/datadog/profiling/crashtracker.rbs b/sig/datadog/profiling/crashtracker.rbs deleted file mode 100644 index 60b2057880c..00000000000 --- a/sig/datadog/profiling/crashtracker.rbs +++ /dev/null @@ -1,44 +0,0 @@ -module Datadog - module Profiling - class Crashtracker - type exporter_configuration_array = [:agentless | :agent, untyped] - - private - - attr_reader exporter_configuration: exporter_configuration_array - attr_reader tags_as_array: ::Array[[::String, ::String]] - attr_reader path_to_crashtracking_receiver_binary: ::String - attr_reader ld_library_path: ::String - attr_reader upload_timeout_seconds: ::Integer - - public - - def initialize: ( - exporter_configuration: exporter_configuration_array, - tags: ::Hash[::String, ::String], - upload_timeout_seconds: ::Integer, - ?path_to_crashtracking_receiver_binary: ::String, - ?ld_library_path: ::String, - ) -> void - - def start: -> void - def stop: -> void - def reset_after_fork: -> void - - private - - def start_or_update_on_fork: (action: :start | :update_on_fork) -> void - - def self._native_start_or_update_on_fork: ( - action: :start | :update_on_fork, - exporter_configuration: exporter_configuration_array, - path_to_crashtracking_receiver_binary: ::String, - ld_library_path: ::String, - tags_as_array: ::Array[[::String, ::String]], - upload_timeout_seconds: ::Integer, - ) -> void - - def self._native_stop: -> void - end - end -end diff --git a/sig/datadog/profiling/ext/forking.rbs b/sig/datadog/profiling/ext/forking.rbs deleted file mode 100644 index fb6bdad55ce..00000000000 --- a/sig/datadog/profiling/ext/forking.rbs +++ /dev/null @@ -1,21 +0,0 @@ -module Datadog - module Profiling - module Ext - module Forking - def self.supported?: () -> untyped - - def self.apply!: () -> (false | untyped) - module Kernel - def fork: () { () -> untyped } -> untyped - - def at_fork: (untyped stage) ?{ () -> untyped } -> untyped - - def self?.datadog_at_fork_blocks: () -> untyped - end - module ProcessDaemonPatch - def daemon: (*untyped args) -> untyped - end - end - end - end -end diff --git a/sig/datadog/profiling/http_transport.rbs b/sig/datadog/profiling/http_transport.rbs index 4713ebfb57e..8c58ea8180e 100644 --- a/sig/datadog/profiling/http_transport.rbs +++ b/sig/datadog/profiling/http_transport.rbs @@ -61,7 +61,7 @@ module Datadog ::String info_json, ) -> [:ok | :error, ::Integer | ::String] - def config_without_api_key: () -> ::Hash[:agent | :agentless, ::String] + def config_without_api_key: () -> ::String end end end diff --git a/sig/datadog/profiling/profiler.rbs b/sig/datadog/profiling/profiler.rbs index b9c3180d41e..99f0a744a83 100644 --- a/sig/datadog/profiling/profiler.rbs +++ b/sig/datadog/profiling/profiler.rbs @@ -7,14 +7,12 @@ module Datadog attr_reader worker: Datadog::Profiling::Collectors::CpuAndWallTimeWorker attr_reader scheduler: Datadog::Profiling::Scheduler - attr_reader optional_crashtracker: Datadog::Profiling::Crashtracker public def initialize: ( worker: Datadog::Profiling::Collectors::CpuAndWallTimeWorker, - scheduler: Datadog::Profiling::Scheduler, - optional_crashtracker: Datadog::Profiling::Crashtracker?, + scheduler: Datadog::Profiling::Scheduler ) -> void def start: () -> void diff --git a/sig/datadog/profiling/scheduler.rbs b/sig/datadog/profiling/scheduler.rbs index fabd51ecabb..8a7e9765ed6 100644 --- a/sig/datadog/profiling/scheduler.rbs +++ b/sig/datadog/profiling/scheduler.rbs @@ -14,6 +14,7 @@ module Datadog def start: (?on_failure_proc: ::Proc?) -> void def reset_after_fork: () -> void + def mark_profiler_failed: () -> true end end end diff --git a/sig/datadog/profiling/stack_recorder.rbs b/sig/datadog/profiling/stack_recorder.rbs index cdae548b1ea..9de423ec657 100644 --- a/sig/datadog/profiling/stack_recorder.rbs +++ b/sig/datadog/profiling/stack_recorder.rbs @@ -10,16 +10,18 @@ module Datadog heap_size_enabled: bool, heap_sample_every: Integer, timeline_enabled: bool, + heap_clean_after_gc_enabled: bool, ) -> void def self._native_initialize: ( - Datadog::Profiling::StackRecorder recorder_instance, - bool cpu_time_enabled, - bool alloc_samples_enabled, - bool heap_samples_enabled, - bool heap_size_enabled, - Integer heap_sample_every, - bool timeline_enabled, + self_instance: Datadog::Profiling::StackRecorder, + cpu_time_enabled: bool, + alloc_samples_enabled: bool, + heap_samples_enabled: bool, + heap_size_enabled: bool, + heap_sample_every: Integer, + timeline_enabled: bool, + heap_clean_after_gc_enabled: bool, ) -> true type serialized_profile_data = [ diff --git a/sig/datadog/single_step_instrument.rbs b/sig/datadog/single_step_instrument.rbs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sig/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rbs b/sig/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rbs new file mode 100644 index 00000000000..87364b3d313 --- /dev/null +++ b/sig/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rbs @@ -0,0 +1,21 @@ +module Datadog + module Tracing + module Contrib + module ActionPack + module ActionDispatch + module Instrumentation + def self?.set_http_route_tag: (untyped http_route) -> (nil | untyped) + module Journey + module Router + def find_routes: (untyped req) -> untyped + end + module LazyRouter + def serve: (untyped req) -> untyped + end + end + end + end + end + end + end +end diff --git a/sig/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rbs b/sig/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rbs new file mode 100644 index 00000000000..c4ade81bee1 --- /dev/null +++ b/sig/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rbs @@ -0,0 +1,17 @@ +module Datadog + module Tracing + module Contrib + module ActionPack + module ActionDispatch + module Patcher + include Contrib::Patcher + + def self?.target_version: () -> untyped + + def self?.patch: () -> untyped + end + end + end + end + end +end diff --git a/sig/datadog/tracing/contrib/propagation/sql_comment.rbs b/sig/datadog/tracing/contrib/propagation/sql_comment.rbs index 1f28f3526dc..c8af3e7c1fe 100644 --- a/sig/datadog/tracing/contrib/propagation/sql_comment.rbs +++ b/sig/datadog/tracing/contrib/propagation/sql_comment.rbs @@ -3,10 +3,8 @@ module Datadog module Contrib module Propagation module SqlComment - def self.annotate!: (untyped span_op, untyped mode) -> (nil | untyped) - def self.prepend_comment: (String sql, SpanOperation span_op, TraceOperation trace_op, untyped mode) -> String - - def self.datadog_configuration: () -> untyped + def self.annotate!: (SpanOperation span_op, Mode mode) -> void + def self.prepend_comment: (String sql, SpanOperation span_op, TraceOperation trace_op, Mode mode) -> String end end end diff --git a/sig/datadog/tracing/contrib/propagation/sql_comment/comment.rbs b/sig/datadog/tracing/contrib/propagation/sql_comment/comment.rbs index 7fbc04ef5a1..46db9700614 100644 --- a/sig/datadog/tracing/contrib/propagation/sql_comment/comment.rbs +++ b/sig/datadog/tracing/contrib/propagation/sql_comment/comment.rbs @@ -4,9 +4,8 @@ module Datadog module Propagation module SqlComment class Comment - def initialize: (untyped hash) -> void - - def to_s: () -> untyped + def initialize: (Hash[string, untyped] hash) -> void + def to_s: () -> string end end end diff --git a/sig/datadog/tracing/contrib/propagation/sql_comment/mode.rbs b/sig/datadog/tracing/contrib/propagation/sql_comment/mode.rbs index 1f2f2d80bb7..89074b5d2c8 100644 --- a/sig/datadog/tracing/contrib/propagation/sql_comment/mode.rbs +++ b/sig/datadog/tracing/contrib/propagation/sql_comment/mode.rbs @@ -3,12 +3,13 @@ module Datadog module Contrib module Propagation module SqlComment - class Mode < ::Struct[String] - attr_accessor mode: String + class Mode < ::Struct[untyped] + def initialize: (string mode, bool append) -> void def enabled?: -> bool def service?: -> bool def full?: -> bool + def append?: -> bool end end end diff --git a/sig/datadog/tracing/metadata/ext.rbs b/sig/datadog/tracing/metadata/ext.rbs index aeca3b827a1..9820be2b123 100644 --- a/sig/datadog/tracing/metadata/ext.rbs +++ b/sig/datadog/tracing/metadata/ext.rbs @@ -45,6 +45,7 @@ module Datadog TAG_STATUS_CODE: ::String TAG_USER_AGENT: ::String TAG_URL: ::String + TAG_ROUTE: ::String TYPE_INBOUND: untyped TYPE_OUTBOUND: ::String TYPE_PROXY: ::String diff --git a/sig/datadog/tracing/remote.rbs b/sig/datadog/tracing/remote.rbs index d1d7bcd8235..2366abe48bc 100644 --- a/sig/datadog/tracing/remote.rbs +++ b/sig/datadog/tracing/remote.rbs @@ -13,7 +13,7 @@ module Datadog def self.process_config: (Hash[String, untyped] config, Core::Remote::Configuration::Content content) -> void - def self.receivers: () -> ::Array[Core::Remote::Dispatcher::Receiver] + def self.receivers: (Datadog::Core::Telemetry::Component) -> ::Array[Core::Remote::Dispatcher::Receiver] def self.receiver: (?::Array[String] products) { (Core::Remote::Configuration::Repository repository, Array[Core::Remote::Configuration::Repository::change] changes) -> void } -> ::Array[Core::Remote::Dispatcher::Receiver] diff --git a/sig/datadog/tracing/sampling/rate_limiter.rbs b/sig/datadog/tracing/sampling/rate_limiter.rbs deleted file mode 100644 index 63e86785d35..00000000000 --- a/sig/datadog/tracing/sampling/rate_limiter.rbs +++ /dev/null @@ -1,37 +0,0 @@ -module Datadog - module Tracing - module Sampling - class RateLimiter - def allow?: (untyped size) -> nil - def effective_rate: () -> nil - end - class TokenBucket < RateLimiter - attr_reader rate: untyped - - attr_reader max_tokens: untyped - def initialize: (untyped rate, ?untyped max_tokens) -> void - def allow?: (untyped size) -> untyped - def effective_rate: () -> (::Float | untyped) - def current_window_rate: () -> (::Float | untyped) - def available_tokens: () -> untyped - - private - - def refill_since_last_message: () -> untyped - - def refill_tokens: (untyped size) -> untyped - - def increment_total_count: () -> untyped - - def increment_conforming_count: () -> untyped - - def should_allow?: (untyped size) -> (false | true) - def update_rate_counts: (untyped allowed) -> untyped - end - class UnlimitedLimiter < RateLimiter - def allow?: (untyped _) -> true - def effective_rate: () -> ::Float - end - end - end -end diff --git a/spec/datadog/appsec/component_spec.rb b/spec/datadog/appsec/component_spec.rb index 055353c960d..84e3a4e569d 100644 --- a/spec/datadog/appsec/component_spec.rb +++ b/spec/datadog/appsec/component_spec.rb @@ -9,18 +9,47 @@ settings end + let(:telemetry) { instance_double(Datadog::Core::Telemetry::Component) } + context 'when appsec is enabled' do let(:appsec_enabled) { true } it 'returns a Datadog::AppSec::Component instance' do - component = described_class.build_appsec_component(settings) + component = described_class.build_appsec_component(settings, telemetry: telemetry) expect(component).to be_a(described_class) end + context 'when using old ffi version with Ruby 3.3.x' do + before do + stub_const('RUBY_VERSION', '3.3.0') + allow(Gem).to receive(:loaded_specs).and_return('ffi' => double(version: Gem::Version.new('1.15.4'))) + end + + it 'returns a Datadog::AppSec::Component instance with a nil processor' do + expect(Datadog.logger).to receive(:warn) + + component = described_class.build_appsec_component(settings, telemetry: telemetry) + expect(component).to be_nil + end + end + + context 'when ffi is not loaded' do + before do + allow(Gem).to receive(:loaded_specs).and_return({}) + end + + it 'returns a Datadog::AppSec::Component instance with a nil processor and does not warn' do + expect(Datadog.logger).not_to receive(:warn) + + component = described_class.build_appsec_component(settings, telemetry: telemetry) + expect(component).to be_nil + end + end + context 'when processor is ready' do it 'returns a Datadog::AppSec::Component with a processor instance' do expect_any_instance_of(Datadog::AppSec::Processor).to receive(:ready?).and_return(true) - component = described_class.build_appsec_component(settings) + component = described_class.build_appsec_component(settings, telemetry: telemetry) expect(component.processor).to be_a(Datadog::AppSec::Processor) end @@ -29,7 +58,7 @@ context 'when processor fail to instanciate' do it 'returns a Datadog::AppSec::Component with a nil processor' do expect_any_instance_of(Datadog::AppSec::Processor).to receive(:ready?).and_return(false) - component = described_class.build_appsec_component(settings) + component = described_class.build_appsec_component(settings, telemetry: telemetry) expect(component.processor).to be_nil end @@ -39,7 +68,7 @@ it 'returns a Datadog::AppSec::Component with a nil processor' do expect(Datadog::AppSec::Processor::RuleLoader).to receive(:load_rules).and_return(nil) - component = described_class.build_appsec_component(settings) + component = described_class.build_appsec_component(settings, telemetry: telemetry) expect(component.processor).to be_nil end @@ -85,7 +114,7 @@ expect(Datadog::AppSec::Processor::Actions).to receive(:merge).with(actions) expect(Datadog::AppSec::Processor::RuleLoader).to receive(:load_rules).and_return(ruleset) - component = described_class.build_appsec_component(settings) + component = described_class.build_appsec_component(settings, telemetry: telemetry) expect(component.processor).to be_a(Datadog::AppSec::Processor) end @@ -119,7 +148,7 @@ expect(Datadog::AppSec::Processor::Actions).to_not receive(:merge) expect(Datadog::AppSec::Processor::RuleLoader).to receive(:load_rules).and_return(ruleset) - component = described_class.build_appsec_component(settings) + component = described_class.build_appsec_component(settings, telemetry: telemetry) expect(component.processor).to be_a(Datadog::AppSec::Processor) end @@ -130,20 +159,24 @@ let(:appsec_enabled) { false } it 'returns nil' do - component = described_class.build_appsec_component(settings) + component = described_class.build_appsec_component(settings, telemetry: telemetry) expect(component).to be_nil end end context 'when appsec is not active' do it 'returns nil' do - component = described_class.build_appsec_component(double(Datadog::Core::Configuration::Settings)) + component = described_class.build_appsec_component( + double(Datadog::Core::Configuration::Settings), + telemetry: telemetry + ) expect(component).to be_nil end end end describe '#reconfigure' do + let(:telemetry) { instance_double(Datadog::Core::Telemetry::Component, report: nil) } let(:ruleset) do { 'exclusions' => [{ @@ -196,7 +229,7 @@ component = described_class.new(processor: processor) component.instance_variable_set(:@mutex, mutex) expect(mutex).to receive(:synchronize) - component.reconfigure(ruleset: {}, actions: actions) + component.reconfigure(ruleset: {}, actions: actions, telemetry: telemetry) end end @@ -207,7 +240,7 @@ component = described_class.new(processor: processor) expect(Datadog::AppSec::Processor::Actions).to receive(:merge).with(actions) - component.reconfigure(ruleset: ruleset, actions: actions) + component.reconfigure(ruleset: ruleset, actions: actions, telemetry: telemetry) end end @@ -219,7 +252,7 @@ old_processor = component.processor expect(old_processor).to receive(:finalize) - component.reconfigure(ruleset: ruleset, actions: actions) + component.reconfigure(ruleset: ruleset, actions: actions, telemetry: telemetry) new_processor = component.processor expect(new_processor).to_not eq(old_processor) new_processor.finalize @@ -234,7 +267,7 @@ old_processor = component.processor expect(old_processor).to_not receive(:finalize) - component.reconfigure(ruleset: ruleset, actions: actions) + component.reconfigure(ruleset: ruleset, actions: actions, telemetry: telemetry) new_processor = component.processor expect(new_processor).to_not eq(old_processor) new_processor.finalize @@ -251,7 +284,7 @@ ruleset = { 'invalid_one' => true } expect(old_processor).to_not receive(:finalize) - component.reconfigure(ruleset: ruleset, actions: actions) + component.reconfigure(ruleset: ruleset, actions: actions, telemetry: telemetry) expect(component.processor).to eq(old_processor) end end diff --git a/spec/datadog/appsec/configuration/settings_spec.rb b/spec/datadog/appsec/configuration/settings_spec.rb index a19a0a94550..3d8115bc3fc 100644 --- a/spec/datadog/appsec/configuration/settings_spec.rb +++ b/spec/datadog/appsec/configuration/settings_spec.rb @@ -757,5 +757,45 @@ def patcher end end end + + describe 'standalone' do + describe '#enabled' do + subject(:enabled) { settings.appsec.standalone.enabled } + + context 'when DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED' do + around do |example| + ClimateControl.modify('DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED' => appsec_standalone_enabled) do + example.run + end + end + + context 'is not defined' do + let(:appsec_standalone_enabled) { nil } + + it { is_expected.to eq false } + end + + context 'is defined' do + let(:appsec_standalone_enabled) { 'true' } + + it { is_expected.to eq(true) } + end + end + end + + describe '#enabled=' do + subject(:set_appsec_standalone_enabled) { settings.appsec.standalone.enabled = appsec_standalone_enabled } + + [true, false].each do |value| + context "when given #{value}" do + let(:appsec_standalone_enabled) { value } + + before { set_appsec_standalone_enabled } + + it { expect(settings.appsec.standalone.enabled).to eq(value) } + end + end + end + end end end diff --git a/spec/datadog/appsec/contrib/devise/patcher/authenticatable_patch_spec.rb b/spec/datadog/appsec/contrib/devise/patcher/authenticatable_patch_spec.rb index 5c7f346dade..7985e8dde31 100644 --- a/spec/datadog/appsec/contrib/devise/patcher/authenticatable_patch_spec.rb +++ b/spec/datadog/appsec/contrib/devise/patcher/authenticatable_patch_spec.rb @@ -39,11 +39,11 @@ def initialize(id, email, username) let(:failed_login) { mock_klass.new(false) } before do - expect(Datadog::AppSec).to receive(:enabled?).and_return(appsec_enabled) + allow(Datadog::AppSec).to receive(:enabled?).and_return(appsec_enabled) if appsec_enabled - expect(Datadog.configuration.appsec).to receive(:track_user_events).and_return(automated_track_user_events) + allow(Datadog.configuration.appsec).to receive(:track_user_events).and_return(automated_track_user_events) - expect(Datadog::AppSec).to receive(:active_scope).and_return(appsec_scope) if track_user_events_enabled + allow(Datadog::AppSec).to receive(:active_scope).and_return(appsec_scope) if track_user_events_enabled end end @@ -67,7 +67,7 @@ def initialize(id, email, username) end end - context 'AppSec scope is nil ' do + context 'AppSec scope is nil' do let(:appsec_enabled) { true } let(:track_user_events_enabled) { true } let(:mode) { 'safe' } @@ -79,6 +79,33 @@ def initialize(id, email, username) end end + context 'when logging in from Rememberable devise strategy' do + let(:appsec_enabled) { true } + let(:track_user_events_enabled) { true } + let(:appsec_scope) { instance_double(Datadog::AppSec::Scope, trace: double, service_entry_span: double) } + + let(:mock_klass) do + Class.new do + def validate(resource, &block) + @result + end + + prepend Datadog::AppSec::Contrib::Devise::Patcher::AuthenticatablePatch + prepend Datadog::AppSec::Contrib::Devise::Patcher::RememberablePatch + + def initialize(result) + @result = result + end + end + end + + it 'does not track login event' do + expect(Datadog::AppSec::Contrib::Devise::Tracking).to_not receive(:track_login_success) + + expect(success_login.validate(resource)).to eq(true) + end + end + context 'successful login' do let(:appsec_enabled) { true } let(:track_user_events_enabled) { true } diff --git a/spec/datadog/appsec/contrib/graphql/appsec_trace_spec.rb b/spec/datadog/appsec/contrib/graphql/appsec_trace_spec.rb new file mode 100644 index 00000000000..1d9175fa81b --- /dev/null +++ b/spec/datadog/appsec/contrib/graphql/appsec_trace_spec.rb @@ -0,0 +1,102 @@ +# frozen_string_literal: true + +require 'datadog/tracing/contrib/graphql/support/application' + +require 'datadog/appsec/spec_helper' +require 'datadog/appsec/contrib/graphql/appsec_trace' + +RSpec.describe Datadog::AppSec::Contrib::GraphQL::AppSecTrace do + include_context 'with GraphQL schema' + + it 'returns the correct result when given a valid query' do + bits = schema.execute('query test{ user(id: 1) { name } }') + expect(bits.to_h).to eq({ 'data' => { 'user' => { 'name' => 'Bits' } } }) + + caniche = schema.execute('query test{ user(id: 10) { name } }') + expect(caniche.to_h).to eq({ 'data' => { 'user' => { 'name' => 'Caniche' } } }) + + bits_by_name = schema.execute('query test{ userByName(name: "Bits") { id } }') + expect(bits_by_name.to_h).to eq({ 'data' => { 'userByName' => { 'id' => '1' } } }) + + caniche_by_name = schema.execute('query test{ userByName(name: "Caniche") { id } }') + expect(caniche_by_name.to_h).to eq({ 'data' => { 'userByName' => { 'id' => '10' } } }) + end + + it 'returns an error when given an invalid query' do + result = schema.execute('query test{ error(id: 10) { name } }') + expect(result.to_h['data']).to be_nil + expect(result.to_h['errors']).to eq( + [ + { + 'message' => "Field 'error' doesn't exist on type 'Query'", + 'locations' => [{ 'line' => 1, 'column' => 13 }], + 'path' => ['query test', 'error'], + 'extensions' => { 'code' => 'undefinedField', 'typeName' => 'Query', 'fieldName' => 'error' } + } + ] + ) + end + + include_context 'with GraphQL multiplex' + it 'returns the correct result when given an valid multiplex' do + result = + if Gem::Version.new(::GraphQL::VERSION) < Gem::Version.new('2.0.0') + schema.multiplex( + queries.map do |query| + { + query: query.query_string, + operation_name: query.operation_name, + variables: query.variables + } + end + ) + else + schema.multiplex(queries) + end + + expect(result.map(&:to_h)).to eq( + [ + { 'data' => { 'user' => { 'name' => 'Bits' } } }, + { 'data' => { 'user' => { 'name' => 'Caniche' } } }, + { 'data' => { 'userByName' => { 'id' => '10' } } } + ] + ) + end + + it 'returns a partially correct result when given a multiplex with an invalid query' do + queries << ::GraphQL::Query.new(schema, 'query test{ error(id: 10) { name } }') + result = + if Gem::Version.new(::GraphQL::VERSION) < Gem::Version.new('2.0.0') + schema.multiplex( + queries.map do |query| + { + query: query.query_string, + operation_name: query.operation_name, + variables: query.variables + } + end + ) + else + schema.multiplex(queries) + end + + expect(result.map(&:to_h)).to eq( + [ + { 'data' => { 'user' => { 'name' => 'Bits' } } }, + { 'data' => { 'user' => { 'name' => 'Caniche' } } }, + { 'data' => { 'userByName' => { 'id' => '10' } } }, + { + 'errors' => + [ + { + 'message' => "Field 'error' doesn't exist on type 'Query'", + 'locations' => [{ 'line' => 1, 'column' => 13 }], + 'path' => ['query test', 'error'], + 'extensions' => { 'code' => 'undefinedField', 'typeName' => 'Query', 'fieldName' => 'error' } + } + ] + } + ] + ) + end +end diff --git a/spec/datadog/appsec/contrib/graphql/gateway/multiplex_spec.rb b/spec/datadog/appsec/contrib/graphql/gateway/multiplex_spec.rb new file mode 100644 index 00000000000..2a3ea7bdd5f --- /dev/null +++ b/spec/datadog/appsec/contrib/graphql/gateway/multiplex_spec.rb @@ -0,0 +1,387 @@ +# frozen_string_literal: true + +require 'datadog/appsec/spec_helper' +require 'datadog/appsec/contrib/graphql/gateway/multiplex' + +RSpec.describe Datadog::AppSec::Contrib::GraphQL::Gateway::Multiplex do + subject(:dd_multiplex) { described_class.new(multiplex) } + + let(:schema) do + # we are only testing how arguments are extracted from the queries, + # therefore we don't need a real schema here + stub_const('TestSchema', Class.new(::GraphQL::Schema)) + end + + describe '#arguments' do + let(:multiplex) do + ::GraphQL::Execution::Multiplex.new( + schema: schema, + queries: queries, + context: { dataloader: GraphQL::Dataloader.new(nonblocking: nil) }, + max_complexity: nil + ) + end + + context 'query with argument values provided inline in the query' do + let(:queries) do + [ + ::GraphQL::Query.new( + schema, + <<~END_OF_QUERY + query { + post(slug: "my-first-post") { + title + content + } + author(username: "john") { name } + } + END_OF_QUERY + ) + ] + end + + it 'returns correct arguments' do + expect(dd_multiplex.arguments).to( + eq( + 'post' => [{ 'slug' => 'my-first-post' }], + 'author' => [{ 'username' => 'john' }] + ) + ) + end + end + + context 'query with argument values provided in query variables' do + let(:queries) do + [ + ::GraphQL::Query.new( + schema, + <<~END_OF_QUERY, + query getPost( + $postSlug: String = "default-post", + $authorUsername: String! + ) { + post(slug: $postSlug) { + title + content + } + author(username: $authorUsername) { name } + } + END_OF_QUERY + variables: { 'postSlug' => 'some-post', 'authorUsername' => 'jane' } + ) + ] + end + + it 'returns correct arguments' do + expect(dd_multiplex.arguments).to( + eq( + 'post' => [{ 'slug' => 'some-post' }], + 'author' => [{ 'username' => 'jane' }] + ) + ) + end + end + + context 'query with arguments with a default value and no value provided' do + let(:queries) do + [ + ::GraphQL::Query.new( + schema, + <<~END_OF_QUERY + query getPost($postSlug: String = "default-post") { + post(slug: $postSlug) { + title + content + } + } + END_OF_QUERY + ) + ] + end + + it 'returns correct arguments' do + expect(dd_multiplex.arguments).to eq('post' => [{ 'slug' => 'default-post' }]) + end + end + + context 'multiple queries that are querying the same field' do + let(:queries) do + [ + ::GraphQL::Query.new( + schema, + <<~END_OF_QUERY, + query getPost($postSlug: String) { + post(slug: $postSlug) { + title + content + } + } + END_OF_QUERY + variables: { 'postSlug' => 'some-post' } + ), + ::GraphQL::Query.new( + schema, + <<~END_OF_QUERY, + query getPost($postSlug: String) { + post(slug: $postSlug) { + title + content + } + } + END_OF_QUERY + variables: { 'postSlug' => 'another-post' } + ) + ] + end + + it 'returns all arguments for the field' do + expect(dd_multiplex.arguments).to( + eq('post' => [{ 'slug' => 'some-post' }, { 'slug' => 'another-post' }]) + ) + end + end + + context 'query with aliases' do + let(:queries) do + [ + GraphQL::Query.new( + schema, + <<~END_OF_QUERY, + query MyTestQuery ($firstPostSlug: String, $secondPostSlug: String) { + firstPost: post(slug: $firstPostSlug) { title } + secondPost: post(slug: $secondPostSlug) { title } + } + END_OF_QUERY + variables: { + 'firstPostSlug' => 'first-post', + 'secondPostSlug' => 'second-post' + } + ) + ] + end + + it 'returns correct arguments' do + expect(dd_multiplex.arguments).to( + eq( + 'firstPost' => [{ 'slug' => 'first-post' }], + 'secondPost' => [{ 'slug' => 'second-post' }] + ) + ) + end + end + + context 'query with arguments to non-resolver fields' do + let(:queries) do + [ + GraphQL::Query.new( + schema, + <<~END_OF_QUERY, + query MyTestQuery ($postSlug: String!, $ignoreDislikes: Boolean!) { + post(slug: $postSlug) { + title + rating(ignoreDislikes: $ignoreDislikes) + } + } + END_OF_QUERY + variables: { + 'postSlug' => 'some-post', + 'ignoreDislikes' => true + } + ) + ] + end + + it 'returns correct arguments including non-resolver field arguments' do + expect(dd_multiplex.arguments).to( + eq( + 'post' => [{ 'slug' => 'some-post' }], + 'rating' => [{ 'ignoreDislikes' => true }] + ) + ) + end + end + + context 'query with directives' do + let(:queries) do + [ + GraphQL::Query.new( + schema, + <<~END_OF_QUERY, + fragment AuthorData on Author { + name + username + } + + query MyTestQuery ( + $postSlug: String!, + $withComments: Boolean!, + $skipAuthor: Boolean! + ) { + post(slug: $postSlug) { + title + content + author @skip(if: $skipAuthor) { + ...AuthorData + } + comments @include(if: $withComments) { + author { ...AuthorData } + content + } + } + } + END_OF_QUERY + variables: { postSlug: 'some-post', withComments: true, skipAuthor: false } + ) + ] + end + + it 'returns correct arguments with directive arguments' do + expect(dd_multiplex.arguments).to( + eq( + 'post' => [{ 'slug' => 'some-post' }], + 'author' => [{ 'skip' => { 'if' => false } }], + 'comments' => [{ 'include' => { 'if' => true } }] + ) + ) + end + end + + # this spec is to ensure that no exceptions are raised when query contains fragments + context 'query with fragments' do + let(:queries) do + [ + GraphQL::Query.new( + schema, + <<~END_OF_QUERY, + fragment AuthorData on Author { + name + username + } + + fragment CommentData on Comment { + author { + ...AuthorData + } + content + } + + query MyTestQuery ($postSlug: String = "my-first-post") { + post(slug: $postSlug) { + title + content + author { + ...AuthorData + } + comments { + ...CommentData + } + } + } + END_OF_QUERY + variables: { 'postSlug' => 'some-post' } + ) + ] + end + + it 'returns correct arguments' do + expect(dd_multiplex.arguments).to eq('post' => [{ 'slug' => 'some-post' }]) + end + end + + context 'mutation' do + let(:queries) do + [ + ::GraphQL::Query.new( + schema, + <<~END_OF_QUERY, + mutation addPost( + $postContent: String!, + $authorID: String! + ) { + addPost( + input: { + title: "Some title", + content: $postContent, + authorId: $authorID + } + ) { + post { title slug content } + } + } + END_OF_QUERY + variables: { 'postContent' => 'Some content', 'authorID' => '1' } + ) + ] + end + + it 'returns correct arguments' do + expect(dd_multiplex.arguments).to( + eq( + 'addPost' => [ + { + 'input' => { + 'content' => 'Some content', + 'authorId' => '1', + 'title' => 'Some title' + } + } + ] + ) + ) + end + end + + context 'subscription' do + let(:queries) do + [ + ::GraphQL::Query.new( + schema, + <<~END_OF_QUERY, + subscription postComments($postSlug: String!) { + postCommentsSubscribe(slug: $postSlug) { + comments { + author { name } + content + } + } + } + END_OF_QUERY + variables: { 'postSlug' => 'some-post' } + ) + ] + end + + it 'returns correct arguments' do + expect(dd_multiplex.arguments).to( + eq('postCommentsSubscribe' => [{ 'slug' => 'some-post' }]) + ) + end + end + end + + describe '#queries' do + let(:multiplex) do + ::GraphQL::Execution::Multiplex.new( + schema: schema, + queries: [query], + context: { dataloader: GraphQL::Dataloader.new(nonblocking: nil) }, + max_complexity: nil + ) + end + + let(:query) do + ::GraphQL::Query.new( + schema, + <<~END_OF_QUERY, + query getPost($postSlug: String!) { + post(slug: $postSlug) { title } + } + END_OF_QUERY + ) + end + + it 'returns queries' do + expect(dd_multiplex.queries).to eq([query]) + end + end +end diff --git a/spec/datadog/appsec/contrib/graphql/integration_spec.rb b/spec/datadog/appsec/contrib/graphql/integration_spec.rb new file mode 100644 index 00000000000..c8093e1aea9 --- /dev/null +++ b/spec/datadog/appsec/contrib/graphql/integration_spec.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require 'datadog/appsec/spec_helper' +require 'datadog/appsec/contrib/graphql/integration' + +RSpec.describe Datadog::AppSec::Contrib::GraphQL::Integration do + describe '.ast_node_classes_defined?' do + it 'returns true when all AST node classes are defined' do + expect(described_class.ast_node_classes_defined?).to be(true) + end + + it 'returns false when at least one of AST node classes is not defined' do + hide_const('GraphQL::Language::Nodes::Field') + expect(described_class.ast_node_classes_defined?).to be(false) + end + end +end diff --git a/spec/datadog/appsec/contrib/graphql/integration_test_spec.rb b/spec/datadog/appsec/contrib/graphql/integration_test_spec.rb new file mode 100644 index 00000000000..5209b92355a --- /dev/null +++ b/spec/datadog/appsec/contrib/graphql/integration_test_spec.rb @@ -0,0 +1,576 @@ +require 'datadog/tracing/contrib/graphql/support/application' + +require 'datadog/appsec/contrib/support/integration/shared_examples' + +require 'datadog/tracing' +require 'datadog/appsec' + +require 'json' + +RSpec.describe 'GraphQL integration tests', + skip: Gem::Version.new(::GraphQL::VERSION) < Gem::Version.new('2.0.19') do + let(:sorted_spans) do + chain = lambda do |start| + loop.with_object([start]) do |_, o| + # root reached (default) + break o if o.last.parent_id == 0 + + parent = spans.find { |span| span.id == o.last.parent_id } + + # root reached (distributed tracing) + break o if parent.nil? + + o << parent + end + end + sort = ->(list) { list.sort_by { |e| chain.call(e).count } } + sort.call(spans) + end + + let(:rack_span) { sorted_spans.reverse.find { |x| x.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST } } + + let(:appsec_enabled) { true } + let(:tracing_enabled) { true } + let(:appsec_ruleset) { :recommended } + let(:client_ip) { '127.0.0.1' } + + let(:blocking_testattack) do + { + 'version' => '2.2', + 'metadata' => { + 'rules_version' => '1.4.1' + }, + 'rules' => [ + { + id: 'custom-000-000', + name: 'Test Blocking GraphQL WAF', + tags: { + type: 'attack_tool', + category: 'attack_attempt', + cwe: '200', + capec: '1000/118/169', + tool_name: 'Datadog Canary Test', + confidence: '1' + }, + conditions: [ + { + parameters: { + inputs: [ + { + address: 'graphql.server.all_resolvers' + } + ], + options: { + enforce_word_boundary: true + }, + list: [ + '$testattack' + ] + }, + operator: 'phrase_match' + } + ], + transformers: [ + 'lowercase' + ], + on_match: [ + 'block' + ] + } + ] + } + end + + let(:nonblocking_testattack) do + { + 'version' => '2.2', + 'metadata' => { + 'rules_version' => '1.4.1' + }, + 'rules' => [ + { + id: 'custom-000-000', + name: 'Test Blocking GraphQL WAF', + tags: { + type: 'attack_tool', + category: 'attack_attempt', + cwe: '200', + capec: '1000/118/169', + tool_name: 'Datadog Canary Test', + confidence: '1' + }, + conditions: [ + { + parameters: { + inputs: [ + { + address: 'graphql.server.all_resolvers' + } + ], + options: { + enforce_word_boundary: true + }, + list: [ + '$testattack' + ] + }, + operator: 'phrase_match' + } + ], + transformers: [ + 'lowercase' + ] + } + ] + } + end + + before do + File.write('test.json', '{"errors": [{"title": "Blocked", "detail": "Security provided by Datadog."}]}') + + Datadog.configure do |c| + c.tracing.enabled = tracing_enabled + c.tracing.instrument :graphql, with_unified_tracer: true + + c.appsec.enabled = appsec_enabled + c.appsec.instrument :graphql + c.appsec.instrument :rails + c.appsec.instrument :rack + c.appsec.ruleset = appsec_ruleset + c.appsec.block.templates.json = 'test.json' + end + end + + after do + File.delete('test.json') + Datadog.configuration.reset! + Datadog.registry[:graphql].reset_configuration! + end + + context 'for an application' do + include_context 'GraphQL test application' + + let(:service_span) do + span = sorted_spans.reverse.find { |s| s.metrics.fetch('_dd.top_level', -1.0) > 0.0 } + + expect(span.name).to eq 'rack.request' + + span + end + + let(:span) { rack_span } + + before do + response + end + + describe 'a basic query' do + subject(:response) { post '/graphql', query: query } + + context 'with a non-triggering query' do + let(:appsec_ruleset) { blocking_testattack } + let(:query) { '{ user(id: 1) { name } }' } + + it do + expect(last_response.body).to eq({ 'data' => { 'user' => { 'name' => 'Bits' } } }.to_json) + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.parse', + ), + an_object_having_attributes( + name: 'graphql.execute_multiplex', + ), + an_object_having_attributes( + name: 'graphql.execute', + ) + ) + end + + it_behaves_like 'a POST 200 span' + it_behaves_like 'a trace with AppSec tags' + it_behaves_like 'a trace without AppSec events' + end + + context 'with a non-blocking query' do + let(:appsec_ruleset) { nonblocking_testattack } + let(:query) { '{ userByName(name: "$testattack") { id } }' } + + it do + expect(last_response.body).to eq({ 'data' => { 'userByName' => { 'id' => '1' } } }.to_json) + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.parse', + ), + an_object_having_attributes( + name: 'graphql.execute_multiplex', + ), + an_object_having_attributes( + name: 'graphql.execute', + ) + ) + end + + it_behaves_like 'a POST 200 span' + it_behaves_like 'a trace with AppSec tags' + it_behaves_like 'a trace with AppSec events' + end + + context 'with a blocking query' do + let(:appsec_ruleset) { blocking_testattack } + let(:query) { '{ userByName(name: "$testattack") { id } }' } + + it do + expect(last_response.body).to eq( + { + 'errors' => [{ 'title' => 'Blocked', 'detail' => 'Security provided by Datadog.' }] + }.to_json + ) + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.parse', + ), + an_object_having_attributes( + name: 'graphql.execute_multiplex', + ) + ) + expect(spans).not_to include( + an_object_having_attributes( + name: 'graphql.execute', + ) + ) + end + + # GraphQL errors should have no impact on the HTTP layer + it_behaves_like 'a POST 200 span' + it_behaves_like 'a trace with AppSec tags' + it_behaves_like 'a trace with AppSec events' + end + end + + describe 'a mutation' do + subject(:response) { post '/graphql', query: mutation } + + context 'with a non-triggering mutation' do + let(:appsec_ruleset) { blocking_testattack } + let(:mutation) { 'mutation { createUser(name: "k9") { user { name, id } } }' } + + it do + expect(last_response.body).to eq( + { 'data' => { 'createUser' => { 'user' => { 'name' => 'k9', 'id' => '1' } } } }.to_json + ) + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.parse', + ), + an_object_having_attributes( + name: 'graphql.execute_multiplex', + ), + an_object_having_attributes( + name: 'graphql.execute', + ) + ) + end + + it_behaves_like 'a POST 200 span' + it_behaves_like 'a trace with AppSec tags' + it_behaves_like 'a trace without AppSec events' + + context 'followed by a non-blocking query' do + it do + post '/graphql', query: '{ mutationUserByName(name: "k9") { id } }' + expect(JSON.parse(last_response.body)['data']['mutationUserByName']['id']).to eq('1') + end + end + + context 'followed by a blocking query' do + # Should not modify the user list + it do + post '/graphql', query: 'mutation { createUser(name: "$testattack") { user { name, id } } }' + expect(JSON.parse(last_response.body)['errors'][0]['title']).to eq('Blocked') + expect(TestGraphQL::Users.users['$testattack']).to be_nil + end + end + end + + context 'with a blocking mutation' do + let(:appsec_ruleset) { blocking_testattack } + let(:mutation) { 'mutation { createUser(name: "$testattack") { user { name, id } } }' } + + it do + expect(last_response.body).to eq( + { + 'errors' => [{ 'title' => 'Blocked', 'detail' => 'Security provided by Datadog.' }] + }.to_json + ) + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.parse', + ), + an_object_having_attributes( + name: 'graphql.execute_multiplex', + ) + ) + expect(spans).not_to include( + an_object_having_attributes( + name: 'graphql.execute', + ) + ) + end + + it_behaves_like 'a POST 200 span' + it_behaves_like 'a trace with AppSec tags' + it_behaves_like 'a trace with AppSec events' + + context 'followed by a non-blocking query' do + it do + post '/graphql', query: '{ mutationUserByName(name: "k9") { id } }' + expect(JSON.parse(last_response.body)['errors'][0]['message']).to eq('User not found') + end + end + end + end + + # Subscription does not mutate data, so regular queries testing should be enough + + describe 'a multiplex query' do + subject(:response) { post '/graphql', _json: queries } + + context 'with a non-triggering multiplex' do + let(:appsec_ruleset) { blocking_testattack } + let(:queries) do + [ + { + 'query' => 'query { user(id: 1) { name } }', + 'variables' => {} + }, + { + 'query' => 'query Test($name: String!) { userByName(name: $name) { id } }', + 'variables' => { 'name' => 'Caniche' } + } + ] + end + + it do + expect(last_response.body).to eq( + [ + { 'data' => { 'user' => { 'name' => 'Bits' } } }, + { 'data' => { 'userByName' => { 'id' => '10' } } } + ].to_json + ) + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.parse', + ), + an_object_having_attributes( + name: 'graphql.execute_multiplex', + ), + an_object_having_attributes( + name: 'graphql.execute', + ) + ) + end + + it_behaves_like 'a POST 200 span' + it_behaves_like 'a trace with AppSec tags' + it_behaves_like 'a trace without AppSec events' + end + + context 'with a multiplex containing a non-blocking query' do + let(:appsec_ruleset) { nonblocking_testattack } + let(:queries) do + [ + { + 'query' => 'query { user(id: 1) { name } }', + 'variables' => {} + }, + { + 'query' => 'query Test($name: String!) { userByName(name: $name) { id } }', + 'variables' => { 'name' => '$testattack' } + } + ] + end + + it do + expect(last_response.body).to eq( + [ + { 'data' => { 'user' => { 'name' => 'Bits' } } }, + { 'data' => { 'userByName' => { 'id' => '1' } } } + ].to_json + ) + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.parse', + ) + ).twice + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.execute_multiplex', + ) + ).once + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.execute', + ) + ).twice + end + + it_behaves_like 'a POST 200 span' + it_behaves_like 'a trace with AppSec tags' + it_behaves_like 'a trace with AppSec events' + end + + context 'with a multiplex containing a blocking query' do + let(:appsec_ruleset) { blocking_testattack } + let(:queries) do + [ + { + 'query' => 'query Test($name: String!) { userByName(name: $name) { id } }', + 'variables' => { 'name' => '$testattack' } + }, + { + 'query' => 'query { user(id: 1) { name } }', + 'variables' => {} + } + ] + end + + it do + expect(last_response.body).to eq( + [ + { 'errors' => [{ 'title' => 'Blocked', 'detail' => 'Security provided by Datadog.' }] }, + { 'errors' => [{ 'title' => 'Blocked', 'detail' => 'Security provided by Datadog.' }] } + ].to_json + ) + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.parse', + ) + ).twice + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.execute_multiplex', + ) + ).once + expect(spans).not_to include( + an_object_having_attributes( + name: 'graphql.execute', + ) + ) + end + end + end + + describe 'a query with directives' do + subject(:response) { post '/graphql', _json: queries } + + context 'with a non-triggering multiplex' do + let(:appsec_ruleset) { blocking_testattack } + let(:queries) do + [ + { + 'query' => 'query Test($format: String!) { user(id: 1) { name @case(format: $format) } }', + 'variables' => { 'format' => 'upcase' } + } + ] + end + + it do + expect(last_response.body).to eq( + [ + { 'data' => { 'user' => { 'name' => 'BITS' } } }, + ].to_json + ) + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.parse', + ), + an_object_having_attributes( + name: 'graphql.execute_multiplex', + ), + an_object_having_attributes( + name: 'graphql.execute', + ) + ) + end + + it_behaves_like 'a POST 200 span' + it_behaves_like 'a trace with AppSec tags' + it_behaves_like 'a trace without AppSec events' + end + + context 'with a multiplex containing a non-blocking query' do + let(:appsec_ruleset) { nonblocking_testattack } + let(:queries) do + [ + { + 'query' => 'query Test($format: String!) { user(id: 1) { name @case(format: $format) } }', + 'variables' => { 'format' => '$testattack' } + } + ] + end + + it do + expect(last_response.body).to eq( + [ + { 'data' => { 'user' => { 'name' => 'Bits' } } } + ].to_json + ) + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.parse', + ) + ).once + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.execute_multiplex', + ) + ).once + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.execute', + ) + ).once + end + + it_behaves_like 'a POST 200 span' + it_behaves_like 'a trace with AppSec tags' + it_behaves_like 'a trace with AppSec events' + end + + context 'with a multiplex containing a blocking query' do + let(:appsec_ruleset) { blocking_testattack } + let(:queries) do + [ + { + 'query' => 'query Test($format: String!) { user(id: 1) { name @case(format: $format) } }', + 'variables' => { 'format' => '$testattack' } + } + ] + end + + it do + expect(last_response.body).to eq( + [ + { 'errors' => [{ 'title' => 'Blocked', 'detail' => 'Security provided by Datadog.' }] } + ].to_json + ) + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.parse', + ) + ).once + expect(spans).to include( + an_object_having_attributes( + name: 'graphql.execute_multiplex', + ) + ).once + expect(spans).not_to include( + an_object_having_attributes( + name: 'graphql.execute', + ) + ) + end + end + end + end + end diff --git a/spec/datadog/appsec/contrib/graphql/reactive/multiplex_spec.rb b/spec/datadog/appsec/contrib/graphql/reactive/multiplex_spec.rb new file mode 100644 index 00000000000..812184e6eb8 --- /dev/null +++ b/spec/datadog/appsec/contrib/graphql/reactive/multiplex_spec.rb @@ -0,0 +1,63 @@ +# frozen_literal_string: true + +require 'datadog/tracing/contrib/graphql/test_helpers' +require 'datadog/tracing/contrib/graphql/support/application' + +require 'datadog/appsec/spec_helper' +require 'datadog/appsec/reactive/operation' +require 'datadog/appsec/contrib/graphql/gateway/multiplex' +require 'datadog/appsec/contrib/graphql/reactive/multiplex' +require 'datadog/appsec/reactive/shared_examples' + +RSpec.describe Datadog::AppSec::Contrib::GraphQL::Reactive::Multiplex do + include_context 'with GraphQL multiplex' + + let(:expected_arguments) do + { + 'user' => [{ 'id' => 1 }, { 'id' => 10 }], + 'userByName' => [{ 'name' => 'Caniche' }] + } + end + + describe '.publish' do + it 'propagates multiplex attributes to the operation' do + expect(operation).to receive(:publish).with('graphql.server.all_resolvers', expected_arguments) + gateway_multiplex = Datadog::AppSec::Contrib::GraphQL::Gateway::Multiplex.new(multiplex) + described_class.publish(operation, gateway_multiplex) + end + end + + describe '.subscribe' do + let(:waf_context) { double(:waf_context) } + + context 'not all addresses have been published' do + it 'does not call the waf context' do + expect(operation).to receive(:subscribe).with( + 'graphql.server.all_resolvers' + ).and_call_original + expect(waf_context).to_not receive(:run) + described_class.subscribe(operation, waf_context) + end + end + + context 'all addresses have been published' do + it 'does call the waf context with the right arguments' do + expect(operation).to receive(:subscribe).and_call_original + + waf_result = double(:waf_result, status: :ok, timeout: false) + expect(waf_context).to receive(:run).with( + { 'graphql.server.all_resolvers' => expected_arguments }, + Datadog.configuration.appsec.waf_timeout + ).and_return(waf_result) + described_class.subscribe(operation, waf_context) + gateway_multiplex = Datadog::AppSec::Contrib::GraphQL::Gateway::Multiplex.new(multiplex) + result = described_class.publish(operation, gateway_multiplex) + expect(result).to be_nil + end + end + + it_behaves_like 'waf result' do + let(:gateway) { Datadog::AppSec::Contrib::GraphQL::Gateway::Multiplex.new(multiplex) } + end + end +end diff --git a/spec/datadog/appsec/contrib/rack/gateway/request_spec.rb b/spec/datadog/appsec/contrib/rack/gateway/request_spec.rb index ddc1918d06c..f2188537c45 100644 --- a/spec/datadog/appsec/contrib/rack/gateway/request_spec.rb +++ b/spec/datadog/appsec/contrib/rack/gateway/request_spec.rb @@ -33,11 +33,35 @@ } expect(request.headers).to eq(expected_headers) end - end - describe '#body' do - it 'returns the body' do - expect(request.body).to eq('') + context 'with malformed headers' do + let(:request) do + described_class.new( + Rack::MockRequest.env_for( + 'http://example.com:8080/?a=foo&a=bar&b=baz', + { + 'REQUEST_METHOD' => 'GET', 'REMOTE_ADDR' => '10.10.10.10', 'CONTENT_TYPE' => 'text/html', + 'HTTP_COOKIE' => 'foo=bar', 'HTTP_USER_AGENT' => 'WebKit', + 'HTTP_' => 'empty header', 'HTTP_123' => 'numbered header', + 'HTTP_123_FOO' => 'alphanumerical header', 'HTTP_FOO_123' => 'reverse alphanumerical header' + } + ) + ) + end + + it 'returns the header information. Strip the HTTP_ prefix and append content-type and content-length information' do + expected_headers = { + 'content-type' => 'text/html', + 'cookie' => 'foo=bar', + 'user-agent' => 'WebKit', + 'content-length' => '0', + '' => 'empty header', + '123' => 'numbered header', + '123-foo' => 'alphanumerical header', + 'foo-123' => 'reverse alphanumerical header' + } + expect(request.headers).to eq(expected_headers) + end end end diff --git a/spec/datadog/appsec/contrib/rack/integration_test_spec.rb b/spec/datadog/appsec/contrib/rack/integration_test_spec.rb index 05eb3f25f2e..325541ed0b1 100644 --- a/spec/datadog/appsec/contrib/rack/integration_test_spec.rb +++ b/spec/datadog/appsec/contrib/rack/integration_test_spec.rb @@ -1,5 +1,6 @@ require 'datadog/tracing/contrib/support/spec_helper' require 'datadog/appsec/contrib/support/integration/shared_examples' +require 'datadog/appsec/spec_helper' require 'rack/test' require 'securerandom' @@ -18,8 +19,34 @@ RSpec.describe 'Rack integration tests' do include Rack::Test::Methods - let(:appsec_enabled) { true } + # We send the trace to a mocked agent to verify that the trace includes the headers that we want + # In the future, it might be a good idea to use the traces that the mocked agent + # receives in the tests/shared examples + let(:agent_http_client) do + Datadog::Tracing::Transport::HTTP.default do |t| + t.adapter agent_http_adapter + end + end + + let(:agent_http_adapter) { Datadog::Core::Transport::HTTP::Adapters::Net.new(agent_settings) } + + let(:agent_settings) do + Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings.new( + adapter: nil, + ssl: false, + uds_path: nil, + hostname: 'localhost', + port: 6218, + timeout_seconds: 30, + ) + end + + let(:agent_tested_headers) { {} } + let(:tracing_enabled) { true } + let(:appsec_enabled) { true } + + let(:appsec_standalone_enabled) { false } let(:remote_enabled) { false } let(:appsec_ip_passlist) { [] } let(:appsec_ip_denylist) { [] } @@ -130,14 +157,45 @@ end before do + WebMock.enable! + stub_request(:get, 'http://localhost:3000/returnheaders') + .to_return do |request| + { + status: 200, + body: request.headers.to_json, + headers: { 'Content-Type' => 'application/json' } + } + end + + # Mocked agent with correct headers + stub_request(:post, 'http://localhost:6218/v0.4/traces') + .with do |request| + agent_tested_headers <= request.headers + end + .to_return(status: 200) + + # DEV: Would it be faster to do another stub for requests that don't match the headers + # rather than waiting for the TCP connection to fail? + + # TODO: Mocked agent that matches a given body, then use it in the shared examples, + # That way it would be real integration tests + + # We must format the trace to have the same result as the agent + # This is especially important for _sampling_priority_v1 metric + unless remote_enabled Datadog.configure do |c| c.tracing.enabled = tracing_enabled + c.tracing.instrument :rack + c.tracing.instrument :http c.appsec.enabled = appsec_enabled - c.appsec.waf_timeout = 10_000_000 # in us + c.appsec.instrument :rack + + c.appsec.standalone.enabled = appsec_standalone_enabled + c.appsec.waf_timeout = 10_000_000 # in us c.appsec.ip_passlist = appsec_ip_passlist c.appsec.ip_denylist = appsec_ip_denylist c.appsec.user_id_denylist = appsec_user_id_denylist @@ -151,6 +209,9 @@ end after do + WebMock.reset! + WebMock.disable! + Datadog.configuration.reset! Datadog.registry[:rack].reset_configuration! end @@ -185,11 +246,12 @@ let(:client_ip) { remote_addr } let(:service_span) do - span = spans.find { |s| s.metrics.fetch('_dd.top_level', -1.0) > 0.0 } - - expect(span.name).to eq 'rack.request' + spans.find { |s| s.metrics.fetch('_dd.top_level', -1.0) > 0.0 } + end - span + let(:span) do + Datadog::Tracing::Transport::TraceFormatter.format!(trace) + spans.find { |s| s.name == 'rack.request' } end context 'with remote configuration' do @@ -588,6 +650,24 @@ end ) end + + map '/requestdownstream' do + run( + proc do |_env| + uri = URI('http://localhost:3000/returnheaders') + ext_request = nil + ext_response = nil + + Net::HTTP.start(uri.host, uri.port) do |http| + ext_request = Net::HTTP::Get.new(uri) + + ext_response = http.request(ext_request) + end + + [200, { 'Content-Type' => 'application/json' }, [ext_response.body]] + end + ) + end end end @@ -942,6 +1022,8 @@ end end end + + it_behaves_like 'appsec standalone billing' end end end diff --git a/spec/datadog/appsec/contrib/rack/reactive/request_body_spec.rb b/spec/datadog/appsec/contrib/rack/reactive/request_body_spec.rb index 18bf0f424bf..edf70172e35 100644 --- a/spec/datadog/appsec/contrib/rack/reactive/request_body_spec.rb +++ b/spec/datadog/appsec/contrib/rack/reactive/request_body_spec.rb @@ -4,6 +4,8 @@ require 'datadog/appsec/reactive/operation' require 'datadog/appsec/contrib/rack/gateway/request' require 'datadog/appsec/contrib/rack/reactive/request_body' +require 'datadog/appsec/reactive/shared_examples' + require 'rack' RSpec.describe Datadog::AppSec::Contrib::Rack::Reactive::RequestBody do @@ -53,102 +55,8 @@ end end - context 'waf result is a match' do - it 'yields result and no blocking action' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :match, timeout: false, actions: []) - expect(waf_context).to receive(:run).and_return(waf_result) - described_class.subscribe(operation, waf_context) do |result| - expect(result).to eq(waf_result) - end - result = described_class.publish(operation, request) - expect(result).to be_nil - end - - it 'yields result and blocking action. The publish method catches the resul as well' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :match, timeout: false, actions: ['block']) - expect(waf_context).to receive(:run).and_return(waf_result) - described_class.subscribe(operation, waf_context) do |result| - expect(result).to eq(waf_result) - end - block = described_class.publish(operation, request) - expect(block).to eq(true) - end - end - - context 'waf result is ok' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :ok, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is invalid_call' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_call, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is invalid_rule' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_rule, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is invalid_flow' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_flow, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is no_rule' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :no_rule, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is unknown' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :foo, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end + it_behaves_like 'waf result' do + let(:gateway) { request } end end end diff --git a/spec/datadog/appsec/contrib/rack/reactive/request_spec.rb b/spec/datadog/appsec/contrib/rack/reactive/request_spec.rb index efd8da9d81e..2e67f7dd188 100644 --- a/spec/datadog/appsec/contrib/rack/reactive/request_spec.rb +++ b/spec/datadog/appsec/contrib/rack/reactive/request_spec.rb @@ -4,6 +4,8 @@ require 'datadog/appsec/reactive/operation' require 'datadog/appsec/contrib/rack/gateway/request' require 'datadog/appsec/contrib/rack/reactive/request' +require 'datadog/appsec/reactive/shared_examples' + require 'rack' RSpec.describe Datadog::AppSec::Contrib::Rack::Reactive::Request do @@ -87,102 +89,8 @@ end end - context 'waf result is a match' do - it 'yields result and no blocking action' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :match, timeout: false, actions: []) - expect(waf_context).to receive(:run).and_return(waf_result) - described_class.subscribe(operation, waf_context) do |result| - expect(result).to eq(waf_result) - end - result = described_class.publish(operation, request) - expect(result).to be_nil - end - - it 'yields result and blocking action. The publish method catches the resul as well' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :match, timeout: false, actions: ['block']) - expect(waf_context).to receive(:run).and_return(waf_result) - described_class.subscribe(operation, waf_context) do |result| - expect(result).to eq(waf_result) - end - block = described_class.publish(operation, request) - expect(block).to eq(true) - end - end - - context 'waf result is ok' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :ok, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is invalid_call' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_call, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is invalid_rule' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_rule, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is invalid_flow' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_flow, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is no_rule' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :no_rule, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is unknown' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :foo, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end + it_behaves_like 'waf result' do + let(:gateway) { request } end end end diff --git a/spec/datadog/appsec/contrib/rack/reactive/response_spec.rb b/spec/datadog/appsec/contrib/rack/reactive/response_spec.rb index 036fdbd1543..8d7c61ab48e 100644 --- a/spec/datadog/appsec/contrib/rack/reactive/response_spec.rb +++ b/spec/datadog/appsec/contrib/rack/reactive/response_spec.rb @@ -5,6 +5,7 @@ require 'datadog/appsec/reactive/operation' require 'datadog/appsec/contrib/rack/gateway/response' require 'datadog/appsec/contrib/rack/reactive/response' +require 'datadog/appsec/reactive/shared_examples' RSpec.describe Datadog::AppSec::Contrib::Rack::Reactive::Response do let(:operation) { Datadog::AppSec::Reactive::Operation.new('test') } @@ -78,102 +79,9 @@ end end - context 'waf result is a match' do - it 'yields result and no blocking action' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :match, timeout: false, actions: []) - expect(processor_context).to receive(:run).and_return(waf_result) - described_class.subscribe(operation, processor_context) do |result| - expect(result).to eq(waf_result) - end - result = described_class.publish(operation, response) - expect(result).to be_nil - end - - it 'yields result and blocking action. The publish method catches the resul as well' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :match, timeout: false, actions: ['block']) - expect(processor_context).to receive(:run).and_return(waf_result) - described_class.subscribe(operation, processor_context) do |result| - expect(result).to eq(waf_result) - end - block = described_class.publish(operation, response) - expect(block).to eq(true) - end - end - - context 'waf result is ok' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :ok, timeout: false) - expect(processor_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, processor_context, &b) }.not_to yield_control - result = described_class.publish(operation, response) - expect(result).to be_nil - end - end - - context 'waf result is invalid_call' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_call, timeout: false) - expect(processor_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, processor_context, &b) }.not_to yield_control - result = described_class.publish(operation, response) - expect(result).to be_nil - end - end - - context 'waf result is invalid_rule' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_rule, timeout: false) - expect(processor_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, processor_context, &b) }.not_to yield_control - result = described_class.publish(operation, response) - expect(result).to be_nil - end - end - - context 'waf result is invalid_flow' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_flow, timeout: false) - expect(processor_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, processor_context, &b) }.not_to yield_control - result = described_class.publish(operation, response) - expect(result).to be_nil - end - end - - context 'waf result is no_rule' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :no_rule, timeout: false) - expect(processor_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, processor_context, &b) }.not_to yield_control - result = described_class.publish(operation, response) - expect(result).to be_nil - end - end - - context 'waf result is unknown' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :foo, timeout: false) - expect(processor_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, processor_context, &b) }.not_to yield_control - result = described_class.publish(operation, response) - expect(result).to be_nil - end + it_behaves_like 'waf result' do + let(:gateway) { response } + let(:waf_context) { processor_context } end end end diff --git a/spec/datadog/appsec/contrib/rails/integration_test_spec.rb b/spec/datadog/appsec/contrib/rails/integration_test_spec.rb index 211a33bba8b..b564e477c9f 100644 --- a/spec/datadog/appsec/contrib/rails/integration_test_spec.rb +++ b/spec/datadog/appsec/contrib/rails/integration_test_spec.rb @@ -1,5 +1,6 @@ require 'datadog/tracing/contrib/rails/rails_helper' require 'datadog/appsec/contrib/support/integration/shared_examples' +require 'datadog/appsec/spec_helper' require 'rack/test' require 'datadog/tracing' @@ -8,7 +9,33 @@ RSpec.describe 'Rails integration tests' do include Rack::Test::Methods + # We send the trace to a mocked agent to verify that the trace includes the headers that we want + # In the future, it might be a good idea to use the traces that the mocked agent + # receives in the tests/shared examples + let(:agent_http_client) do + Datadog::Tracing::Transport::HTTP.default do |t| + t.adapter agent_http_adapter + end + end + + let(:agent_http_adapter) { Datadog::Core::Transport::HTTP::Adapters::Net.new(agent_settings) } + + let(:agent_settings) do + Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings.new( + adapter: nil, + ssl: false, + uds_path: nil, + hostname: 'localhost', + port: 6218, + timeout_seconds: 30, + ) + end + let(:sorted_spans) do + # We must format the trace to have the same result as the agent + # This is especially important for _sampling_priority_v1 metric + Datadog::Tracing::Transport::TraceFormatter.format!(trace) + chain = lambda do |start| loop.with_object([start]) do |_, o| # root reached (default) @@ -26,14 +53,19 @@ sort.call(spans) end + let(:agent_tested_headers) { {} } + let(:rack_span) { sorted_spans.reverse.find { |x| x.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST } } - let(:appsec_enabled) { true } let(:tracing_enabled) { true } + let(:appsec_enabled) { true } + + let(:appsec_instrument_rack) { false } + + let(:appsec_standalone_enabled) { false } let(:appsec_ip_denylist) { [] } let(:appsec_user_id_denylist) { [] } let(:appsec_ruleset) { :recommended } - let(:nested_app) { false } let(:api_security_enabled) { false } let(:api_security_sample) { 0.0 } @@ -85,24 +117,57 @@ end before do + # It may have been better to add this endpoint to the Rails app, + # but I couldn't figure out how to call the Rails app from itself using Net::HTTP. + # Creating a WebMock and stubbing it was easier. + WebMock.enable! + stub_request(:get, 'http://localhost:3000/returnheaders') + .to_return do |request| + { + status: 200, + body: request.headers.to_json, + headers: { 'Content-Type' => 'application/json' } + } + end + + # Mocked agent with correct headers + stub_request(:post, 'http://localhost:6218/v0.4/traces') + .with do |request| + agent_tested_headers <= request.headers + end + .to_return(status: 200) + + # DEV: Would it be faster to do another stub for requests that don't match the headers + # rather than waiting for the TCP connection to fail? + + # TODO: Mocked agent that matches a given body, then use it in the shared examples, + # That way it would be real integration tests + Datadog.configure do |c| c.tracing.enabled = tracing_enabled + c.tracing.instrument :rails + c.tracing.instrument :http c.appsec.enabled = appsec_enabled - c.appsec.waf_timeout = 10_000_000 # in us + c.appsec.instrument :rails + c.appsec.instrument :rack if appsec_instrument_rack + + c.appsec.standalone.enabled = appsec_standalone_enabled + c.appsec.waf_timeout = 10_000_000 # in us c.appsec.ip_denylist = appsec_ip_denylist c.appsec.user_id_denylist = appsec_user_id_denylist c.appsec.ruleset = appsec_ruleset c.appsec.api_security.enabled = api_security_enabled c.appsec.api_security.sample_rate = api_security_sample - - c.appsec.instrument :rack if nested_app end end after do + WebMock.reset! + WebMock.disable! + Datadog.configuration.reset! Datadog.registry[:rails].reset_configuration! end @@ -135,6 +200,20 @@ def set_user Datadog::Kit::Identity.set_user(Datadog::Tracing.active_trace, id: 'blocked-user-id') head :ok end + + def request_downstream + uri = URI('http://localhost:3000/returnheaders') + ext_request = nil + ext_response = nil + + Net::HTTP.start(uri.host, uri.port) do |http| + ext_request = Net::HTTP::Get.new('/returnheaders') + + ext_response = http.request(ext_request) + end + + render json: ext_response.body, content_type: 'application/json' + end end ) end @@ -149,11 +228,7 @@ def set_user let(:client_ip) { remote_addr } let(:service_span) do - span = sorted_spans.reverse.find { |s| s.metrics.fetch('_dd.top_level', -1.0) > 0.0 } - - expect(span.name).to eq 'rack.request' - - span + sorted_spans.reverse.find { |s| s.metrics.fetch('_dd.top_level', -1.0) > 0.0 } end let(:span) { rack_span } @@ -164,6 +239,7 @@ def set_user '/success' => 'test#success', [:post, '/success'] => 'test#success', '/set_user' => 'test#set_user', + '/requestdownstream' => 'test#request_downstream', } end @@ -404,7 +480,7 @@ def set_user end describe 'Nested apps' do - let(:nested_app) { true } + let(:appsec_instrument_rack) { true } let(:middlewares) do [ Datadog::Tracing::Contrib::Rack::TraceMiddleware, @@ -481,6 +557,8 @@ def set_user end end end + + it_behaves_like 'appsec standalone billing' end end end diff --git a/spec/datadog/appsec/contrib/rails/reactive/action_spec.rb b/spec/datadog/appsec/contrib/rails/reactive/action_spec.rb index 8df6caf2b67..345abd1c6c4 100644 --- a/spec/datadog/appsec/contrib/rails/reactive/action_spec.rb +++ b/spec/datadog/appsec/contrib/rails/reactive/action_spec.rb @@ -2,6 +2,8 @@ require 'datadog/appsec/reactive/operation' require 'datadog/appsec/contrib/rails/reactive/action' require 'datadog/appsec/contrib/rails/gateway/request' +require 'datadog/appsec/reactive/shared_examples' + require 'action_dispatch' RSpec.describe Datadog::AppSec::Contrib::Rails::Reactive::Action do @@ -61,102 +63,8 @@ end end - context 'waf result is a match' do - it 'yields result and no blocking action' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :match, timeout: false, actions: []) - expect(waf_context).to receive(:run).and_return(waf_result) - described_class.subscribe(operation, waf_context) do |result| - expect(result).to eq(waf_result) - end - block = described_class.publish(operation, request) - expect(block).to be_nil - end - - it 'yields result and blocking action. The publish method catches the resul as well' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :match, timeout: false, actions: ['block']) - expect(waf_context).to receive(:run).and_return(waf_result) - described_class.subscribe(operation, waf_context) do |result| - expect(result).to eq(waf_result) - end - block = described_class.publish(operation, request) - expect(block).to eq(true) - end - end - - context 'waf result is ok' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :ok, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is invalid_call' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_call, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is invalid_rule' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_rule, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is invalid_flow' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_flow, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is no_rule' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :no_rule, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end - end - - context 'waf result is unknown' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :foo, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, request) - expect(result).to be_nil - end + it_behaves_like 'waf result' do + let(:gateway) { request } end end end diff --git a/spec/datadog/appsec/contrib/sinatra/integration_test_spec.rb b/spec/datadog/appsec/contrib/sinatra/integration_test_spec.rb index fddbdc5b69a..e9f25a12b15 100644 --- a/spec/datadog/appsec/contrib/sinatra/integration_test_spec.rb +++ b/spec/datadog/appsec/contrib/sinatra/integration_test_spec.rb @@ -1,5 +1,6 @@ require 'datadog/tracing/contrib/support/spec_helper' require 'datadog/appsec/contrib/support/integration/shared_examples' +require 'datadog/appsec/spec_helper' require 'rack/test' require 'securerandom' @@ -18,7 +19,33 @@ RSpec.describe 'Sinatra integration tests' do include Rack::Test::Methods + # We send the trace to a mocked agent to verify that the trace includes the headers that we want + # In the future, it might be a good idea to use the traces that the mocked agent + # receives in the tests/shared examples + let(:agent_http_client) do + Datadog::Tracing::Transport::HTTP.default do |t| + t.adapter agent_http_adapter + end + end + + let(:agent_http_adapter) { Datadog::Core::Transport::HTTP::Adapters::Net.new(agent_settings) } + + let(:agent_settings) do + Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings.new( + adapter: nil, + ssl: false, + uds_path: nil, + hostname: 'localhost', + port: 6218, + timeout_seconds: 30, + ) + end + let(:sorted_spans) do + # We must format the trace to have the same result as the agent + # This is especially important for _sampling_priority_v1 metric + Datadog::Tracing::Transport::TraceFormatter.format!(trace) + chain = lambda do |start| loop.with_object([start]) do |_, o| # root reached (default) @@ -36,12 +63,16 @@ sort.call(spans) end + let(:agent_tested_headers) { {} } + let(:sinatra_span) { sorted_spans.reverse.find { |x| x.name == Datadog::Tracing::Contrib::Sinatra::Ext::SPAN_REQUEST } } let(:route_span) { sorted_spans.find { |x| x.name == Datadog::Tracing::Contrib::Sinatra::Ext::SPAN_ROUTE } } let(:rack_span) { sorted_spans.reverse.find { |x| x.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST } } - let(:appsec_enabled) { true } let(:tracing_enabled) { true } + let(:appsec_enabled) { true } + + let(:appsec_standalone_enabled) { false } let(:appsec_ip_denylist) { [] } let(:appsec_user_id_denylist) { [] } let(:appsec_ruleset) { :recommended } @@ -96,24 +127,54 @@ end before do + WebMock.enable! + stub_request(:get, 'http://localhost:3000/returnheaders') + .to_return do |request| + { + status: 200, + body: request.headers.to_json, + headers: { 'Content-Type' => 'application/json' } + } + end + + # Mocked agent with correct headers + stub_request(:post, 'http://localhost:6218/v0.4/traces') + .with do |request| + agent_tested_headers <= request.headers + end + .to_return(status: 200) + + # DEV: Would it be faster to do another stub for requests that don't match the headers + # rather than waiting for the TCP connection to fail? + + # TODO: Mocked agent that matches a given body, then use it in the shared examples, + # That way it would be real integration tests + Datadog.configure do |c| c.tracing.enabled = tracing_enabled + c.tracing.instrument :sinatra + c.tracing.instrument :http c.appsec.enabled = appsec_enabled - c.appsec.waf_timeout = 10_000_000 # in us + c.appsec.instrument :sinatra + # TODO: test with c.appsec.instrument :rack + + c.appsec.standalone.enabled = appsec_standalone_enabled + c.appsec.waf_timeout = 10_000_000 # in us c.appsec.ip_denylist = appsec_ip_denylist c.appsec.user_id_denylist = appsec_user_id_denylist c.appsec.ruleset = appsec_ruleset c.appsec.api_security.enabled = api_security_enabled c.appsec.api_security.sample_rate = api_security_sample - - # TODO: test with c.appsec.instrument :rack end end after do + WebMock.reset! + WebMock.disable! + Datadog.configuration.reset! Datadog.registry[:rack].reset_configuration! Datadog.registry[:sinatra].reset_configuration! @@ -144,11 +205,7 @@ let(:client_ip) { remote_addr } let(:service_span) do - span = sorted_spans.reverse.find { |s| s.metrics.fetch('_dd.top_level', -1.0) > 0.0 } - - expect(span.name).to eq 'rack.request' - - span + sorted_spans.reverse.find { |s| s.metrics.fetch('_dd.top_level', -1.0) > 0.0 } end let(:span) { rack_span } @@ -168,6 +225,22 @@ Datadog::Kit::Identity.set_user(Datadog::Tracing.active_trace, id: 'blocked-user-id') 'ok' end + + get '/requestdownstream' do + content_type :json + + uri = URI('http://localhost:3000/returnheaders') + ext_request = nil + ext_response = nil + + Net::HTTP.start(uri.host, uri.port) do |http| + ext_request = Net::HTTP::Get.new(uri) + + ext_response = http.request(ext_request) + end + + ext_response.body + end end end @@ -399,6 +472,8 @@ it_behaves_like 'a trace with AppSec api security tags' end end + + it_behaves_like 'appsec standalone billing' end end end diff --git a/spec/datadog/appsec/contrib/sinatra/reactive/routed_spec.rb b/spec/datadog/appsec/contrib/sinatra/reactive/routed_spec.rb index 75f4e57bd93..9dbc89b863d 100644 --- a/spec/datadog/appsec/contrib/sinatra/reactive/routed_spec.rb +++ b/spec/datadog/appsec/contrib/sinatra/reactive/routed_spec.rb @@ -5,6 +5,8 @@ require 'datadog/appsec/contrib/sinatra/reactive/routed' require 'datadog/appsec/contrib/rack/gateway/request' require 'datadog/appsec/contrib/sinatra/gateway/route_params' +require 'datadog/appsec/reactive/shared_examples' + require 'rack' RSpec.describe Datadog::AppSec::Contrib::Sinatra::Reactive::Routed do @@ -57,102 +59,8 @@ end end - context 'waf result is a match' do - it 'yields result and no blocking action' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :match, timeout: false, actions: []) - expect(waf_context).to receive(:run).and_return(waf_result) - described_class.subscribe(operation, waf_context) do |result| - expect(result).to eq(waf_result) - end - result = described_class.publish(operation, [request, routed_params]) - expect(result).to be_nil - end - - it 'yields result and blocking action. The publish method catches the resul as well' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :match, timeout: false, actions: ['block']) - expect(waf_context).to receive(:run).and_return(waf_result) - described_class.subscribe(operation, waf_context) do |result| - expect(result).to eq(waf_result) - end - block = described_class.publish(operation, [request, routed_params]) - expect(block).to eq(true) - end - end - - context 'waf result is ok' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :ok, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, [request, routed_params]) - expect(result).to be_nil - end - end - - context 'waf result is invalid_call' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_call, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, [request, routed_params]) - expect(result).to be_nil - end - end - - context 'waf result is invalid_rule' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_rule, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, [request, routed_params]) - expect(result).to be_nil - end - end - - context 'waf result is invalid_flow' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_flow, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, [request, routed_params]) - expect(result).to be_nil - end - end - - context 'waf result is no_rule' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :no_rule, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, [request, routed_params]) - expect(result).to be_nil - end - end - - context 'waf result is unknown' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :foo, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, [request, routed_params]) - expect(result).to be_nil - end + it_behaves_like 'waf result' do + let(:gateway) { [request, routed_params] } end end end diff --git a/spec/datadog/appsec/contrib/support/integration/shared_examples.rb b/spec/datadog/appsec/contrib/support/integration/shared_examples.rb index 00c2a41b01a..bcf82aaa8aa 100644 --- a/spec/datadog/appsec/contrib/support/integration/shared_examples.rb +++ b/spec/datadog/appsec/contrib/support/integration/shared_examples.rb @@ -146,6 +146,7 @@ RSpec.shared_examples 'a trace without AppSec events' do it do expect(spans.select { |s| s.get_tag('appsec.event') }).to be_empty + expect(trace.send(:meta)['_dd.p.appsec']).to be_nil expect(service_span.send(:meta)['_dd.appsec.triggers']).to be_nil end end @@ -155,6 +156,7 @@ it do expect(spans.select { |s| s.get_tag('appsec.event') }).to_not be_empty + expect(trace.send(:meta)['_dd.p.appsec']).to eq('1') expect(service_span.send(:meta)['_dd.appsec.json']).to be_a String expect(spans.select { |s| s.get_tag('appsec.blocked') }).to_not be_empty if blocking_request end @@ -165,3 +167,289 @@ it_behaves_like 'a trace without AppSec events' end end + +RSpec.shared_examples 'a trace with ASM Standalone tags' do |params = {}| + let(:tag_apm_enabled) { params[:tag_apm_enabled] || 0 } + let(:tag_appsec_enabled) { params[:tag_appsec_enabled] || 1.0 } + let(:tag_appsec_propagation) { params[:tag_appsec_propagation] } + let(:tag_other_propagation) { params[:tag_other_propagation] || :any } + # We use a lambda as we may change the comparison type + let(:tag_sampling_priority_condition) { params[:tag_sampling_priority_condition] || ->(x) { x == 0 } } + let(:tag_trace_id) { params[:tag_trace_id] || headers_trace_id.to_i } + + it do + expect(span.send(:metrics)['_dd.apm.enabled']).to eq(tag_apm_enabled) + expect(span.send(:metrics)['_dd.appsec.enabled']).to eq(tag_appsec_enabled) + expect(span.send(:metrics)['_sampling_priority_v1']).to(satisfy { |x| tag_sampling_priority_condition.call(x) }) + + expect(span.send(:meta)['_dd.p.appsec']).to eq(tag_appsec_propagation) + expect(span.send(:meta)['_dd.p.other']).to eq(tag_other_propagation) unless tag_other_propagation == :any + + expect(span.send(:trace_id)).to eq(tag_trace_id) + expect(trace.send(:spans)[0].send(:trace_id)).to eq(tag_trace_id) + end +end + +RSpec.shared_examples 'a request with propagated headers' do |params = {}| + let(:res_origin) { params[:res_origin] } + let(:res_parent_id_not_equal) { params[:res_parent_id_not_equal] } + let(:res_tags) { params[:res_tags] } + let(:res_sampling_priority_condition) { params[:res_sampling_priority_condition] || ->(x) { x.nil? } } + let(:res_trace_id) { params[:res_trace_id] } + + let(:res_headers) { JSON.parse(response.body) } + + it do + expect(res_headers['X-Datadog-Origin']).to eq(res_origin) + expect(res_headers['X-Datadog-Parent']).to_not eq(res_parent_id_not_equal) if res_parent_id_not_equal + expect(res_headers['X-Datadog-Sampling-Priority']).to(satisfy { |x| res_sampling_priority_condition.call(x) }) + expect(res_headers['X-Datadog-Trace-Id']).to eq(res_trace_id) + expect(res_headers['X-Datadog-Tags'].split(',')).to include(*res_tags) if res_tags + end +end + +RSpec.shared_examples 'a trace sent to agent with Datadog-Client-Computed-Stats header' do + let(:agent_tested_headers) { { 'Datadog-Client-Computed-Stats' => 'yes' } } + + it do + agent_return = agent_http_client.send_traces(traces) + expect(agent_return.first.ok?).to be true + end +end + +RSpec.shared_examples 'appsec standalone billing' do + subject(:response) { get url, params, env } + + let(:appsec_standalone_enabled) { true } + + let(:url) { '/requestdownstream' } + let(:params) { {} } + let(:headers) do + { + 'HTTP_X_DATADOG_TRACE_ID' => headers_trace_id, + 'HTTP_X_DATADOG_PARENT_ID' => headers_parent_id, + 'HTTP_X_DATADOG_SAMPLING_PRIORITY' => headers_sampling_priority, + 'HTTP_X_DATADOG_ORIGIN' => headers_origin, + 'HTTP_X_DATADOG_TAGS' => headers_tags, + 'HTTP_USER_AGENT' => user_agent + } + end + let(:env) { headers } + + # Default values for headers + let(:headers_trace_id) { '1212121212121212121' } + let(:headers_parent_id) { '34343434' } + let(:headers_origin) { 'rum' } + let(:headers_sampling_priority) { '-1' } + let(:headers_tags) { '_dd.p.other=1' } + let(:user_agent) { nil } + + context 'without appsec upstream without attack and trace is kept with priority 1' do + context 'from -1 sampling priority' do + it_behaves_like 'a trace with ASM Standalone tags', + { + tag_other_propagation: '1', + tag_sampling_priority_condition: ->(x) { x < 2 } + } + it_behaves_like 'a request with propagated headers' + it_behaves_like 'a trace sent to agent with Datadog-Client-Computed-Stats header' + end + + context 'from 0 sampling priority' do + let(:headers_sampling_priority) { '0' } + + it_behaves_like 'a trace with ASM Standalone tags', + { + tag_other_propagation: '1', + tag_sampling_priority_condition: ->(x) { x < 2 } + } + it_behaves_like 'a request with propagated headers' + it_behaves_like 'a trace sent to agent with Datadog-Client-Computed-Stats header' + end + + context 'from 1 sampling priority' do + let(:headers_sampling_priority) { '1' } + + it_behaves_like 'a trace with ASM Standalone tags', + { + tag_other_propagation: '1', + tag_sampling_priority_condition: ->(x) { x < 2 } + } + it_behaves_like 'a request with propagated headers' + it_behaves_like 'a trace sent to agent with Datadog-Client-Computed-Stats header' + end + + context 'from 2 sampling priority' do + let(:headers_sampling_priority) { '2' } + + it_behaves_like 'a trace with ASM Standalone tags', + { + tag_other_propagation: '1', + tag_sampling_priority_condition: ->(x) { x < 2 } + } + it_behaves_like 'a request with propagated headers' + it_behaves_like 'a trace sent to agent with Datadog-Client-Computed-Stats header' + end + end + + context 'without upstream appsec propagation with attack and trace is kept with priority 2' do + let(:user_agent) { 'Arachni/v1' } + + context 'from -1 sampling priority' do + it_behaves_like 'a trace with ASM Standalone tags', + { + tag_appsec_propagation: '1', + tag_sampling_priority_condition: ->(x) { x == 2 } + } + it_behaves_like 'a request with propagated headers', + { + res_origin: 'rum', + res_parent_id_not_equal: '34343434', + res_tags: ['_dd.p.other=1', '_dd.p.appsec=1'], + res_sampling_priority_condition: ->(x) { x == '2' }, + res_trace_id: '1212121212121212121' + } + it_behaves_like 'a trace sent to agent with Datadog-Client-Computed-Stats header' + end + + context 'from 0 sampling priority' do + let(:headers_sampling_priority) { '0' } + + it_behaves_like 'a trace with ASM Standalone tags', + { + tag_appsec_propagation: '1', + tag_sampling_priority_condition: ->(x) { x == 2 } + } + it_behaves_like 'a request with propagated headers', + { + res_origin: 'rum', + res_parent_id_not_equal: '34343434', + res_tags: ['_dd.p.other=1', '_dd.p.appsec=1'], + res_sampling_priority_condition: ->(x) { x == '2' }, + res_trace_id: '1212121212121212121' + } + it_behaves_like 'a trace sent to agent with Datadog-Client-Computed-Stats header' + end + end + + context 'with upstream appsec propagation without attack and trace is propagated as is' do + let(:headers_tags) { '_dd.p.appsec=1' } + + context 'from 0 sampling priority' do + let(:headers_sampling_priority) { '0' } + + it_behaves_like 'a trace with ASM Standalone tags', + { + tag_appsec_propagation: '1', + tag_sampling_priority_condition: ->(x) { [0, 2].include?(x) } + } + it_behaves_like 'a request with propagated headers', + { + res_origin: 'rum', + res_parent_id_not_equal: '34343434', + res_tags: ['_dd.p.appsec=1'], + res_sampling_priority_condition: ->(x) { ['0', '2'].include?(x) }, + res_trace_id: '1212121212121212121' + } + it_behaves_like 'a trace sent to agent with Datadog-Client-Computed-Stats header' + end + + context 'from 1 sampling priority' do + let(:headers_sampling_priority) { '1' } + + it_behaves_like 'a trace with ASM Standalone tags', + { + tag_appsec_propagation: '1', + tag_sampling_priority_condition: ->(x) { [1, 2].include?(x) } + } + it_behaves_like 'a request with propagated headers', + { + res_origin: 'rum', + res_parent_id_not_equal: '34343434', + res_tags: ['_dd.p.appsec=1'], + res_sampling_priority_condition: ->(x) { ['1', '2'].include?(x) }, + res_trace_id: '1212121212121212121' + } + it_behaves_like 'a trace sent to agent with Datadog-Client-Computed-Stats header' + end + + context 'from 2 sampling priority' do + let(:headers_sampling_priority) { '2' } + + it_behaves_like 'a trace with ASM Standalone tags', + { + tag_appsec_propagation: '1', + tag_sampling_priority_condition: ->(x) { x == 2 } + } + it_behaves_like 'a request with propagated headers', + { + res_origin: 'rum', + res_parent_id_not_equal: '34343434', + res_tags: ['_dd.p.appsec=1'], + res_sampling_priority_condition: ->(x) { x == '2' }, + res_trace_id: '1212121212121212121' + } + it_behaves_like 'a trace sent to agent with Datadog-Client-Computed-Stats header' + end + end + + context 'with any upstream propagation with attack and raises trace priority to 2' do + let(:user_agent) { 'Arachni/v1' } + let(:headers_tags) { nil } + + context 'from -1 sampling priority' do + it_behaves_like 'a trace with ASM Standalone tags', + { + tag_appsec_propagation: '1', + tag_sampling_priority_condition: ->(x) { x == 2 } + } + it_behaves_like 'a request with propagated headers', + { + res_origin: 'rum', + res_parent_id_not_equal: '34343434', + res_tags: ['_dd.p.appsec=1'], + res_sampling_priority_condition: ->(x) { x == '2' }, + res_trace_id: '1212121212121212121' + } + it_behaves_like 'a trace sent to agent with Datadog-Client-Computed-Stats header' + end + + context 'from 0 sampling priority' do + let(:headers_sampling_priority) { '0' } + + it_behaves_like 'a trace with ASM Standalone tags', + { + tag_appsec_propagation: '1', + tag_sampling_priority_condition: ->(x) { x == 2 } + } + it_behaves_like 'a request with propagated headers', + { + res_origin: 'rum', + res_parent_id_not_equal: '34343434', + res_tags: ['_dd.p.appsec=1'], + res_sampling_priority_condition: ->(x) { x == '2' }, + res_trace_id: '1212121212121212121' + } + it_behaves_like 'a trace sent to agent with Datadog-Client-Computed-Stats header' + end + + context 'from 1 sampling priority' do + let(:headers_sampling_priority) { '1' } + + it_behaves_like 'a trace with ASM Standalone tags', + { + tag_appsec_propagation: '1', + tag_sampling_priority_condition: ->(x) { x == 2 } + } + it_behaves_like 'a request with propagated headers', + { + res_origin: 'rum', + res_parent_id_not_equal: '34343434', + res_tags: ['_dd.p.appsec=1'], + res_sampling_priority_condition: ->(x) { x == '2' }, + res_trace_id: '1212121212121212121' + } + it_behaves_like 'a trace sent to agent with Datadog-Client-Computed-Stats header' + end + end +end diff --git a/spec/datadog/appsec/event_spec.rb b/spec/datadog/appsec/event_spec.rb index 980fe0afdee..ba03bb3bda2 100644 --- a/spec/datadog/appsec/event_spec.rb +++ b/spec/datadog/appsec/event_spec.rb @@ -45,7 +45,7 @@ describe '.record' do before do # prevent rate limiter to bias tests - Datadog::AppSec::RateLimiter.reset!(:traces) + Datadog::AppSec::RateLimiter.reset! end let(:options) { {} } @@ -309,7 +309,7 @@ end it 'does not call the rate limiter' do - expect(Datadog::AppSec::RateLimiter).to_not receive(:limit) + expect_any_instance_of(Datadog::AppSec::RateLimiter).to_not receive(:limit) expect(trace).to_not be nil end @@ -325,14 +325,19 @@ end it 'does not call the rate limiter' do - expect(Datadog::AppSec::RateLimiter).to_not receive(:limit) + expect_any_instance_of(Datadog::AppSec::RateLimiter).to_not receive(:limit) described_class.record(nil, events) end end context 'with many traces' do - let(:rate_limit) { 100 } + before do + allow(Datadog::Core::Utils::Time).to receive(:get_time).and_return(0) + allow(Datadog::AppSec::RateLimiter).to receive(:trace_rate_limit).and_return(rate_limit) + end + + let(:rate_limit) { 50 } let(:trace_count) { rate_limit * 2 } let(:traces) do @@ -356,4 +361,95 @@ end end end + + describe '.tag_and_keep!' do + let(:with_trace) { true } + let(:with_span) { true } + + let(:waf_actions) { [] } + let(:waf_result) do + dbl = double + + allow(dbl).to receive(:actions).and_return(waf_actions) + + dbl + end + + let(:scope) do + scope_trace = nil + scope_span = nil + + trace_operation = Datadog::Tracing::TraceOperation.new + trace_operation.measure('root') do |span, trace| + scope_trace = trace if with_trace + scope_span = span if with_span + end + + dbl = double + + allow(dbl).to receive(:trace).and_return(scope_trace) + allow(dbl).to receive(:service_entry_span).and_return(scope_span) + + dbl + end + + before do + # prevent rate limiter to bias tests + Datadog::AppSec::RateLimiter.reset! + + described_class.tag_and_keep!(scope, waf_result) + end + + context 'with no actions' do + it 'does not add appsec.blocked tag to span' do + expect(scope.service_entry_span.send(:meta)).to_not include('appsec.blocked') + expect(scope.service_entry_span.send(:meta)['appsec.event']).to eq('true') + expect(scope.trace.send(:meta)['_dd.p.dm']).to eq('-5') + expect(scope.trace.send(:meta)['_dd.p.appsec']).to eq('1') + end + end + + context 'with block action' do + let(:waf_actions) { ['block'] } + + it 'adds appsec.blocked tag to span' do + expect(scope.service_entry_span.send(:meta)['appsec.blocked']).to eq('true') + expect(scope.service_entry_span.send(:meta)['appsec.event']).to eq('true') + expect(scope.trace.send(:meta)['_dd.p.dm']).to eq('-5') + expect(scope.trace.send(:meta)['_dd.p.appsec']).to eq('1') + end + end + + context 'without service_entry_span' do + let(:with_span) { false } + + it 'does not add appsec span tags but still add distributed tags' do + expect(scope.service_entry_span).to be nil + expect(scope.trace.send(:meta)['_dd.p.dm']).to eq('-5') + expect(scope.trace.send(:meta)['_dd.p.appsec']).to eq('1') + end + end + + context 'without trace' do + let(:with_trace) { false } + + context 'with no actions' do + it 'does not add distributed tags but still add appsec span tags' do + expect(scope.trace).to be nil + expect(scope.service_entry_span.send(:meta)['appsec.blocked']).to be nil + expect(scope.service_entry_span.send(:meta)['appsec.event']).to eq('true') + end + end + + context 'with block action' do + let(:waf_actions) { ['block'] } + + it 'does not add distributed tags but still add appsec span tags' do + expect(scope.trace).to be nil + expect(scope.service_entry_span.send(:meta)['appsec.blocked']).to eq('true') + expect(scope.service_entry_span.send(:meta)['appsec.event']).to eq('true') + end + end + end + end end diff --git a/spec/datadog/appsec/monitor/reactive/set_user_spec.rb b/spec/datadog/appsec/monitor/reactive/set_user_spec.rb index ef03fc645da..88791342d87 100644 --- a/spec/datadog/appsec/monitor/reactive/set_user_spec.rb +++ b/spec/datadog/appsec/monitor/reactive/set_user_spec.rb @@ -3,6 +3,7 @@ require 'datadog/appsec/spec_helper' require 'datadog/appsec/reactive/operation' require 'datadog/appsec/monitor/reactive/set_user' +require 'datadog/appsec/reactive/shared_examples' RSpec.describe Datadog::AppSec::Monitor::Reactive::SetUser do let(:operation) { Datadog::AppSec::Reactive::Operation.new('test') } @@ -44,102 +45,8 @@ end end - context 'waf result is a match' do - it 'yields result and no blocking action' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :match, timeout: false, actions: []) - expect(waf_context).to receive(:run).and_return(waf_result) - described_class.subscribe(operation, waf_context) do |result| - expect(result).to eq(waf_result) - end - result = described_class.publish(operation, user) - expect(result).to be_nil - end - - it 'yields result and blocking action. The publish method catches the resul as well' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :match, timeout: false, actions: ['block']) - expect(waf_context).to receive(:run).and_return(waf_result) - described_class.subscribe(operation, waf_context) do |result| - expect(result).to eq(waf_result) - end - block = described_class.publish(operation, user) - expect(block).to eq(true) - end - end - - context 'waf result is ok' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :ok, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, user) - expect(result).to be_nil - end - end - - context 'waf result is invalid_call' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_call, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, user) - expect(result).to be_nil - end - end - - context 'waf result is invalid_rule' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_rule, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, user) - expect(result).to be_nil - end - end - - context 'waf result is invalid_flow' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :invalid_flow, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, user) - expect(result).to be_nil - end - end - - context 'waf result is no_rule' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :no_rule, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, user) - expect(result).to be_nil - end - end - - context 'waf result is unknown' do - it 'does not yield' do - expect(operation).to receive(:subscribe).and_call_original - - waf_result = double(:waf_result, status: :foo, timeout: false) - expect(waf_context).to receive(:run).and_return(waf_result) - expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control - result = described_class.publish(operation, user) - expect(result).to be_nil - end + it_behaves_like 'waf result' do + let(:gateway) { user } end end end diff --git a/spec/datadog/appsec/processor/actions_spec.rb b/spec/datadog/appsec/processor/actions_spec.rb index a0fc72959e7..fd20e9efef3 100644 --- a/spec/datadog/appsec/processor/actions_spec.rb +++ b/spec/datadog/appsec/processor/actions_spec.rb @@ -81,10 +81,10 @@ end end - describe '.fecth_configuration' do + describe '.fetch_configuration' do it 'returns the existing configuration' do described_class.merge(actions) - expect(described_class.fecth_configuration('block')).to eq( + expect(described_class.fetch_configuration('block')).to eq( { 'id' => 'block', 'parameters' => { @@ -98,7 +98,7 @@ it 'returns nil if no configuration matches' do described_class.merge(actions) - expect(described_class.fecth_configuration('fake')).to be_nil + expect(described_class.fetch_configuration('fake')).to be_nil end end end diff --git a/spec/datadog/appsec/processor/context_spec.rb b/spec/datadog/appsec/processor/context_spec.rb new file mode 100644 index 00000000000..cf8b9fa010a --- /dev/null +++ b/spec/datadog/appsec/processor/context_spec.rb @@ -0,0 +1,299 @@ +# frozen_string_literal: true + +require 'datadog/appsec/spec_helper' +require 'datadog/appsec/processor/context' +require 'datadog/appsec/processor/rule_loader' +require 'datadog/appsec/processor/rule_merger' + +RSpec.describe Datadog::AppSec::Processor::Context do + let(:telemetry) { instance_double(Datadog::Core::Telemetry::Component) } + let(:ruleset) do + rules = Datadog::AppSec::Processor::RuleLoader.load_rules(ruleset: :recommended, telemetry: telemetry) + Datadog::AppSec::Processor::RuleMerger.merge(rules: [rules], telemetry: telemetry) + end + + let(:input_safe) { { 'server.request.headers.no_cookies' => { 'user-agent' => 'Ruby' } } } + let(:input_sqli) { { 'server.request.query' => { 'q' => '1 OR 1;' } } } + let(:input_scanner) { { 'server.request.headers.no_cookies' => { 'user-agent' => 'Nessus SOAP' } } } + let(:input_client_ip) { { 'http.client_ip' => '1.2.3.4' } } + + let(:client_ip) { '1.2.3.4' } + + let(:input) { input_scanner } + + let(:processor) { Datadog::AppSec::Processor.new(ruleset: ruleset, telemetry: telemetry) } + + let(:run_count) { 1 } + let(:timeout) { 10_000_000_000 } + + let(:runs) { Array.new(run_count) { context.run(input, timeout) } } + let(:results) { runs } + let(:overall_runtime) { results.reduce(0) { |a, e| a + e.total_runtime } } + + let(:result) do + expect(results).to have_attributes(count: 1) + + results.first + end + + subject(:context) { described_class.new(processor) } + + before do + runs + end + + after do + context.finalize + processor.finalize + end + + it { expect(result.status).to eq :match } + it { expect(context.time_ns).to be > 0 } + it { expect(context.time_ext_ns).to be > 0 } + it { expect(context.time_ext_ns).to be > context.time_ns } + it { expect(context.time_ns).to eq(overall_runtime) } + it { expect(context.timeouts).to eq 0 } + + context 'with timeout' do + let(:timeout) { 0 } + + it { expect(result.status).to eq :ok } + it { expect(context.time_ns).to eq 0 } + it { expect(context.time_ext_ns).to be > 0 } + it { expect(context.timeouts).to eq run_count } + end + + context 'with multiple runs' do + let(:run_count) { 10 } + + it { expect(context.time_ns).to eq(overall_runtime) } + + context 'with timeout' do + let(:timeout) { 0 } + + it { expect(results.first.status).to eq :ok } + it { expect(context.time_ns).to eq 0 } + it { expect(context.time_ext_ns).to be > 0 } + it { expect(context.timeouts).to eq run_count } + end + end + + describe '#run' do + let(:matches) do + results.reject { |r| r.status == :ok } + end + + let(:events) do + matches.map(&:events).flatten + end + + let(:actions) do + matches.map(&:actions) + end + + context 'clear key with empty values' do + it 'removes nil values' do + input = { + 'nil_value' => nil, + 'string_value' => 'hello' + } + expect(context.instance_variable_get(:@context)).to receive(:run).with( + { + 'string_value' => 'hello' + }, + timeout + ).and_call_original + + context.run(input, timeout) + end + + it 'do not removes boolean values' do + input = { + 'false_value' => false, + 'true_value' => true + } + expect(context.instance_variable_get(:@context)).to receive(:run).with( + input, timeout + ).and_call_original + + context.run(input, timeout) + end + + it 'removes empty string values' do + input = { + 'empty_string_value' => '', + 'string_value' => 'hello' + } + expect(context.instance_variable_get(:@context)).to receive(:run).with( + { + 'string_value' => 'hello' + }, + timeout + ).and_call_original + + context.run(input, timeout) + end + + it 'removes empty arrays values' do + input = { + 'empty_array' => [], + 'non_empty_array_value' => [1, 2], + } + expect(context.instance_variable_get(:@context)).to receive(:run).with( + { + 'non_empty_array_value' => [1, 2] + }, + timeout + ).and_call_original + + context.run(input, timeout) + end + + it 'removes empty hash values' do + input = { + 'empty_hash' => {}, + 'non_empty_hash_value' => { 'hello' => 'world' }, + } + expect(context.instance_variable_get(:@context)).to receive(:run).with( + { + 'non_empty_hash_value' => { 'hello' => 'world' } + }, + timeout + ).and_call_original + + context.run(input, timeout) + end + end + + context 'no attack' do + let(:input) { input_safe } + + it { expect(matches).to eq [] } + it { expect(events).to eq [] } + it { expect(actions).to eq [] } + end + + context 'one attack' do + let(:input) { input_scanner } + + it { expect(matches).to have_attributes(count: 1) } + it { expect(events).to have_attributes(count: 1) } + it { expect(actions).to eq [[]] } + end + + context 'multiple attacks per run' do + let(:input) { input_scanner.merge(input_sqli) } + + it { expect(matches).to have_attributes(count: 1) } + it { expect(events).to have_attributes(count: 2) } + it { expect(actions).to eq [[]] } + end + + context 'multiple runs' do + context 'same attack' do + let(:runs) do + [ + context.run(input_scanner, timeout), + context.run(input_scanner, timeout) + ] + end + + # when the same attack is detected twice in the same context, it's + # only matching once therefore there's only one match result, thus + # one action list returned. + + it { expect(matches).to have_attributes(count: 1) } + it { expect(events).to have_attributes(count: 1) } + it { expect(actions).to eq [[]] } + end + + context 'different attacks' do + let(:runs) do + [ + context.run(input_sqli, timeout), + context.run(input_scanner, timeout) + ] + end + + # when two attacks are detected in the same context there are two + # match results, thus two action lists, one for each. + + it { expect(matches).to have_attributes(count: 2) } + it { expect(events).to have_attributes(count: 2) } + it { expect(actions).to eq [[], []] } + end + end + + context 'one blockable attack' do + let(:input) { input_client_ip } + + let(:ruleset) do + rules = Datadog::AppSec::Processor::RuleLoader.load_rules(ruleset: :recommended, telemetry: telemetry) + data = Datadog::AppSec::Processor::RuleLoader.load_data(ip_denylist: [client_ip]) + + Datadog::AppSec::Processor::RuleMerger.merge( + rules: [rules], + data: data, + telemetry: telemetry + ) + end + + it { expect(matches).to have_attributes(count: 1) } + it { expect(events).to have_attributes(count: 1) } + it { expect(actions).to eq [['block']] } + end + end + + describe '#extract_schema' do + context 'when extrct_schema? returns true' do + around do |example| + ClimateControl.modify( + 'DD_EXPERIMENTAL_API_SECURITY_ENABLED' => 'true', + 'DD_API_SECURITY_REQUEST_SAMPLE_RATE' => '1' + ) do + example.run + end + end + + it 'calls the the WAF with the right arguments' do + input = { + 'waf.context.processor' => { + 'extract-schema' => true + } + } + + dummy_code = 1 + dummy_result = 2 + + expect(context.instance_variable_get(:@context)).to receive(:run).with( + input, + Datadog::AppSec::WAF::LibDDWAF::DDWAF_RUN_TIMEOUT + ).and_return([dummy_code, dummy_result]) + + expect(context.extract_schema).to eq dummy_result + end + + it 'returns schema extraction information' do + input = { 'server.request.query' => { 'vin' => '4Y1SL65848Z411439' } } + context.run(input, timeout) + + results = context.extract_schema + derivatives = results.derivatives + expect(derivatives).to_not be_empty + expect(derivatives['_dd.appsec.s.req.query']).to eq([{ 'vin' => [8, { 'category' => 'pii', 'type' => 'vin' }] }]) + end + end + + context 'when extrct_schema? returns false' do + around do |example| + ClimateControl.modify('DD_EXPERIMENTAL_API_SECURITY_ENABLED' => 'false') do + example.run + end + end + + it 'returns nil' do + expect(context.extract_schema).to be_nil + end + end + end +end diff --git a/spec/datadog/appsec/processor/rule_loader_spec.rb b/spec/datadog/appsec/processor/rule_loader_spec.rb index 838a6b9cd67..4b0bec8a041 100644 --- a/spec/datadog/appsec/processor/rule_loader_spec.rb +++ b/spec/datadog/appsec/processor/rule_loader_spec.rb @@ -21,8 +21,8 @@ end let(:recommended) { JSON.parse(Datadog::AppSec::Assets.waf_rules(:recommended)) } let(:strict) { JSON.parse(Datadog::AppSec::Assets.waf_rules(:strict)) } - - subject(:rules) { described_class.load_rules(ruleset: ruleset) } + let(:telemetry) { instance_double(Datadog::Core::Telemetry::Component) } + subject(:rules) { described_class.load_rules(ruleset: ruleset, telemetry: telemetry) } context 'when ruleset is :recommended' do let(:ruleset) { :recommended } @@ -60,7 +60,14 @@ context 'when ruleset is a non existing path' do let(:ruleset) { '/does/not/exist' } - it { expect(rules).to be_nil } + it 'returns `nil`' do + expect(telemetry).to receive(:report).with( + an_instance_of(Errno::ENOENT), + description: 'libddwaf ruleset failed to load' + ) + + expect(rules).to be_nil + end end context 'when ruleset is IO-like' do @@ -84,7 +91,14 @@ context 'when ruleset is not parseable' do let(:ruleset) { StringIO.new('this is not json') } - it { expect(rules).to be_nil } + it 'returns `nil`' do + expect(telemetry).to receive(:report).with( + an_instance_of(JSON::ParserError), + description: 'libddwaf ruleset failed to load' + ) + + expect(rules).to be_nil + end end end diff --git a/spec/datadog/appsec/processor/rule_merger_spec.rb b/spec/datadog/appsec/processor/rule_merger_spec.rb index f89c37226cd..5a73dd3c424 100644 --- a/spec/datadog/appsec/processor/rule_merger_spec.rb +++ b/spec/datadog/appsec/processor/rule_merger_spec.rb @@ -2,6 +2,15 @@ require 'datadog/appsec/processor/rule_merger' RSpec.describe Datadog::AppSec::Processor::RuleMerger do + around do |example| + described_class.instance_variable_set(:@default_waf_processors, nil) + described_class.instance_variable_set(:@default_waf_scanners, nil) + example.run + described_class.instance_variable_set(:@default_waf_processors, nil) + described_class.instance_variable_set(:@default_waf_scanners, nil) + end + + let(:telemetry) { instance_double(Datadog::Core::Telemetry::Component) } let(:rules) do [ { @@ -150,7 +159,7 @@ }, ] - result = described_class.merge(rules: rules_dup.freeze) + result = described_class.merge(rules: rules_dup.freeze, telemetry: telemetry) expect(result).to include('rules' => expected_result) end @@ -202,7 +211,7 @@ }.freeze expect do - described_class.merge(rules: rules_dup.freeze) + described_class.merge(rules: rules_dup.freeze, telemetry: telemetry) end.to raise_error(described_class::RuleVersionMismatchError) end end @@ -214,7 +223,7 @@ it 'does not merge rules_overrides or exclusions' do expected_result = rules[0] - result = described_class.merge(rules: rules) + result = described_class.merge(rules: rules, telemetry: telemetry) expect(result).to include(expected_result) end end @@ -236,7 +245,7 @@ ] ] - result = described_class.merge(rules: rules, overrides: rules_overrides) + result = described_class.merge(rules: rules, overrides: rules_overrides, telemetry: telemetry) expect(result).to include('rules' => rules[0]['rules']) expect(result).to include('rules_override' => rules_overrides.flatten) end @@ -311,7 +320,7 @@ ], ] - result = described_class.merge(rules: rules, exclusions: exclusions) + result = described_class.merge(rules: rules, exclusions: exclusions, telemetry: telemetry) expect(result).to include('rules' => rules[0]['rules']) expect(result).to include('exclusions' => exclusions.flatten) end @@ -385,7 +394,7 @@ }, ] - result = described_class.merge(rules: rules, data: rules_data) + result = described_class.merge(rules: rules, data: rules_data, telemetry: telemetry) expect(result).to include('rules' => rules[0]['rules']) expect(result).to include('rules_data' => expected_result) end @@ -439,7 +448,7 @@ } ] - result = described_class.merge(rules: rules, data: rules_data) + result = described_class.merge(rules: rules, data: rules_data, telemetry: telemetry) expect(result).to include('rules' => rules[0]['rules']) expect(result).to include('rules_data' => expected_result) end @@ -486,7 +495,7 @@ } ] - result = described_class.merge(rules: rules, data: rules_data) + result = described_class.merge(rules: rules, data: rules_data, telemetry: telemetry) expect(result).to include('rules' => rules[0]['rules']) expect(result).to include('rules_data' => expected_result) end @@ -530,7 +539,7 @@ } ] - result = described_class.merge(rules: rules, data: rules_data) + result = described_class.merge(rules: rules, data: rules_data, telemetry: telemetry) expect(result).to include('rules' => rules[0]['rules']) expect(result).to include('rules_data' => expected_result) end @@ -591,7 +600,7 @@ ] ] - result = described_class.merge(rules: rules, custom_rules: custom_rules) + result = described_class.merge(rules: rules, custom_rules: custom_rules, telemetry: telemetry) expect(result).to include('rules' => rules[0]['rules']) expect(result).to include('custom_rules' => custom_rules.flatten) end @@ -676,7 +685,13 @@ } ] - result = described_class.merge(rules: rules, data: rules_data, overrides: rules_overrides, exclusions: exclusions) + result = described_class.merge( + rules: rules, + data: rules_data, + overrides: rules_overrides, + exclusions: exclusions, + telemetry: telemetry + ) expect(result).to include('rules' => rules[0]['rules']) expect(result).to include('rules_data' => expect_rules_data) expect(result).to include('exclusions' => exclusions.flatten) @@ -687,29 +702,59 @@ context 'processors' do it 'merges default processors' do - result = described_class.merge(rules: rules) + result = described_class.merge(rules: rules, telemetry: telemetry) expect(result).to include('rules' => rules[0]['rules']) - expect(result).to include('processors' => described_class::DEFAULT_WAF_PROCESSORS) + expect(result).to include('processors' => described_class.default_waf_processors) end it 'merges the provided processors' do - result = described_class.merge(rules: rules, processors: 'hello') + result = described_class.merge(rules: rules, processors: 'hello', telemetry: telemetry) expect(result).to include('rules' => rules[0]['rules']) expect(result).to include('processors' => 'hello') end + + context 'when fail to parse default waf processors' do + it 'returns []' do + allow(Datadog::AppSec::Assets).to receive(:waf_processors).and_raise + expect(Datadog.logger).to receive(:error).with(/libddwaf rulemerger failed to parse default waf processors/) + expect(telemetry).to receive(:report).with( + a_kind_of(StandardError), + description: 'libddwaf rulemerger failed to parse default waf processors' + ) + + result = described_class.merge(rules: rules, telemetry: telemetry) + expect(result).to include('rules' => rules[0]['rules']) + expect(result).to include('processors' => []) + end + end end context 'scanners' do it 'merges default scanners' do - result = described_class.merge(rules: rules) + result = described_class.merge(rules: rules, telemetry: telemetry) expect(result).to include('rules' => rules[0]['rules']) - expect(result).to include('scanners' => described_class::DEFAULT_WAF_SCANNERS) + expect(result).to include('scanners' => described_class.default_waf_scanners) end - it 'merges the provided processors' do - result = described_class.merge(rules: rules, scanners: 'hello') + it 'merges the provided scanners' do + result = described_class.merge(rules: rules, scanners: 'hello', telemetry: telemetry) expect(result).to include('rules' => rules[0]['rules']) expect(result).to include('scanners' => 'hello') end + + context 'when fail to parse default waf scanners' do + it 'returns []' do + allow(Datadog::AppSec::Assets).to receive(:waf_scanners).and_raise + expect(Datadog.logger).to receive(:error).with(/libddwaf rulemerger failed to parse default waf scanners/) + expect(telemetry).to receive(:report).with( + a_kind_of(StandardError), + description: 'libddwaf rulemerger failed to parse default waf scanners' + ) + + result = described_class.merge(rules: rules, telemetry: telemetry) + expect(result).to include('rules' => rules[0]['rules']) + expect(result).to include('scanners' => []) + end + end end end diff --git a/spec/datadog/appsec/processor_spec.rb b/spec/datadog/appsec/processor_spec.rb index 596c6b7fa83..cdd4d86b022 100644 --- a/spec/datadog/appsec/processor_spec.rb +++ b/spec/datadog/appsec/processor_spec.rb @@ -3,7 +3,6 @@ require 'datadog/appsec/spec_helper' require 'datadog/appsec/processor' require 'datadog/appsec/processor/rule_loader' -require 'datadog/appsec/processor/rule_merger' RSpec.describe Datadog::AppSec::Processor do before do @@ -21,73 +20,189 @@ allow(Datadog).to receive(:logger).and_return(logger) end + let(:telemetry) { instance_double(Datadog::Core::Telemetry::Component) } + let(:ruleset) { Datadog::AppSec::Processor::RuleLoader.load_rules(ruleset: :recommended, telemetry: telemetry) } - let(:ruleset) { Datadog::AppSec::Processor::RuleLoader.load_rules(ruleset: :recommended) } + describe '#require_libddwaf' do + before do + allow_any_instance_of(described_class).to receive(:libddwaf_provides_waf?).and_return(true) + allow_any_instance_of(described_class).to receive(:create_waf_handle).and_return(true) + end - context 'self' do - it 'detects if the WAF is unavailable' do - hide_const('Datadog::AppSec::WAF') + context 'successful' do + it do + allow_any_instance_of(described_class).to receive(:require).with('libddwaf') - expect(described_class.libddwaf_provides_waf?).to be false - end + expect(telemetry).not_to receive(:report) - it 'detects if the WAF is available' do - stub_const('Datadog::AppSec::WAF', Module.new) + described_class.new(ruleset: ruleset, telemetry: telemetry) - expect(described_class.libddwaf_provides_waf?).to be true + expect(Datadog.logger).not_to have_received(:warn) + end end - it 'reports via return of libddwaf loading failure' do - allow(described_class).to receive(:require).with('libddwaf').and_raise(LoadError) + context 'when LoadError is raised' do + it do + allow_any_instance_of(described_class).to receive(:require).with('libddwaf').and_raise(LoadError) + expect(telemetry).to receive(:report).with( + an_instance_of(LoadError), + description: 'libddwaf failed to load' + ).at_least(:once) - expect(described_class.require_libddwaf).to be false - end + described_class.new(ruleset: ruleset, telemetry: telemetry) - it 'reports via return of libddwaf loading success (first require)' do - allow(described_class).to receive(:require).with('libddwaf').and_return(true) + expect(Datadog.logger).to have_received(:warn).with(/AppSec is disabled/) + end + end + end - expect(described_class.require_libddwaf).to be true + describe '#libddwaf_provides_waf?' do + before do + allow_any_instance_of(described_class).to receive(:require_libddwaf).and_return(true) + allow_any_instance_of(described_class).to receive(:create_waf_handle).and_return(true) end - it 'reports via return of libddwaf loading success (second require)' do - allow(described_class).to receive(:require).with('libddwaf').and_return(false) + context 'when const is present' do + it do + stub_const('Datadog::AppSec::WAF', Module.new) - expect(described_class.require_libddwaf).to be true - end - end + described_class.new(ruleset: ruleset, telemetry: telemetry) - describe '#load_libddwaf' do - context 'when LoadError is raised' do - before do - allow(Object).to receive(:require).with('libddwaf').and_raise(LoadError) + expect(Datadog.logger).not_to have_received(:warn) end - - it { expect(described_class.new(ruleset: ruleset).send(:load_libddwaf)).to be false } end context 'when loaded but missing mandatory const' do - before do - allow(Object).to receive(:require).with('libddwaf').and_return(true) + it do hide_const('Datadog::AppSec::WAF') + + described_class.new(ruleset: ruleset, telemetry: telemetry) + + expect(Datadog.logger).to have_received(:warn).with(/AppSec is disabled/) end + end + end - it { expect(described_class.new(ruleset: ruleset).send(:load_libddwaf)).to be false } + describe '#create_waf_handle' do + before do + allow_any_instance_of(described_class).to receive(:require_libddwaf).and_return(true) + allow_any_instance_of(described_class).to receive(:libddwaf_provides_waf?).and_return(true) end - context 'when loaded successfully' do - before do - allow(Object).to receive(:require).with('libddwaf').and_return(true) + context 'when success' do + it do stub_const('Datadog::AppSec::WAF', Module.new) stub_const('Datadog::AppSec::WAF::LibDDWAF', Module.new) stub_const('Datadog::AppSec::WAF::LibDDWAF::Error', Class.new(StandardError)) + stub_const( + 'Datadog::AppSec::WAF::Handle', + Class.new do + def initialize(*); end + + def diagnostics + :handle_diagnostics + end + + def required_addresses + [:required_addresses] + end + end + ) + expect(telemetry).not_to receive(:report) + + processor = described_class.new(ruleset: ruleset, telemetry: telemetry) + + expect(processor).to be_ready + expect(processor.diagnostics).to eq(:handle_diagnostics) + expect(processor.addresses).to eq([:required_addresses]) + + expect(Datadog.logger).not_to have_received(:warn) end + end + + context 'when fail' do + it do + stub_const('Datadog::AppSec::WAF', Module.new) + stub_const('Datadog::AppSec::WAF::LibDDWAF', Module.new) + stub_const( + 'Datadog::AppSec::WAF::LibDDWAF::Error', + Class.new(StandardError) do + def diagnostics + :error_diagnostics + end + end + ) + stub_const( + 'Datadog::AppSec::WAF::Handle', + Class.new do + def initialize(*) + raise Datadog::AppSec::WAF::LibDDWAF::Error + end + + def diagnostics + :handle_diagnostics + end + + def required_addresses + [] + end + end + ) + expect(telemetry).to receive(:report).with( + a_kind_of(Datadog::AppSec::WAF::LibDDWAF::Error), + description: 'libddwaf failed to initialize' + ) + + processor = described_class.new(ruleset: ruleset, telemetry: telemetry) + + expect(processor).not_to be_ready + expect(processor.diagnostics).to eq(:error_diagnostics) + expect(processor.addresses).to eq([]) - it { expect(described_class.new(ruleset: ruleset).send(:load_libddwaf)).to be true } + expect(Datadog.logger).to have_received(:warn).with(/AppSec is disabled/) + end + + it do + stub_const('Datadog::AppSec::WAF', Module.new) + stub_const('Datadog::AppSec::WAF::LibDDWAF', Module.new) + stub_const( + 'Datadog::AppSec::WAF::LibDDWAF::Error', + Class.new(StandardError) + ) + stub_const( + 'Datadog::AppSec::WAF::Handle', + Class.new do + def initialize(*) + raise StandardError + end + + def diagnostics + :handle_diagnostics + end + + def required_addresses + [] + end + end + ) + expect(telemetry).to receive(:report).with( + a_kind_of(StandardError), + description: 'libddwaf failed to initialize' + ) + + processor = described_class.new(ruleset: ruleset, telemetry: telemetry) + + expect(processor).not_to be_ready + expect(processor.diagnostics).to be_nil + expect(processor.addresses).to eq([]) + + expect(Datadog.logger).to have_received(:warn).with(/AppSec is disabled/) + end end end describe '#initialize' do - subject(:processor) { described_class.new(ruleset: ruleset) } + subject(:processor) { described_class.new(ruleset: ruleset, telemetry: telemetry) } context 'when valid ruleset' do it { is_expected.to be_ready } @@ -95,9 +210,8 @@ context 'when libddwaf fails to load' do before do - expect(described_class).to receive(:require_libddwaf).and_return(false) - expect(Datadog.logger).to receive(:warn) + expect_any_instance_of(described_class).to receive(:require_libddwaf).and_return(false) end it { is_expected.to_not be_ready } @@ -105,8 +219,8 @@ context 'when libddwaf fails to provide WAF' do before do - expect(described_class).to receive(:require_libddwaf).and_return(true) - expect(described_class).to receive(:libddwaf_provides_waf?).and_return(false) + expect_any_instance_of(described_class).to receive(:require_libddwaf).and_return(true) + expect_any_instance_of(described_class).to receive(:libddwaf_provides_waf?).and_return(false) expect(Datadog.logger).to receive(:warn) end @@ -117,307 +231,55 @@ context 'when ruleset is invalid' do let(:ruleset) { { 'not' => 'valid' } } - before do + it do expect(Datadog.logger).to receive(:warn) - end - - it { is_expected.to_not be_ready } - end - end -end - -RSpec.describe Datadog::AppSec::Processor::Context do - let(:ruleset) do - rules = Datadog::AppSec::Processor::RuleLoader.load_rules(ruleset: :recommended) - Datadog::AppSec::Processor::RuleMerger.merge(rules: [rules]) - end - - let(:input_safe) { { 'server.request.headers.no_cookies' => { 'user-agent' => 'Ruby' } } } - let(:input_sqli) { { 'server.request.query' => { 'q' => '1 OR 1;' } } } - let(:input_scanner) { { 'server.request.headers.no_cookies' => { 'user-agent' => 'Nessus SOAP' } } } - let(:input_client_ip) { { 'http.client_ip' => '1.2.3.4' } } - - let(:client_ip) { '1.2.3.4' } - - let(:input) { input_scanner } - - let(:processor) { Datadog::AppSec::Processor.new(ruleset: ruleset) } - - let(:run_count) { 1 } - let(:timeout) { 10_000_000_000 } - - let(:runs) { Array.new(run_count) { context.run(input, timeout) } } - let(:results) { runs } - let(:overall_runtime) { results.reduce(0) { |a, e| a + e.total_runtime } } - - let(:run) do - expect(runs).to have_attributes(count: 1) - - runs.first - end - - let(:result) do - expect(results).to have_attributes(count: 1) - - results.first - end - - subject(:context) { described_class.new(processor) } - - before do - runs - end - - after do - context.finalize - processor.finalize - end - - it { expect(result.status).to eq :match } - it { expect(context.time_ns).to be > 0 } - it { expect(context.time_ext_ns).to be > 0 } - it { expect(context.time_ext_ns).to be > context.time_ns } - it { expect(context.time_ns).to eq(overall_runtime) } - it { expect(context.timeouts).to eq 0 } - - context 'with timeout' do - let(:timeout) { 0 } - - it { expect(result.status).to eq :ok } - it { expect(context.time_ns).to eq 0 } - it { expect(context.time_ext_ns).to be > 0 } - it { expect(context.timeouts).to eq run_count } - end - - context 'with multiple runs' do - let(:run_count) { 10 } - - it { expect(context.time_ns).to eq(overall_runtime) } - - context 'with timeout' do - let(:timeout) { 0 } - - it { expect(results.first.status).to eq :ok } - it { expect(context.time_ns).to eq 0 } - it { expect(context.time_ext_ns).to be > 0 } - it { expect(context.timeouts).to eq run_count } - end - end - - describe '#run' do - let(:matches) do - results.reject { |r| r.status == :ok } - end - - let(:events) do - matches.map(&:events).flatten - end - - let(:actions) do - matches.map(&:actions) - end - - context 'clear key with empty values' do - it 'removes nil values' do - input = { - 'nil_value' => nil, - 'string_value' => 'hello' - } - expect(context.instance_variable_get(:@context)).to receive(:run).with( - { - 'string_value' => 'hello' - }, - timeout - ).and_call_original - - context.run(input, timeout) - end - - it 'do not removes boolean values' do - input = { - 'false_value' => false, - 'true_value' => true - } - expect(context.instance_variable_get(:@context)).to receive(:run).with( - input, timeout - ).and_call_original - - context.run(input, timeout) - end - - it 'removes empty string values' do - input = { - 'empty_string_value' => '', - 'string_value' => 'hello' - } - expect(context.instance_variable_get(:@context)).to receive(:run).with( - { - 'string_value' => 'hello' - }, - timeout - ).and_call_original - - context.run(input, timeout) - end - - it 'removes empty arrays values' do - input = { - 'empty_array' => [], - 'non_empty_array_value' => [1, 2], - } - expect(context.instance_variable_get(:@context)).to receive(:run).with( - { - 'non_empty_array_value' => [1, 2] - }, - timeout - ).and_call_original - - context.run(input, timeout) - end - - it 'removes empty hash values' do - input = { - 'empty_hash' => {}, - 'non_empty_hash_value' => { 'hello' => 'world' }, - } - expect(context.instance_variable_get(:@context)).to receive(:run).with( - { - 'non_empty_hash_value' => { 'hello' => 'world' } - }, - timeout - ).and_call_original - - context.run(input, timeout) - end - end - - context 'no attack' do - let(:input) { input_safe } - - it { expect(matches).to eq [] } - it { expect(events).to eq [] } - it { expect(actions).to eq [] } - end - - context 'one attack' do - let(:input) { input_scanner } - - it { expect(matches).to have_attributes(count: 1) } - it { expect(events).to have_attributes(count: 1) } - it { expect(actions).to eq [[]] } - end - - context 'multiple attacks per run' do - let(:input) { input_scanner.merge(input_sqli) } - - it { expect(matches).to have_attributes(count: 1) } - it { expect(events).to have_attributes(count: 2) } - it { expect(actions).to eq [[]] } - end - - context 'multiple runs' do - context 'same attack' do - let(:runs) do - [ - context.run(input_scanner, timeout), - context.run(input_scanner, timeout) - ] - end - - # when the same attack is detected twice in the same context, it's - # only matching once therefore there's only one match result, thus - # one action list returned. - - it { expect(matches).to have_attributes(count: 1) } - it { expect(events).to have_attributes(count: 1) } - it { expect(actions).to eq [[]] } - end - - context 'different attacks' do - let(:runs) do - [ - context.run(input_sqli, timeout), - context.run(input_scanner, timeout) - ] - end - - # when two attacks are detected in the same context there are two - # match results, thus two action lists, one for each. + expect(telemetry).to receive(:report).with( + a_kind_of(StandardError), + description: 'libddwaf failed to initialize' + ) - it { expect(matches).to have_attributes(count: 2) } - it { expect(events).to have_attributes(count: 2) } - it { expect(actions).to eq [[], []] } + is_expected.to_not be_ready end end - context 'one blockable attack' do - let(:input) { input_client_ip } + context 'when reporting errors' do + it do + stub_const('Datadog::AppSec::WAF::Handle', double) + stub_const('Datadog::AppSec::WAF::LibDDWAF::Error', Class.new(StandardError)) - let(:ruleset) do - rules = Datadog::AppSec::Processor::RuleLoader.load_rules(ruleset: :recommended) - data = Datadog::AppSec::Processor::RuleLoader.load_data(ip_denylist: [client_ip]) + expect_any_instance_of(described_class).to receive(:require_libddwaf).and_return(true) + expect_any_instance_of(described_class).to receive(:libddwaf_provides_waf?).and_return(true) - Datadog::AppSec::Processor::RuleMerger.merge( - rules: [rules], - data: data, + expect(Datadog::AppSec::WAF::Handle).to receive(:new).and_raise(StandardError) + expect(telemetry).to receive(:report).with( + an_instance_of(StandardError), + description: 'libddwaf failed to initialize' ) - end - - it { expect(matches).to have_attributes(count: 1) } - it { expect(events).to have_attributes(count: 1) } - it { expect(actions).to eq [['block']] } - end - end - - describe '#extract_schema' do - context 'when extrct_schema? returns true' do - around do |example| - ClimateControl.modify( - 'DD_EXPERIMENTAL_API_SECURITY_ENABLED' => 'true', - 'DD_API_SECURITY_REQUEST_SAMPLE_RATE' => '1' - ) do - example.run - end - end - it 'calls the the WAF with the right arguments' do - input = { - 'waf.context.processor' => { - 'extract-schema' => true - } - } - - dummy_code = 1 - dummy_result = 2 - - expect(context.instance_variable_get(:@context)).to receive(:run).with( - input, - Datadog::AppSec::WAF::LibDDWAF::DDWAF_RUN_TIMEOUT - ).and_return([dummy_code, dummy_result]) - - expect(context.extract_schema).to eq dummy_result + expect(processor).to_not be_ready end - it 'returns schema extraction information' do - input = { 'server.request.query' => { 'vin' => '4Y1SL65848Z411439' } } - context.run(input, timeout) + it do + stub_const('Datadog::AppSec::WAF::Handle', double) + stub_const( + 'Datadog::AppSec::WAF::LibDDWAF::Error', + Class.new(StandardError) do + def diagnostics + nil + end + end + ) - results = context.extract_schema - derivatives = results.derivatives - expect(derivatives).to_not be_empty - expect(derivatives['_dd.appsec.s.req.query']).to eq([{ 'vin' => [8, { 'category' => 'pii', 'type' => 'vin' }] }]) - end - end + expect_any_instance_of(described_class).to receive(:require_libddwaf).and_return(true) + expect_any_instance_of(described_class).to receive(:libddwaf_provides_waf?).and_return(true) - context 'when extrct_schema? returns false' do - around do |example| - ClimateControl.modify('DD_EXPERIMENTAL_API_SECURITY_ENABLED' => 'false') do - example.run - end - end + expect(Datadog::AppSec::WAF::Handle).to receive(:new).and_raise(Datadog::AppSec::WAF::LibDDWAF::Error) + expect(telemetry).to receive(:report).with( + an_instance_of(Datadog::AppSec::WAF::LibDDWAF::Error), + description: 'libddwaf failed to initialize' + ) - it 'returns nil' do - expect(context.extract_schema).to be_nil + expect(processor).to_not be_ready end end end diff --git a/spec/datadog/appsec/rate_limiter_spec.rb b/spec/datadog/appsec/rate_limiter_spec.rb new file mode 100644 index 00000000000..72b93062817 --- /dev/null +++ b/spec/datadog/appsec/rate_limiter_spec.rb @@ -0,0 +1,30 @@ +require 'datadog/appsec/spec_helper' +require 'datadog/appsec/rate_limiter' + +RSpec.describe Datadog::AppSec::RateLimiter do + before { described_class.reset! } + + describe '#limit' do + context 'in different threads' do + before { stub_const("#{described_class}::THREAD_KEY", :__spec_instance) } + + it 'creates separate rate limiter per thread' do + thread_1 = Thread.new do + described_class.thread_local + end + + thread_2 = Thread.new do + described_class.thread_local + end + + thread_1.join + thread_2.join + + rate_limiter_1 = thread_1.thread_variable_get(:__spec_instance) + rate_limiter_2 = thread_2.thread_variable_get(:__spec_instance) + + expect(rate_limiter_1).not_to be(rate_limiter_2) + end + end + end +end diff --git a/spec/datadog/appsec/reactive/shared_examples.rb b/spec/datadog/appsec/reactive/shared_examples.rb new file mode 100644 index 00000000000..84715c3b95f --- /dev/null +++ b/spec/datadog/appsec/reactive/shared_examples.rb @@ -0,0 +1,101 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'waf result' do + context 'is a match' do + it 'yields result and no blocking action' do + expect(operation).to receive(:subscribe).and_call_original + + waf_result = double(:waf_result, status: :match, timeout: false, actions: []) + expect(waf_context).to receive(:run).and_return(waf_result) + described_class.subscribe(operation, waf_context) do |result| + expect(result).to eq(waf_result) + end + result = described_class.publish(operation, gateway) + expect(result).to be_nil + end + + it 'yields result and blocking action. The publish method catches the resul as well' do + expect(operation).to receive(:subscribe).and_call_original + + waf_result = double(:waf_result, status: :match, timeout: false, actions: ['block']) + expect(waf_context).to receive(:run).and_return(waf_result) + described_class.subscribe(operation, waf_context) do |result| + expect(result).to eq(waf_result) + end + block = described_class.publish(operation, gateway) + expect(block).to eq(true) + end + end + + context 'is ok' do + it 'does not yield' do + expect(operation).to receive(:subscribe).and_call_original + + waf_result = double(:waf_result, status: :ok, timeout: false) + expect(waf_context).to receive(:run).and_return(waf_result) + expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control + result = described_class.publish(operation, gateway) + expect(result).to be_nil + end + end + + context 'is invalid_call' do + it 'does not yield' do + expect(operation).to receive(:subscribe).and_call_original + + waf_result = double(:waf_result, status: :invalid_call, timeout: false) + expect(waf_context).to receive(:run).and_return(waf_result) + expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control + result = described_class.publish(operation, gateway) + expect(result).to be_nil + end + end + + context 'is invalid_rule' do + it 'does not yield' do + expect(operation).to receive(:subscribe).and_call_original + + waf_result = double(:waf_result, status: :invalid_rule, timeout: false) + expect(waf_context).to receive(:run).and_return(waf_result) + expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control + result = described_class.publish(operation, gateway) + expect(result).to be_nil + end + end + + context 'is invalid_flow' do + it 'does not yield' do + expect(operation).to receive(:subscribe).and_call_original + + waf_result = double(:waf_result, status: :invalid_flow, timeout: false) + expect(waf_context).to receive(:run).and_return(waf_result) + expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control + result = described_class.publish(operation, gateway) + expect(result).to be_nil + end + end + + context 'is no_rule' do + it 'does not yield' do + expect(operation).to receive(:subscribe).and_call_original + + waf_result = double(:waf_result, status: :no_rule, timeout: false) + expect(waf_context).to receive(:run).and_return(waf_result) + expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control + result = described_class.publish(operation, gateway) + expect(result).to be_nil + end + end + + context 'is unknown' do + it 'does not yield' do + expect(operation).to receive(:subscribe).and_call_original + + waf_result = double(:waf_result, status: :foo, timeout: false) + expect(waf_context).to receive(:run).and_return(waf_result) + expect { |b| described_class.subscribe(operation, waf_context, &b) }.not_to yield_control + result = described_class.publish(operation, gateway) + expect(result).to be_nil + end + end +end diff --git a/spec/datadog/appsec/remote_spec.rb b/spec/datadog/appsec/remote_spec.rb index 9228be6efd1..acf53ba9abd 100644 --- a/spec/datadog/appsec/remote_spec.rb +++ b/spec/datadog/appsec/remote_spec.rb @@ -48,13 +48,15 @@ end describe '.receivers' do + let(:telemetry) { instance_double(Datadog::Core::Telemetry::Component) } + context 'remote configuration disabled' do before do expect(described_class).to receive(:remote_features_enabled?).and_return(false) end it 'returns empty array' do - expect(described_class.receivers).to eq([]) + expect(described_class.receivers(telemetry)).to eq([]) end end @@ -64,7 +66,7 @@ end it 'returns receivers' do - receivers = described_class.receivers + receivers = described_class.receivers(telemetry) expect(receivers.size).to eq(1) expect(receivers.first).to be_a(Datadog::Core::Remote::Dispatcher::Receiver) end @@ -106,7 +108,7 @@ }.to_json end - let(:receiver) { described_class.receivers[0] } + let(:receiver) { described_class.receivers(telemetry)[0] } let(:target) do Datadog::Core::Remote::Configuration::Target.parse( @@ -160,12 +162,13 @@ 'transformers' => [], 'on_match' => ['block'] }], - 'processors' => Datadog::AppSec::Processor::RuleMerger::DEFAULT_WAF_PROCESSORS, - 'scanners' => Datadog::AppSec::Processor::RuleMerger::DEFAULT_WAF_SCANNERS, + 'processors' => Datadog::AppSec::Processor::RuleMerger.default_waf_processors, + 'scanners' => Datadog::AppSec::Processor::RuleMerger.default_waf_scanners, } - expect(Datadog::AppSec).to receive(:reconfigure).with(ruleset: expected_ruleset, actions: []) - .and_return(nil) + expect(Datadog::AppSec).to receive(:reconfigure).with( + ruleset: expected_ruleset, actions: [], telemetry: telemetry + ).and_return(nil) changes = transaction receiver.call(repository, changes) end @@ -177,7 +180,9 @@ end let(:default_ruleset) do - [Datadog::AppSec::Processor::RuleLoader.load_rules(ruleset: Datadog.configuration.appsec.ruleset)] + [Datadog::AppSec::Processor::RuleLoader.load_rules( + ruleset: Datadog.configuration.appsec.ruleset, telemetry: telemetry + )] end let(:target) do @@ -313,6 +318,7 @@ overrides: [rules_override], exclusions: [], custom_rules: [], + telemetry: telemetry ) changes = transaction @@ -334,6 +340,7 @@ overrides: [], exclusions: [exclusions], custom_rules: [], + telemetry: telemetry ) changes = transaction @@ -354,7 +361,8 @@ data: [], overrides: [], exclusions: [], - custom_rules: [custom_rules] + custom_rules: [custom_rules], + telemetry: telemetry ) changes = transaction @@ -370,9 +378,13 @@ end it 'pass the actions to reconfigure' do - ruleset = Datadog::AppSec::Processor::RuleMerger.merge(rules: default_ruleset) + ruleset = Datadog::AppSec::Processor::RuleMerger.merge(rules: default_ruleset, telemetry: telemetry) - expect(Datadog::AppSec).to receive(:reconfigure).with(ruleset: ruleset, actions: actions) + expect(Datadog::AppSec).to receive(:reconfigure).with( + ruleset: ruleset, + actions: actions, + telemetry: telemetry + ) .and_return(nil) changes = transaction @@ -395,6 +407,7 @@ overrides: [rules_override], exclusions: [exclusions], custom_rules: [], + telemetry: telemetry ) changes = transaction @@ -416,6 +429,7 @@ overrides: [], exclusions: [], custom_rules: [], + telemetry: telemetry ) changes = transaction @@ -441,6 +455,7 @@ overrides: [], exclusions: [], custom_rules: [], + telemetry: telemetry ) changes = transaction @@ -462,6 +477,7 @@ overrides: [], exclusions: [], custom_rules: [], + telemetry: telemetry ) changes = transaction @@ -475,17 +491,18 @@ let(:transaction) { repository.transaction { |repository, transaction| } } it 'uses the rules from the appsec settings' do - ruleset = Datadog::AppSec::Processor::RuleMerger.merge(rules: default_ruleset) + ruleset = Datadog::AppSec::Processor::RuleMerger.merge(rules: default_ruleset, telemetry: telemetry) changes = transaction - expect(Datadog::AppSec).to receive(:reconfigure).with(ruleset: ruleset, actions: []) + expect(Datadog::AppSec).to receive(:reconfigure).with(ruleset: ruleset, actions: [], telemetry: telemetry) .and_return(nil) receiver.call(repository, changes) end it 'raises SyncError if no default rules available' do expect(Datadog::AppSec::Processor::RuleLoader).to receive(:load_rules).with( - ruleset: Datadog.configuration.appsec.ruleset + ruleset: Datadog.configuration.appsec.ruleset, + telemetry: telemetry ).and_return(nil) changes = transaction diff --git a/spec/datadog/appsec/scope_spec.rb b/spec/datadog/appsec/scope_spec.rb index b630806bfb8..540e7fc3546 100644 --- a/spec/datadog/appsec/scope_spec.rb +++ b/spec/datadog/appsec/scope_spec.rb @@ -6,9 +6,10 @@ RSpec.describe Datadog::AppSec::Scope do let(:trace) { double } let(:span) { double } + let(:telemetry) { instance_double(Datadog::Core::Telemetry::Component) } - let(:ruleset) { Datadog::AppSec::Processor::RuleLoader.load_rules(ruleset: :recommended) } - let(:processor) { Datadog::AppSec::Processor.new(ruleset: ruleset) } + let(:ruleset) { Datadog::AppSec::Processor::RuleLoader.load_rules(ruleset: :recommended, telemetry: telemetry) } + let(:processor) { Datadog::AppSec::Processor.new(ruleset: ruleset, telemetry: telemetry) } after do described_class.send(:reset_active_scope) diff --git a/spec/datadog/appsec/utils/trace_operation_spec.rb b/spec/datadog/appsec/utils/trace_operation_spec.rb new file mode 100644 index 00000000000..15692054506 --- /dev/null +++ b/spec/datadog/appsec/utils/trace_operation_spec.rb @@ -0,0 +1,40 @@ +require 'datadog/appsec/spec_helper' +require 'datadog/appsec/utils/trace_operation' + +RSpec.describe Datadog::AppSec::Utils::TraceOperation do + describe '#appsec_standalone_reject?' do + subject(:appsec_standalone_reject?) do + described_class.appsec_standalone_reject?(trace_op) + end + + let(:trace_op) { Datadog::Tracing::TraceOperation.new(**options) } + let(:options) { {} } + let(:appsec_standalone) { false } + let(:distributed_appsec_event) { '0' } + + before do + allow(Datadog.configuration.appsec.standalone).to receive(:enabled).and_return(appsec_standalone) + trace_op.set_tag(Datadog::AppSec::Ext::TAG_DISTRIBUTED_APPSEC_EVENT, distributed_appsec_event) if trace_op + end + + it { is_expected.to be false } + + context 'when AppSec standalone is enabled' do + let(:appsec_standalone) { true } + + it { is_expected.to be true } + + context 'without a trace' do + let(:trace_op) { nil } + + it { is_expected.to be true } + end + + context 'with a distributed AppSec event' do + let(:distributed_appsec_event) { '1' } + + it { is_expected.to be false } + end + end + end +end diff --git a/spec/datadog/core/configuration/components_spec.rb b/spec/datadog/core/configuration/components_spec.rb index 1ccea4861b7..7d7efe78180 100644 --- a/spec/datadog/core/configuration/components_spec.rb +++ b/spec/datadog/core/configuration/components_spec.rb @@ -67,11 +67,15 @@ expect(described_class).to receive(:build_tracer) .with(settings, agent_settings, logger: logger) .and_return(tracer) + crashtracker = double('crashtracker') + expect(described_class).to receive(:build_crashtracker) + .with(settings, agent_settings, logger: logger) + .and_return(crashtracker) expect(Datadog::Profiling::Component).to receive(:build_profiler_component).with( settings: settings, agent_settings: agent_settings, - optional_tracer: tracer, + optional_tracer: tracer ).and_return([profiler, environment_logger_extra]) expect(described_class).to receive(:build_runtime_metrics_worker) @@ -225,19 +229,25 @@ context 'given settings' do let(:telemetry) { instance_double(Datadog::Core::Telemetry::Component) } let(:expected_options) do - { enabled: enabled, metrics_enabled: metrics_enabled, heartbeat_interval_seconds: heartbeat_interval_seconds, + { enabled: enabled, http_transport: an_instance_of(Datadog::Core::Telemetry::Http::Transport), + metrics_enabled: metrics_enabled, heartbeat_interval_seconds: heartbeat_interval_seconds, metrics_aggregation_interval_seconds: metrics_aggregation_interval_seconds, - dependency_collection: dependency_collection } + dependency_collection: dependency_collection, shutdown_timeout_seconds: shutdown_timeout_seconds } end let(:enabled) { true } + let(:agentless_enabled) { false } let(:metrics_enabled) { true } let(:heartbeat_interval_seconds) { 60 } let(:metrics_aggregation_interval_seconds) { 10 } + let(:shutdown_timeout_seconds) { 1.0 } let(:dependency_collection) { true } + let(:api_key) { 'api_key' } before do expect(Datadog::Core::Telemetry::Component).to receive(:new).with(expected_options).and_return(telemetry) + allow(settings).to receive(:api_key).and_return(api_key) allow(settings.telemetry).to receive(:enabled).and_return(enabled) + allow(settings.telemetry).to receive(:agentless_enabled).and_return(agentless_enabled) end it { is_expected.to be(telemetry) } @@ -249,12 +259,18 @@ context 'and :unix agent adapter' do let(:expected_options) do - { enabled: false, metrics_enabled: false, heartbeat_interval_seconds: heartbeat_interval_seconds, + { enabled: false, http_transport: an_instance_of(Datadog::Core::Telemetry::Http::Transport), + metrics_enabled: false, heartbeat_interval_seconds: heartbeat_interval_seconds, metrics_aggregation_interval_seconds: metrics_aggregation_interval_seconds, - dependency_collection: dependency_collection } + dependency_collection: dependency_collection, shutdown_timeout_seconds: shutdown_timeout_seconds } end let(:agent_settings) do - instance_double(Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings, adapter: :unix) + instance_double( + Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings, + adapter: :unix, + hostname: 'foo', + port: 1234 + ) end it 'does not enable telemetry for unsupported non-http transport' do @@ -263,6 +279,42 @@ end end end + + context 'with :agentless_enabled true' do + let(:agentless_enabled) { true } + let(:transport) { instance_double(Datadog::Core::Telemetry::Http::Transport) } + let(:expected_options) do + { enabled: enabled, http_transport: transport, + metrics_enabled: metrics_enabled, heartbeat_interval_seconds: heartbeat_interval_seconds, + metrics_aggregation_interval_seconds: metrics_aggregation_interval_seconds, + dependency_collection: dependency_collection, shutdown_timeout_seconds: shutdown_timeout_seconds } + end + + before do + expect(Datadog::Core::Telemetry::Http::Transport).to receive(:build_agentless_transport).with( + api_key: api_key, + dd_site: settings.site, + url_override: settings.telemetry.agentless_url_override + ).and_return(transport) + end + + it { is_expected.to be(telemetry) } + + context 'and no api key' do + let(:api_key) { nil } + let(:expected_options) do + { enabled: false, http_transport: transport, + metrics_enabled: false, heartbeat_interval_seconds: heartbeat_interval_seconds, + metrics_aggregation_interval_seconds: metrics_aggregation_interval_seconds, + dependency_collection: dependency_collection, shutdown_timeout_seconds: shutdown_timeout_seconds } + end + + it 'does not enable telemetry when agentless mode requested but api key is not present' do + expect(logger).to receive(:debug) + is_expected.to be(telemetry) + end + end + end end end @@ -1034,7 +1086,7 @@ expect(Datadog::Profiling::Component).to receive(:build_profiler_component).with( settings: settings, agent_settings: agent_settings, - optional_tracer: anything, + optional_tracer: anything ).and_return([profiler, environment_logger_extra]) end diff --git a/spec/datadog/core/configuration/settings_spec.rb b/spec/datadog/core/configuration/settings_spec.rb index 79077bb87c9..7c309814fce 100644 --- a/spec/datadog/core/configuration/settings_spec.rb +++ b/spec/datadog/core/configuration/settings_spec.rb @@ -526,6 +526,21 @@ end end + describe '#allocation_counting_enabled' do + subject(:allocation_counting_enabled) { settings.profiling.advanced.allocation_counting_enabled } + + it { is_expected.to be false } + end + + describe '#allocation_counting_enabled=' do + it 'updates the #allocation_counting_enabled setting' do + expect { settings.profiling.advanced.allocation_counting_enabled = true } + .to change { settings.profiling.advanced.allocation_counting_enabled } + .from(false) + .to(true) + end + end + describe '#experimental_heap_enabled' do subject(:experimental_heap_enabled) { settings.profiling.advanced.experimental_heap_enabled } @@ -813,14 +828,14 @@ context 'is not defined' do let(:environment) { nil } - it { is_expected.to be false } + it { is_expected.to be_nil } end [true, false].each do |value| context "is defined as #{value}" do let(:environment) { value.to_s } - it { is_expected.to be value } + it { is_expected.to be_nil } end end end @@ -830,8 +845,7 @@ it 'updates the #experimental_crash_tracking_enabled setting' do expect { settings.profiling.advanced.experimental_crash_tracking_enabled = true } .to change { settings.profiling.advanced.experimental_crash_tracking_enabled } - .from(false) - .to(true) + .from(nil).to(true) end end @@ -869,6 +883,164 @@ .to(false) end end + + describe '#preview_gvl_enabled' do + subject(:preview_gvl_enabled) { settings.profiling.advanced.preview_gvl_enabled } + + context 'when DD_PROFILING_PREVIEW_GVL_ENABLED' do + around do |example| + ClimateControl.modify('DD_PROFILING_PREVIEW_GVL_ENABLED' => environment) do + example.run + end + end + + context 'is not defined' do + let(:environment) { nil } + + it { is_expected.to be false } + end + + [true, false].each do |value| + context "is defined as #{value}" do + let(:environment) { value.to_s } + + it { is_expected.to be value } + end + end + end + end + + describe '#preview_gvl_enabled=' do + it 'updates the #preview_gvl_enabled setting' do + expect { settings.profiling.advanced.preview_gvl_enabled = true } + .to change { settings.profiling.advanced.preview_gvl_enabled } + .from(false) + .to(true) + end + end + + describe '#heap_clean_after_gc_enabled' do + subject(:heap_clean_after_gc_enabled) { settings.profiling.advanced.heap_clean_after_gc_enabled } + + context 'when DD_PROFILING_HEAP_CLEAN_AFTER_GC_ENABLED' do + around do |example| + ClimateControl.modify('DD_PROFILING_HEAP_CLEAN_AFTER_GC_ENABLED' => environment) do + example.run + end + end + + context 'is not defined' do + let(:environment) { nil } + + it { is_expected.to be false } + end + + [true, false].each do |value| + context "is defined as #{value}" do + let(:environment) { value.to_s } + + it { is_expected.to be value } + end + end + end + end + + describe '#heap_clean_after_gc_enabled=' do + it 'updates the #heap_clean_after_gc_enabled setting' do + expect { settings.profiling.advanced.heap_clean_after_gc_enabled = true } + .to change { settings.profiling.advanced.heap_clean_after_gc_enabled } + .from(false) + .to(true) + end + end + + describe '#waiting_for_gvl_threshold_ns' do + subject(:waiting_for_gvl_threshold_ns) { settings.profiling.advanced.waiting_for_gvl_threshold_ns } + + it { is_expected.to be 10_000_000 } + end + + describe '#waiting_for_gvl_threshold_ns=' do + it 'updates the #waiting_for_gvl_threshold_ns setting' do + expect { settings.profiling.advanced.waiting_for_gvl_threshold_ns = 123_000_000 } + .to change { settings.profiling.advanced.waiting_for_gvl_threshold_ns } + .from(10_000_000) + .to(123_000_000) + end + end + + describe '#preview_otel_context_enabled' do + subject(:preview_otel_context_enabled) { settings.profiling.advanced.preview_otel_context_enabled } + + context 'when DD_PROFILING_PREVIEW_OTEL_CONTEXT_ENABLED' do + around do |example| + ClimateControl.modify('DD_PROFILING_PREVIEW_OTEL_CONTEXT_ENABLED' => environment) do + example.run + end + end + + context 'is not defined' do + let(:environment) { nil } + + it { is_expected.to eq false } + end + + ['only', 'both'].each do |value| + context "is defined as #{value}" do + let(:environment) { value } + + it { is_expected.to eq value.to_sym } + end + end + + ['true', '1'].each do |value| + context "is defined as #{value}" do + let(:environment) { value.to_s } + + it { is_expected.to eq :both } + end + end + + context 'is defined as false' do + let(:environment) { 'false' } + + it { is_expected.to eq false } + end + end + end + + describe '#preview_otel_context_enabled=' do + context 'with true' do + it 'updates the #preview_otel_context_enabled setting' do + expect { settings.profiling.advanced.preview_otel_context_enabled = true } + .to change { settings.profiling.advanced.preview_otel_context_enabled } + .from(false) + .to(:both) + end + end + + ['only', 'both', :only, :both].each do |value| + context "with #{value.inspect}" do + it 'updates the #preview_otel_context_enabled setting' do + expect { settings.profiling.advanced.preview_otel_context_enabled = value } + .to change { settings.profiling.advanced.preview_otel_context_enabled } + .from(false) + .to(value.to_sym) + end + end + end + + context 'with false' do + it 'updates the #preview_otel_context_enabled setting' do + settings.profiling.advanced.preview_otel_context_enabled = true + + expect { settings.profiling.advanced.preview_otel_context_enabled = false } + .to change { settings.profiling.advanced.preview_otel_context_enabled } + .from(:both) + .to(false) + end + end + end end describe '#upload' do @@ -1328,6 +1500,73 @@ end end + describe '#get_time_provider=' do + subject(:set_get_time_provider) { settings.get_time_provider = get_time_provider } + + after { settings.reset! } + + let(:get_time) { 1 } + + let(:get_time_new_milliseconds) { 42 } + let(:get_time_new_seconds) { 0.042 } + + let(:unit) { :float_second } + let(:get_time_provider) do + new_milliseconds = get_time_new_milliseconds # Capture for closure + new_seconds = get_time_new_seconds # Capture for closure + + ->(unit) { unit == :float_millisecond ? new_milliseconds : new_seconds } + end + + context 'when default' do + before { allow(Process).to receive(:clock_gettime).with(Process::CLOCK_MONOTONIC, unit).and_return(1) } + + it 'delegates to Process.clock_gettime' do + expect(settings.get_time_provider.call(unit)).to eq(get_time) + expect(Datadog::Core::Utils::Time.get_time(unit)).to eq(get_time) + end + end + + context 'when given a value' do + before { set_get_time_provider } + + context 'when unit is :float_second' do + it 'returns the provided time in float seconds' do + expect(settings.get_time_provider.call(unit)).to eq(get_time_new_seconds) + expect(Datadog::Core::Utils::Time.get_time(unit)).to eq(get_time_new_seconds) + end + end + + context 'when unit is :float_millisecond' do + let(:unit) { :float_millisecond } + + it 'returns the provided time in float milliseconds' do + expect(settings.get_time_provider.call(unit)).to eq(get_time_new_milliseconds) + expect(Datadog::Core::Utils::Time.get_time(unit)).to eq(get_time_new_milliseconds) + end + end + end + + context 'then reset' do + let(:original_get_time) { 1 } + + before do + set_get_time_provider + allow(Process).to receive(:clock_gettime).with(Process::CLOCK_MONOTONIC, unit).and_return(original_get_time) + end + + it 'returns the provided time' do + expect(settings.get_time_provider.call(unit)).to eq(get_time_new_seconds) + expect(Datadog::Core::Utils::Time.get_time(unit)).to eq(get_time_new_seconds) + + settings.reset! + + expect(settings.get_time_provider.call(unit)).to eq(original_get_time) + expect(Datadog::Core::Utils::Time.get_time(unit)).to eq(original_get_time) + end + end + end + # Important note: These settings are used as inputs of the AgentSettingsResolver and are used by all components # that consume its result (e.g. tracing, profiling, and telemetry, as of January 2023). describe '#agent' do @@ -1429,6 +1668,9 @@ end describe '#telemetry' do + let(:env_var_name) { 'no_var' } + let(:env_var_value) { 'no_val' } + around do |example| ClimateControl.modify(env_var_name => env_var_value) do example.run @@ -1476,6 +1718,21 @@ end end + describe '#agentless_enabled' do + subject(:agentless_enabled) { settings.telemetry.agentless_enabled } + + it { is_expected.to be false } + end + + describe '#agentless_enabled=' do + it 'updates the #agentless_enabled setting' do + expect { settings.telemetry.agentless_enabled = true } + .to change { settings.telemetry.agentless_enabled } + .from(false) + .to(true) + end + end + describe '#metrics_enabled' do subject(:metrics_enabled) { settings.telemetry.metrics_enabled } let(:env_var_name) { 'DD_TELEMETRY_METRICS_ENABLED' } @@ -1659,6 +1916,21 @@ .to('abc123') end end + + describe '#shutdown_timeout_seconds' do + subject(:shutdown_timeout_seconds) { settings.telemetry.shutdown_timeout_seconds } + + it { is_expected.to eq 1.0 } + end + + describe '#shutdown_timeout_seconds=' do + it 'updates the #shutdown_timeout_seconds setting' do + expect { settings.telemetry.shutdown_timeout_seconds = 42.0 } + .to change { settings.telemetry.shutdown_timeout_seconds } + .from(1.0) + .to(42.0) + end + end end describe '#remote' do @@ -1788,4 +2060,40 @@ end end end + + describe '#crashtracking' do + describe '#enabled' do + subject(:crashtracking_enabled) { settings.crashtracking.enabled } + + context 'when DD_CRASHTRACKING_ENABLED' do + around do |example| + ClimateControl.modify('DD_CRASHTRACKING_ENABLED' => environment) do + example.run + end + end + + context 'is not defined' do + let(:environment) { nil } + + it { is_expected.to be false } + end + + [true, false].each do |value| + context "is defined as #{value}" do + let(:environment) { value.to_s } + + it { is_expected.to be value } + end + end + end + end + + describe '#enabled=' do + it 'updates the #enabled setting' do + expect { settings.crashtracking.enabled = true } + .to change { settings.crashtracking.enabled } + .from(false).to(true) + end + end + end end diff --git a/spec/datadog/core/configuration_spec.rb b/spec/datadog/core/configuration_spec.rb index 51a2b44cb01..f97d4048730 100644 --- a/spec/datadog/core/configuration_spec.rb +++ b/spec/datadog/core/configuration_spec.rb @@ -575,9 +575,7 @@ let(:fake_thread) do instance_double(Thread, 'fake thread').tap do |it| - if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.3') - expect(it).to(receive(:name=).with('Datadog::Core::Configuration')) - end + expect(it).to(receive(:name=).with('Datadog::Core::Configuration')) end end diff --git a/spec/datadog/core/crashtracking/agent_base_url_spec.rb b/spec/datadog/core/crashtracking/agent_base_url_spec.rb new file mode 100644 index 00000000000..86163c035fd --- /dev/null +++ b/spec/datadog/core/crashtracking/agent_base_url_spec.rb @@ -0,0 +1,66 @@ +# frozen_string_literal: true + +require 'spec_helper' +require 'datadog/core/crashtracking/agent_base_url' + +RSpec.describe Datadog::Core::Crashtracking::AgentBaseUrl do + describe '.resolve' do + context 'when using HTTP adapter' do + context 'when SSL is enabled' do + let(:agent_settings) do + instance_double( + Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings, + adapter: Datadog::Core::Configuration::Ext::Agent::HTTP::ADAPTER, + ssl: true, + hostname: 'example.com', + port: 8080 + ) + end + + it 'returns the correct base URL' do + expect(described_class.resolve(agent_settings)).to eq('https://example.com:8080/') + end + end + + context 'when SSL is disabled' do + let(:agent_settings) do + instance_double( + Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings, + adapter: Datadog::Core::Configuration::Ext::Agent::HTTP::ADAPTER, + ssl: false, + hostname: 'example.com', + port: 8080 + ) + end + + it 'returns the correct base URL' do + expect(described_class.resolve(agent_settings)).to eq('http://example.com:8080/') + end + end + end + + context 'when using UnixSocket adapter' do + let(:agent_settings) do + instance_double( + Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings, + adapter: Datadog::Core::Configuration::Ext::Agent::UnixSocket::ADAPTER, + uds_path: '/var/run/datadog.sock' + ) + end + + it 'returns the correct base URL' do + expect(described_class.resolve(agent_settings)).to eq('unix:///var/run/datadog.sock') + end + end + + context 'when using unknownm adapter' do + let(:agent_settings) do + instance_double(Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings, adapter: 'unknown') + end + + it 'returns nil' do + expect(described_class.resolve(agent_settings)).to be_nil + end + end + end +end diff --git a/spec/datadog/core/crashtracking/component_spec.rb b/spec/datadog/core/crashtracking/component_spec.rb new file mode 100644 index 00000000000..9fc7224ea02 --- /dev/null +++ b/spec/datadog/core/crashtracking/component_spec.rb @@ -0,0 +1,299 @@ +require 'spec_helper' +require 'datadog/core/crashtracking/component' + +require 'webrick' +require 'fiddle' + +RSpec.describe Datadog::Core::Crashtracking::Component, skip: !CrashtrackingHelpers.supported? do + describe '.build' do + let(:settings) { Datadog::Core::Configuration::Settings.new } + let(:agent_settings) { double('agent_settings') } + let(:logger) { Logger.new($stdout) } + let(:tags) { { 'tag1' => 'value1' } } + let(:agent_base_url) { 'agent_base_url' } + let(:ld_library_path) { 'ld_library_path' } + let(:path_to_crashtracking_receiver_binary) { 'path_to_crashtracking_receiver_binary' } + + context 'when all required parameters are provided' do + it 'creates a new instance of Component and starts it' do + expect(Datadog::Core::Crashtracking::TagBuilder).to receive(:call).with(settings) + .and_return(tags) + expect(Datadog::Core::Crashtracking::AgentBaseUrl).to receive(:resolve).with(agent_settings) + .and_return(agent_base_url) + expect(::Libdatadog).to receive(:ld_library_path) + .and_return(ld_library_path) + expect(::Libdatadog).to receive(:path_to_crashtracking_receiver_binary) + .and_return(path_to_crashtracking_receiver_binary) + expect(logger).to_not receive(:warn) + + component = instance_double(described_class) + expect(described_class).to receive(:new).with( + tags: tags, + agent_base_url: agent_base_url, + ld_library_path: ld_library_path, + path_to_crashtracking_receiver_binary: path_to_crashtracking_receiver_binary, + logger: logger + ).and_return(component) + + expect(component).to receive(:start) + + described_class.build(settings, agent_settings, logger: logger) + end + end + + context 'when missing `agent_base_url`' do + let(:agent_base_url) { nil } + + it 'returns nil' do + expect(Datadog::Core::Crashtracking::TagBuilder).to receive(:call).with(settings) + .and_return(tags) + expect(Datadog::Core::Crashtracking::AgentBaseUrl).to receive(:resolve).with(agent_settings) + .and_return(agent_base_url) + expect(::Libdatadog).to receive(:ld_library_path) + .and_return(ld_library_path) + expect(::Libdatadog).to receive(:path_to_crashtracking_receiver_binary) + .and_return(path_to_crashtracking_receiver_binary) + expect(logger).to receive(:warn).with(/cannot enable crash tracking/) + + expect(described_class.build(settings, agent_settings, logger: logger)).to be_nil + end + end + + context 'when missing `ld_library_path`' do + let(:ld_library_path) { nil } + + it 'returns nil' do + expect(Datadog::Core::Crashtracking::TagBuilder).to receive(:call).with(settings) + .and_return(tags) + expect(Datadog::Core::Crashtracking::AgentBaseUrl).to receive(:resolve).with(agent_settings) + .and_return(agent_base_url) + expect(::Libdatadog).to receive(:ld_library_path) + .and_return(ld_library_path) + expect(::Libdatadog).to receive(:path_to_crashtracking_receiver_binary) + .and_return(path_to_crashtracking_receiver_binary) + expect(logger).to receive(:warn).with(/cannot enable crash tracking/) + + expect(described_class.build(settings, agent_settings, logger: logger)).to be_nil + end + end + + context 'when missing `path_to_crashtracking_receiver_binary`' do + let(:path_to_crashtracking_receiver_binary) { nil } + + it 'returns nil' do + expect(Datadog::Core::Crashtracking::TagBuilder).to receive(:call).with(settings) + .and_return(tags) + expect(Datadog::Core::Crashtracking::AgentBaseUrl).to receive(:resolve).with(agent_settings) + .and_return(agent_base_url) + expect(::Libdatadog).to receive(:ld_library_path) + .and_return(ld_library_path) + expect(::Libdatadog).to receive(:path_to_crashtracking_receiver_binary) + .and_return(path_to_crashtracking_receiver_binary) + expect(logger).to receive(:warn).with(/cannot enable crash tracking/) + + expect(described_class.build(settings, agent_settings, logger: logger)).to be_nil + end + end + end + + context 'instance methods' do + describe '#start' do + context 'when _native_start_or_update_on_fork raises an exception' do + it 'logs the exception' do + logger = Logger.new($stdout) + crashtracker = build_crashtracker(logger: logger) + + expect(described_class).to receive(:_native_start_or_update_on_fork) { raise 'Test failure' } + expect(logger).to receive(:error).with(/Failed to start crash tracking: Test failure/) + + crashtracker.start + end + end + end + + describe '#stop' do + context 'when _native_stop_crashtracker raises an exception' do + it 'logs the exception' do + logger = Logger.new($stdout) + crashtracker = build_crashtracker(logger: logger) + + expect(described_class).to receive(:_native_stop) { raise 'Test failure' } + expect(logger).to receive(:error).with(/Failed to stop crash tracking: Test failure/) + + crashtracker.stop + end + end + end + + describe '#update_on_fork' do + context 'when _native_stop_crashtracker raises an exception' do + it 'logs the exception' do + logger = Logger.new($stdout) + crashtracker = build_crashtracker(logger: logger) + + expect(described_class).to receive(:_native_start_or_update_on_fork) { raise 'Test failure' } + expect(logger).to receive(:error).with(/Failed to update_on_fork crash tracking: Test failure/) + + crashtracker.update_on_fork + end + end + + it 'update_on_fork the crash tracker' do + expect(described_class).to receive(:_native_start_or_update_on_fork).with( + hash_including(action: :update_on_fork) + ) + + crashtracker = build_crashtracker + + crashtracker.update_on_fork + end + end + + context 'integration testing' do + shared_context 'HTTP server' do + let(:server) do + WEBrick::HTTPServer.new( + Port: 0, + Logger: log, + AccessLog: access_log, + StartCallback: -> { init_signal.push(1) } + ) + end + let(:hostname) { '127.0.0.1' } + let(:log) { WEBrick::Log.new(StringIO.new, WEBrick::Log::WARN) } + let(:access_log_buffer) { StringIO.new } + let(:access_log) { [[access_log_buffer, WEBrick::AccessLog::COMBINED_LOG_FORMAT]] } + let(:server_proc) do + proc do |req, res| + messages << req.tap { req.body } # Read body, store message before socket closes. + res.body = '{}' + end + end + let(:init_signal) { Queue.new } + + let(:messages) { [] } + + before do + server.mount_proc('/', &server_proc) + @server_thread = Thread.new { server.start } + init_signal.pop + end + + after do + unless RSpec.current_example.skipped? + # When the test is skipped, server has not been initialized and @server_thread would be nil; thus we only + # want to touch them when the test actually run, otherwise we would cause the server to start (incorrectly) + # and join to be called on a nil @server_thread + server.shutdown + @server_thread.join + end + end + end + + include_context 'HTTP server' + + let(:request) { messages.first } + let(:port) { server[:Port] } + + let(:agent_base_url) { "http://#{hostname}:#{port}" } + + [:fiddle, :signal].each do |trigger| + it "reports crashes via http when app crashes with #{trigger}" do + fork_expectations = proc do |status:, stdout:, stderr:| + expect(Signal.signame(status.termsig)).to eq('SEGV').or eq('ABRT') + expect(stderr).to include('[BUG] Segmentation fault') + end + + expect_in_fork(fork_expectations: fork_expectations) do + crash_tracker = build_crashtracker(agent_base_url: agent_base_url) + crash_tracker.start + + if trigger == :fiddle + Fiddle.free(42) + else + Process.kill('SEGV', Process.pid) + end + end + + crash_report = JSON.parse(request.body, symbolize_names: true)[:payload].first + + expect(crash_report[:stack_trace]).to_not be_empty + expect(crash_report[:tags]).to include('signum:11', 'signame:SIGSEGV') + + crash_report_message = JSON.parse(crash_report[:message], symbolize_names: true) + + expect(crash_report_message[:metadata]).to include( + library_name: 'dd-trace-rb', + library_version: Datadog::VERSION::STRING, + family: 'ruby', + tags: ['tag1:value1', 'tag2:value2'], + ) + expect(crash_report_message[:files][:'/proc/self/maps']).to_not be_empty + expect(crash_report_message[:os_info]).to_not be_empty + end + end + + context 'via unix domain socket' do + let(:temporary_directory) { Dir.mktmpdir } + let(:socket_path) { "#{temporary_directory}/rspec_unix_domain_socket" } + let(:unix_domain_socket) { UNIXServer.new(socket_path) } # Closing the socket is handled by webrick + let(:server) do + server = WEBrick::HTTPServer.new( + DoNotListen: true, + Logger: log, + AccessLog: access_log, + StartCallback: -> { init_signal.push(1) } + ) + server.listeners << unix_domain_socket + server + end + let(:agent_base_url) { "unix://#{socket_path}" } + + after do + FileUtils.remove_entry(temporary_directory) + rescue Errno::ENOENT => _e + # Do nothing, it's ok + end + + it 'reports crashes via uds when app crashes with fiddle' do + fork_expectations = proc do |status:, stdout:, stderr:| + expect(Signal.signame(status.termsig)).to eq('SEGV').or eq('ABRT') + expect(stderr).to include('[BUG] Segmentation fault') + end + + expect_in_fork(fork_expectations: fork_expectations) do + crash_tracker = build_crashtracker(agent_base_url: agent_base_url) + crash_tracker.start + + Fiddle.free(42) + end + + crash_report = JSON.parse(request.body, symbolize_names: true)[:payload].first + + expect(crash_report[:stack_trace]).to_not be_empty + expect(crash_report[:tags]).to include('signum:11', 'signame:SIGSEGV') + + crash_report_message = JSON.parse(crash_report[:message], symbolize_names: true) + + expect(crash_report_message[:metadata]).to_not be_empty + expect(crash_report_message[:files][:'/proc/self/maps']).to_not be_empty + expect(crash_report_message[:os_info]).to_not be_empty + end + end + end + end + + def build_crashtracker(options = {}) + described_class.new( + agent_base_url: options[:agent_base_url] || 'http://localhost:6006', + tags: options[:tags] || { 'tag1' => 'value1', 'tag2' => 'value2' }, + path_to_crashtracking_receiver_binary: Libdatadog.path_to_crashtracking_receiver_binary, + ld_library_path: Libdatadog.ld_library_path, + logger: options[:logger] || Logger.new($stdout), + ) + end + + def tear_down! + described_class._native_stop + end +end diff --git a/spec/datadog/core/crashtracking/tag_builder_spec.rb b/spec/datadog/core/crashtracking/tag_builder_spec.rb new file mode 100644 index 00000000000..72885716c3a --- /dev/null +++ b/spec/datadog/core/crashtracking/tag_builder_spec.rb @@ -0,0 +1,112 @@ +require 'spec_helper' +require 'datadog/core/crashtracking/tag_builder' + +RSpec.describe Datadog::Core::Crashtracking::TagBuilder do + describe '.call' do + let(:settings) { Datadog::Core::Configuration::Settings.new } + + subject(:call) { described_class.call(settings) } + + it 'returns a hash with the tags to be attached to a crash report' do + expect(call).to include( + 'host' => Datadog::Core::Environment::Socket.hostname, + 'process_id' => Process.pid.to_s, + 'runtime_engine' => RUBY_ENGINE, + 'runtime-id' => Datadog::Core::Environment::Identity.id, + 'runtime_platform' => RUBY_PLATFORM, + 'runtime_version' => RUBY_VERSION, + 'is_crash' => 'true', + 'language' => 'ruby', + 'library_version' => Datadog::Core::Environment::Identity.gem_datadog_version, + ) + end + + describe 'unified service tagging' do + [:env, :service, :version].each do |tag| + context "when a #{tag} is defined" do + before do + settings.send("#{tag}=".to_sym, 'expected_value') + end + + it 'includes it as a tag' do + expect(call).to include(tag.to_s => 'expected_value') + end + end + + context "when #{tag} is nil" do + before do + settings.send("#{tag}=".to_sym, nil) + end + + it do + expect(call.keys).to_not include(tag.to_s) + end + end + end + end + + it 'includes the provided user tags' do + settings.tags = { 'foo' => 'bar' } + + expect(call).to include('foo' => 'bar') + end + + context 'when there is a conflict between user and metadata tags' do + it 'overrides the user-provided tags' do + settings.tags = { 'foo' => 'bar', 'version' => '1.0.0' } + settings.version = '2.0.0' + + expect(call).to include('foo' => 'bar', 'version' => '2.0.0') + end + end + + context 'when user tag keys and values are not strings' do + it 'encodes them as strings' do + settings.tags = { :symbol_key => :symbol_value, nil => 'nil key', 'nil value' => nil, 12 => 34 } + + expect(call).to include('symbol_key' => 'symbol_value', '' => 'nil key', 'nil value' => '', '12' => '34') + end + end + + context 'when tagging key or value is not utf-8' do + it 'converts them to utf-8' do + settings.tags = { 'ascii-key'.encode(Encoding::ASCII) => 'ascii-value'.encode(Encoding::ASCII) } + + result = call + + result.each do |key, value| + expect([key, value]).to all(have_attributes(encoding: Encoding::UTF_8)) + end + expect(result).to include('ascii-key' => 'ascii-value') + end + end + + describe 'source code integration' do + context 'when git environment is available' do + before do + allow(Datadog::Core::Environment::Git).to receive(:git_repository_url).and_return( + 'git_repository_url' + ) + allow(Datadog::Core::Environment::Git).to receive(:git_commit_sha).and_return('git_commit_sha') + end + + it 'includes the git repository URL and commit SHA' do + expect(call).to include( + 'git.repository_url' => 'git_repository_url', 'git.commit.sha' => 'git_commit_sha' + ) + end + end + + context 'when git environment is not available' do + before do + allow(Datadog::Core::Environment::Git).to receive(:git_repository_url).and_return(nil) + allow(Datadog::Core::Environment::Git).to receive(:git_commit_sha).and_return(nil) + end + + it 'includes the git repository URL and commit SHA' do + expect(call).to_not include('git.repository_url', 'git.commit.sha') + end + end + end + end +end diff --git a/spec/datadog/core/diagnostics/environment_logger_spec.rb b/spec/datadog/core/diagnostics/environment_logger_spec.rb index 6cf98a298f4..016e7b01de4 100644 --- a/spec/datadog/core/diagnostics/environment_logger_spec.rb +++ b/spec/datadog/core/diagnostics/environment_logger_spec.rb @@ -18,6 +18,8 @@ end describe '#collect_and_log!' do + include_context 'non-development execution environment' + subject(:collect_and_log!) { env_logger.collect_and_log! } let(:logger) { instance_double(Datadog::Core::Logger) } @@ -40,7 +42,6 @@ end before do - allow(env_logger).to receive(:rspec?).and_return(false) # Allow rspec to log for testing purposes allow(Datadog).to receive(:logger).and_return(logger) allow(logger).to receive(:debug?).and_return(true) allow(logger).to receive(:debug) @@ -56,22 +57,10 @@ end end - context 'under a REPL' do - around do |example| - begin - original = $PROGRAM_NAME - $0 = 'irb' - example.run - ensure - $0 = original - end - end + context 'in a development execution environment' do + before { allow(Datadog::Core::Environment::Execution).to receive(:development?).and_return(true) } context 'with default settings' do - before do - allow(env_logger).to receive(:rspec?).and_return(true) # Prevent rspec from logging - end - it { expect(logger).to_not have_received(:info) } end diff --git a/spec/datadog/core/environment/execution_spec.rb b/spec/datadog/core/environment/execution_spec.rb index 19699850c27..0324384c511 100644 --- a/spec/datadog/core/environment/execution_spec.rb +++ b/spec/datadog/core/environment/execution_spec.rb @@ -58,10 +58,10 @@ context 'when in an IRB session' do it 'returns true' do - _, err = Bundler.with_clean_env do # Ruby 2.6 does not have irb by default in a bundle, but has it outside of it. - Open3.capture3('irb', '--noprompt', '--noverbose', stdin_data: repl_script) + _, err, = Bundler.with_clean_env do # Ruby 2.6 does not have irb by default in a bundle, but has it outside of it. + Open3.capture3('irb', '--noprompt', '--noverbose', '--noecho', stdin_data: repl_script) end - expect(err).to end_with('true') + expect(err).to end_with('ACTUAL:true') end end @@ -71,8 +71,8 @@ f.write(repl_script) f.close - out, = Open3.capture2e('pry', '-f', '--noprompt', f.path) - expect(out).to eq('ACTUAL:true') + _, err, = Open3.capture3('pry', '-f', '--noprompt', f.path) + expect(err).to end_with('ACTUAL:true') end end end @@ -129,7 +129,7 @@ def test_it_does_something_useful it 'returns true' do _, err, = Open3.capture3('ruby', stdin_data: script) - expect(err).to end_with('true') + expect(err).to end_with('ACTUAL:true') end end @@ -187,9 +187,10 @@ def test_it_does_something_useful # Add our script to `env.rb`, which is always run before any feature is executed. File.write('features/support/env.rb', repl_script) - _, err = Bundler.with_clean_env do + _, err, = Bundler.with_clean_env do Open3.capture3('ruby', stdin_data: script) end + expect(err).to include('ACTUAL:true') end end @@ -253,7 +254,7 @@ def test_it_does_something_useful context 'when given WebMock', skip: Gem::Version.new(Bundler::VERSION) < Gem::Version.new('2') do it do - out, err = Bundler.with_clean_env do + out, = Bundler.with_clean_env do Open3.capture3('ruby', stdin_data: <<-RUBY require 'bundler/inline' @@ -269,13 +270,12 @@ def test_it_does_something_useful $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'datadog/core/environment/execution' - STDOUT.print Datadog::Core::Environment::Execution.webmock_enabled? + STDOUT.print "ACTUAL:\#{Datadog::Core::Environment::Execution.webmock_enabled?}" RUBY ) end - expect(err).to be_empty - expect(out).to eq('true') + expect(out).to end_with('ACTUAL:true') end end end diff --git a/spec/datadog/core/metrics/client_spec.rb b/spec/datadog/core/metrics/client_spec.rb index 5f6fb218b2c..91af802a322 100644 --- a/spec/datadog/core/metrics/client_spec.rb +++ b/spec/datadog/core/metrics/client_spec.rb @@ -13,9 +13,16 @@ it { is_expected.to have_attributes(statsd: statsd) } - shared_examples_for 'missing value arg' do - it 'logs an error without raising' do - expect(Datadog.logger).to receive(:error) + shared_examples_for 'logs an error without raising' do |action| + it do + expect(Datadog.logger).to receive(:error).with( + /Failed to send #{action} stat/ + ) + expect(Datadog::Core::Telemetry::Logger).to receive(:report).with( + a_kind_of(StandardError), + description: "Failed to send #{action} stat" + ) + expect { subject }.to_not raise_error end end @@ -383,7 +390,7 @@ context 'that does not yield args' do subject(:count) { metrics.count(stat) {} } - it_behaves_like 'missing value arg' + it_behaves_like 'logs an error without raising', 'count' end context 'that yields args' do @@ -433,12 +440,9 @@ end context 'which raises an error' do - before do - expect(statsd).to receive(:count).and_raise(StandardError) - expect(Datadog.logger).to receive(:error) - end + before { allow(statsd).to receive(:count).and_raise(StandardError) } - it { expect { count }.to_not raise_error } + it_behaves_like 'logs an error without raising', 'count' end end end @@ -464,7 +468,7 @@ context 'that does not yield args' do subject(:distribution) { metrics.distribution(stat) {} } - it_behaves_like 'missing value arg' + it_behaves_like 'logs an error without raising', 'distribution' end context 'that yields args' do @@ -514,12 +518,9 @@ end context 'which raises an error' do - before do - expect(statsd).to receive(:distribution).and_raise(StandardError) - expect(Datadog.logger).to receive(:error) - end + before { allow(statsd).to receive(:distribution).and_raise(StandardError) } - it { expect { distribution }.to_not raise_error } + it_behaves_like 'logs an error without raising', 'distribution' end end end @@ -545,7 +546,7 @@ context 'that does not yield args' do subject(:gauge) { metrics.gauge(stat) {} } - it_behaves_like 'missing value arg' + it_behaves_like 'logs an error without raising', 'gauge' end context 'that yields args' do @@ -595,12 +596,9 @@ end context 'which raises an error' do - before do - expect(statsd).to receive(:gauge).and_raise(StandardError) - expect(Datadog.logger).to receive(:error) - end + before { allow(statsd).to receive(:gauge).and_raise(StandardError) } - it { expect { gauge }.to_not raise_error } + it_behaves_like 'logs an error without raising', 'gauge' end end end @@ -622,6 +620,12 @@ context 'when #statsd is a Datadog::Statsd' do context 'and given a block' do + context 'when raise exception' do + subject(:increment) { metrics.increment(stat) { raise } } + + it_behaves_like 'logs an error without raising', 'increment' + end + context 'that yields args' do subject(:increment) { metrics.increment(stat) { stat_options } } @@ -676,12 +680,9 @@ end context 'which raises an error' do - before do - expect(statsd).to receive(:increment).and_raise(StandardError) - expect(Datadog.logger).to receive(:error) - end + before { allow(statsd).to receive(:increment).and_raise(StandardError) } - it { expect { increment }.to_not raise_error } + it_behaves_like 'logs an error without raising', 'increment' end end end @@ -711,7 +712,10 @@ let(:error) { RuntimeError.new } # Expect the given block to raise its errors through - it { expect { time }.to raise_error(error) } + it do + expect(Datadog.logger).not_to receive(:error) + expect { time }.to raise_error(error) + end end end diff --git a/spec/datadog/tracing/sampling/rate_limiter_spec.rb b/spec/datadog/core/rate_limiter_spec.rb similarity index 89% rename from spec/datadog/tracing/sampling/rate_limiter_spec.rb rename to spec/datadog/core/rate_limiter_spec.rb index bff9f01d4c1..6567e1760de 100644 --- a/spec/datadog/tracing/sampling/rate_limiter_spec.rb +++ b/spec/datadog/core/rate_limiter_spec.rb @@ -1,8 +1,8 @@ require 'spec_helper' -require 'datadog/tracing/sampling/rate_limiter' +require 'datadog/core/rate_limiter' -RSpec.describe Datadog::Tracing::Sampling::TokenBucket do +RSpec.describe Datadog::Core::TokenBucket do subject(:bucket) { described_class.new(rate, max_tokens) } let(:rate) { 1 } @@ -102,6 +102,28 @@ end end + context 'when size is not given' do + subject(:allow?) { bucket.allow? } + + context 'when tokens are available' do + it 'returns true' do + is_expected.to be true + end + end + + context 'when tokens are not available' do + let(:max_tokens) { 1 } + + before do + bucket.allow? + end + + it 'returns false' do + is_expected.to be false + end + end + end + context 'with negative rate' do let(:rate) { -1 } diff --git a/spec/datadog/core/remote/client/capabilities_spec.rb b/spec/datadog/core/remote/client/capabilities_spec.rb index 75a7e26bc0e..143848015ea 100644 --- a/spec/datadog/core/remote/client/capabilities_spec.rb +++ b/spec/datadog/core/remote/client/capabilities_spec.rb @@ -5,10 +5,11 @@ require 'datadog/appsec/configuration' RSpec.describe Datadog::Core::Remote::Client::Capabilities do - subject(:capabilities) { described_class.new(settings) } + subject(:capabilities) { described_class.new(settings, telemetry) } let(:settings) do double(Datadog::Core::Configuration) end + let(:telemetry) { instance_double(Datadog::Core::Telemetry::Component) } before do capabilities @@ -34,7 +35,7 @@ describe '#base64_capabilities' do it 'matches tracing capabilities only' do - expect(capabilities.base64_capabilities).to eq('IAAAAA==') + expect(capabilities.base64_capabilities).to eq('IABwAA==') end end end @@ -52,7 +53,7 @@ describe '#base64_capabilities' do it 'matches tracing capabilities only' do - expect(capabilities.base64_capabilities).to eq('IAAAAA==') + expect(capabilities.base64_capabilities).to eq('IABwAA==') end end end @@ -84,7 +85,7 @@ context 'Tracing component' do it 'register capabilities, products, and receivers' do - expect(capabilities.capabilities).to eq([1 << 29]) + expect(capabilities.capabilities).to contain_exactly(1 << 12, 1 << 13, 1 << 14, 1 << 29) expect(capabilities.products).to include('APM_TRACING') expect(capabilities.receivers).to include( lambda { |r| diff --git a/spec/datadog/core/remote/client_spec.rb b/spec/datadog/core/remote/client_spec.rb index d74ebd6c6b1..288b27eaa80 100644 --- a/spec/datadog/core/remote/client_spec.rb +++ b/spec/datadog/core/remote/client_spec.rb @@ -239,7 +239,10 @@ let(:repository) { Datadog::Core::Remote::Configuration::Repository.new } let(:capabilities) do - capabilities = Datadog::Core::Remote::Client::Capabilities.new(Datadog::Core::Configuration::Settings.new) + capabilities = Datadog::Core::Remote::Client::Capabilities.new( + Datadog::Core::Configuration::Settings.new, + instance_double(Datadog::Core::Telemetry::Component) + ) capabilities.send(:register_products, ['ASM_DATA', 'ASM_DD', 'ASM']) capabilities diff --git a/spec/datadog/core/remote/component_spec.rb b/spec/datadog/core/remote/component_spec.rb index 7e02c0c9a3a..b579a97bdac 100644 --- a/spec/datadog/core/remote/component_spec.rb +++ b/spec/datadog/core/remote/component_spec.rb @@ -6,7 +6,8 @@ RSpec.describe Datadog::Core::Remote::Component, :integration do let(:settings) { Datadog::Core::Configuration::Settings.new } let(:agent_settings) { Datadog::Core::Configuration::AgentSettingsResolver.call(settings, logger: nil) } - let(:capabilities) { Datadog::Core::Remote::Client::Capabilities.new(settings) } + let(:telemetry) { instance_double(Datadog::Core::Telemetry::Component) } + let(:capabilities) { Datadog::Core::Remote::Client::Capabilities.new(settings, telemetry) } let(:component) { described_class.new(settings, capabilities, agent_settings) } around do |example| @@ -14,7 +15,7 @@ end describe '.build' do - subject(:build) { described_class.build(settings, agent_settings) } + subject(:build) { described_class.build(settings, agent_settings, telemetry: telemetry) } after { build.shutdown! if build } @@ -37,7 +38,10 @@ let(:component) { double('component', shutdown!: nil) } it 'initializes component' do - expect(Datadog::Core::Remote::Client::Capabilities).to receive(:new).with(settings).and_return(capabilities) + expect(Datadog::Core::Remote::Client::Capabilities).to receive(:new).with( + settings, + telemetry + ).and_return(capabilities) expect(described_class).to receive(:new).with(settings, capabilities, agent_settings).and_return(component) is_expected.to eq(component) diff --git a/spec/datadog/core/remote/negotiation_spec.rb b/spec/datadog/core/remote/negotiation_spec.rb index e34a0af2d59..71770a6ce51 100644 --- a/spec/datadog/core/remote/negotiation_spec.rb +++ b/spec/datadog/core/remote/negotiation_spec.rb @@ -50,13 +50,13 @@ end it do - expect(Datadog.logger).to_not receive(:error) + expect(Datadog.logger).to_not receive(:warn) expect(endpoint?).to be true end it do - expect(Datadog.logger).to receive(:error).and_return(nil) + expect(Datadog.logger).to receive(:warn) expect(negotiation.endpoint?('/bar')).to be false end @@ -65,7 +65,7 @@ let(:suppress_logging) { { no_config_endpoint: true } } it 'does not log an error' do - expect(Datadog.logger).to_not receive(:error) + expect(Datadog.logger).to_not receive(:warn) expect(negotiation.endpoint?('/bar')).to be false end @@ -77,7 +77,7 @@ let(:response_body) { '404 page not found' } before do - expect(Datadog.logger).to receive(:error).and_return(nil) + expect(Datadog.logger).to receive(:warn) end it { expect(endpoint?).to be false } @@ -95,7 +95,7 @@ let(:response_body) { '400 bad request' } before do - expect(Datadog.logger).to receive(:error).and_return(nil) + expect(Datadog.logger).to receive(:warn) end it { expect(endpoint?).to be false } @@ -113,7 +113,7 @@ let(:response_body) { '500 internal server error' } before do - expect(Datadog.logger).to receive(:error).and_return(nil) + expect(Datadog.logger).to receive(:warn) end it { expect(endpoint?).to be false } @@ -133,7 +133,7 @@ end before do - expect(Datadog.logger).to receive(:error).and_return(nil) + expect(Datadog.logger).to receive(:warn) end it { expect(endpoint?).to be false } @@ -150,7 +150,7 @@ let(:request_exception) { Errno::ECONNREFUSED.new } before do - expect(Datadog.logger).to receive(:error).and_return(nil) + expect(Datadog.logger).to receive(:warn) end it { expect(endpoint?).to be false } diff --git a/spec/datadog/core/remote/transport/http_spec.rb b/spec/datadog/core/remote/transport/http_spec.rb index e9b1656802f..bad8a785464 100644 --- a/spec/datadog/core/remote/transport/http_spec.rb +++ b/spec/datadog/core/remote/transport/http_spec.rb @@ -70,6 +70,14 @@ it { is_expected.to have_attributes(:version => '42') } it { is_expected.to have_attributes(:endpoints => ['/info', '/v0/path']) } it { is_expected.to have_attributes(:config => { max_request_bytes: '1234' }) } + + it { expect(transport.client.api.headers).to_not include('Datadog-Client-Computed-Stats') } + + context 'with ASM standalone enabled' do + before { expect(Datadog.configuration.appsec.standalone).to receive(:enabled).and_return(true) } + + it { expect(transport.client.api.headers['Datadog-Client-Computed-Stats']).to eq('yes') } + end end end @@ -202,6 +210,14 @@ it { is_expected.to have_attributes(:targets => be_a(Hash)) } it { is_expected.to have_attributes(:target_files => be_a(Array)) } + it { expect(transport.client.api.headers).to_not include('Datadog-Client-Computed-Stats') } + + context 'with ASM standalone enabled' do + before { expect(Datadog.configuration.appsec.standalone).to receive(:enabled).and_return(true) } + + it { expect(transport.client.api.headers['Datadog-Client-Computed-Stats']).to eq('yes') } + end + context 'with a network error' do it 'raises a transport error' do expect(http_connection).to receive(:request).and_raise(IOError) diff --git a/spec/datadog/core/remote/transport/integration_spec.rb b/spec/datadog/core/remote/transport/integration_spec.rb index a68589d6b9a..6f24ca1f6b5 100644 --- a/spec/datadog/core/remote/transport/integration_spec.rb +++ b/spec/datadog/core/remote/transport/integration_spec.rb @@ -8,7 +8,7 @@ require 'datadog/core/remote/transport/negotiation' RSpec.describe Datadog::Core::Remote::Transport::HTTP do - before { skip unless ENV['TEST_DATADOG_INTEGRATION'] } + skip_unless_integration_testing_enabled describe '.root' do subject(:transport) { described_class.root(&client_options) } diff --git a/spec/datadog/core/remote/worker_spec.rb b/spec/datadog/core/remote/worker_spec.rb index 20cf0f087cd..b2a58152078 100644 --- a/spec/datadog/core/remote/worker_spec.rb +++ b/spec/datadog/core/remote/worker_spec.rb @@ -49,16 +49,10 @@ end end - context 'on Ruby >= 2.3' do - before do - skip 'Not supported on old Rubies' if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3') - end - - it 'names the worker thread' do - worker.start + it 'names the worker thread' do + worker.start - expect(Thread.list.map(&:name)).to include(described_class.to_s) - end + expect(Thread.list.map(&:name)).to include(described_class.to_s) end # See https://github.com/puma/puma/blob/32e011ab9e029c757823efb068358ed255fb7ef4/lib/puma/cluster.rb#L353-L359 diff --git a/spec/datadog/core/runtime/metrics_spec.rb b/spec/datadog/core/runtime/metrics_spec.rb index 13488814f9b..b7d2d957b40 100644 --- a/spec/datadog/core/runtime/metrics_spec.rb +++ b/spec/datadog/core/runtime/metrics_spec.rb @@ -98,7 +98,7 @@ end context 'when an error is thrown' do - before { allow(Datadog.logger).to receive(:error) } + before { allow(Datadog.logger).to receive(:warn) } it do allow(metric).to receive(:available?) @@ -106,7 +106,7 @@ flush - expect(Datadog.logger).to have_received(:error) + expect(Datadog.logger).to have_received(:warn) .with(/Error while sending runtime metric./) .at_least(:once) end @@ -198,11 +198,9 @@ skip('Test only runs on Ruby >= 3.2') if RUBY_VERSION < '3.2.' end - context 'with YJIT enabled and RubyVM::YJIT.stats_enabled? false' do + context 'with YJIT enabled' do before do - unless Datadog::Core::Environment::YJIT.available? - skip('Test only runs with YJIT enabled and RubyVM::YJIT.stats_enabled? false') - end + skip('Test only runs with YJIT enabled') unless Datadog::Core::Environment::YJIT.available? allow(runtime_metrics).to receive(:gauge) end @@ -248,6 +246,24 @@ end end end + + context 'with YJIT enabled and RubyVM::YJIT.stats_enabled? true' do + before do + skip('Test only runs on Ruby >= 3.3') if RUBY_VERSION < '3.3.' + unless Datadog::Core::Environment::YJIT.available? && ::RubyVM::YJIT.stats_enabled? + skip('Test only runs with YJIT enabled and RubyVM::YJIT.stats_enabled? true') + end + allow(runtime_metrics).to receive(:gauge) + end + + it do + flush + + expect(runtime_metrics).to have_received(:gauge) + .with(Datadog::Core::Runtime::Ext::Metrics::METRIC_YJIT_RATIO_IN_YJIT, kind_of(Numeric)) + .once + end + end end end diff --git a/spec/datadog/core/telemetry/component_spec.rb b/spec/datadog/core/telemetry/component_spec.rb index 8cc9d0c0b02..f5c2852a268 100644 --- a/spec/datadog/core/telemetry/component_spec.rb +++ b/spec/datadog/core/telemetry/component_spec.rb @@ -6,10 +6,12 @@ subject(:telemetry) do described_class.new( enabled: enabled, + http_transport: http_transport, metrics_enabled: metrics_enabled, heartbeat_interval_seconds: heartbeat_interval_seconds, metrics_aggregation_interval_seconds: metrics_aggregation_interval_seconds, - dependency_collection: dependency_collection + dependency_collection: dependency_collection, + shutdown_timeout_seconds: shutdown_timeout_seconds ) end @@ -17,8 +19,10 @@ let(:metrics_enabled) { true } let(:heartbeat_interval_seconds) { 0 } let(:metrics_aggregation_interval_seconds) { 1 } + let(:shutdown_timeout_seconds) { 1 } let(:dependency_collection) { true } let(:worker) { double(Datadog::Core::Telemetry::Worker) } + let(:http_transport) { double(Datadog::Core::Telemetry::Http::Transport) } let(:not_found) { false } before do @@ -28,7 +32,8 @@ dependency_collection: dependency_collection, enabled: enabled, emitter: an_instance_of(Datadog::Core::Telemetry::Emitter), - metrics_manager: anything + metrics_manager: anything, + shutdown_timeout: shutdown_timeout_seconds ).and_return(worker) allow(worker).to receive(:start) @@ -45,9 +50,11 @@ context 'with default parameters' do subject(:telemetry) do described_class.new( + http_transport: http_transport, heartbeat_interval_seconds: heartbeat_interval_seconds, metrics_aggregation_interval_seconds: metrics_aggregation_interval_seconds, - dependency_collection: dependency_collection + dependency_collection: dependency_collection, + shutdown_timeout_seconds: shutdown_timeout_seconds ) end @@ -212,6 +219,63 @@ end end + describe 'includes Datadog::Core::Telemetry::Logging' do + after do + telemetry.stop! + end + + it { is_expected.to a_kind_of(Datadog::Core::Telemetry::Logging) } + end + + describe '#log!' do + after do + telemetry.stop! + end + + describe 'when enabled' do + let(:enabled) { true } + it do + event = instance_double(Datadog::Core::Telemetry::Event::Log) + telemetry.log!(event) + + expect(worker).to have_received(:enqueue).with(event) + end + + context 'when in fork', skip: !Process.respond_to?(:fork) do + it do + expect_in_fork do + event = instance_double(Datadog::Core::Telemetry::Event::Log) + telemetry.log!(event) + + expect(worker).to have_received(:enqueue).with(event) + end + end + end + end + + describe 'when disabled' do + let(:enabled) { false } + + it do + event = instance_double(Datadog::Core::Telemetry::Event::Log) + telemetry.log!(event) + + expect(worker).not_to have_received(:enqueue) + end + + context 'when in fork', skip: !Process.respond_to?(:fork) do + it do + expect_in_fork do + event = instance_double(Datadog::Core::Telemetry::Event::Log) + telemetry.log!(event) + + expect(worker).not_to have_received(:enqueue) + end + end + end + end + end + context 'metrics support' do let(:metrics_manager) { spy(:metrics_manager) } let(:namespace) { double('namespace') } diff --git a/spec/datadog/core/telemetry/emitter_spec.rb b/spec/datadog/core/telemetry/emitter_spec.rb index e7373a5874f..661e17edfe0 100644 --- a/spec/datadog/core/telemetry/emitter_spec.rb +++ b/spec/datadog/core/telemetry/emitter_spec.rb @@ -18,16 +18,8 @@ end describe '#initialize' do - context 'when no params provided' do - subject(:emitter) { described_class.new } - it { is_expected.to be_a_kind_of(described_class) } - end - - context 'when :http_transport is provided' do - let(:http_transport) { double(Datadog::Core::Telemetry::Http::Transport) } - it { is_expected.to be_a_kind_of(described_class) } - it { expect(emitter.http_transport).to be(http_transport) } - end + it { is_expected.to be_a_kind_of(described_class) } + it { expect(emitter.http_transport).to be(http_transport) } it 'seq_id begins with 1' do original_seq_id = emitter.class.sequence.instance_variable_get(:@current) diff --git a/spec/datadog/core/telemetry/event_spec.rb b/spec/datadog/core/telemetry/event_spec.rb index b8eee1f48d8..bbb5c1051bc 100644 --- a/spec/datadog/core/telemetry/event_spec.rb +++ b/spec/datadog/core/telemetry/event_spec.rb @@ -42,10 +42,7 @@ def contain_configuration(*array) appsec: { enabled: false, }, - profiler: { - enabled: false, - error: anything, - }, + profiler: hash_including(enabled: false), }, configuration: contain_configuration( ['DD_AGENT_HOST', '1.2.3.4'], @@ -216,6 +213,40 @@ def contain_configuration(*array) end end + context 'Logs' do + it do + event = Datadog::Core::Telemetry::Event::Log.new(message: 'Hi', level: :error) + expect(event.type).to eq('logs') + expect(event.payload).to eq( + { + logs: [{ + message: 'Hi', + level: 'ERROR' + }] + } + ) + end + + it do + event = Datadog::Core::Telemetry::Event::Log.new(message: 'Hi', level: :warn) + expect(event.type).to eq('logs') + expect(event.payload).to eq( + { + logs: [{ + message: 'Hi', + level: 'WARN' + }] + } + ) + end + + it do + expect do + Datadog::Core::Telemetry::Event::Log.new(message: 'Hi', level: :unknown) + end.to raise_error(ArgumentError, /Invalid log level/) + end + end + context 'GenerateMetrics' do let(:event) { described_class::GenerateMetrics.new(namespace, metrics) } diff --git a/spec/datadog/core/telemetry/http/transport_spec.rb b/spec/datadog/core/telemetry/http/transport_spec.rb index 6cc72c9c46e..ce27a8c92d8 100644 --- a/spec/datadog/core/telemetry/http/transport_spec.rb +++ b/spec/datadog/core/telemetry/http/transport_spec.rb @@ -4,12 +4,13 @@ require 'datadog/core/telemetry/http/adapters/net' RSpec.describe Datadog::Core::Telemetry::Http::Transport do - subject(:transport) { described_class.new } + subject(:transport) { described_class.build_agent_transport(agent_settings) } + let(:agent_settings) { Datadog::Core::Configuration::AgentSettingsResolver.call(Datadog.configuration) } let(:hostname) { 'foo' } let(:port) { 1234 } - describe '#initialize' do + describe '.build_agent_transport' do before do Datadog.configuration.agent.host = hostname Datadog.configuration.agent.port = port @@ -18,6 +19,39 @@ it { expect(transport.port).to eq(port) } it { expect(transport.ssl).to eq(false) } it { expect(transport.path).to eq(Datadog::Core::Telemetry::Http::Ext::AGENT_ENDPOINT) } + it { expect(transport.api_key).to be_nil } + end + + describe '.build_agentless_transport' do + subject(:transport) do + described_class.build_agentless_transport(api_key: api_key, dd_site: dd_site, url_override: url_override) + end + + let(:api_key) { 'dd_api_key' } + let(:dd_site) { 'datadoghq.com' } + let(:url_override) { nil } + + it { expect(transport.host).to eq('instrumentation-telemetry-intake.datadoghq.com') } + it { expect(transport.port).to eq(443) } + it { expect(transport.ssl).to eq(true) } + it { expect(transport.path).to eq(Datadog::Core::Telemetry::Http::Ext::AGENTLESS_ENDPOINT) } + it { expect(transport.api_key).to eq(api_key) } + + context 'when dd_site is eu' do + let(:dd_site) { 'datadoghq.eu' } + + it { expect(transport.host).to eq('instrumentation-telemetry-intake.datadoghq.eu') } + end + + context 'when url_override is provided' do + let(:url_override) { 'http://localhost:1234' } + + it { expect(transport.host).to eq('localhost') } + it { expect(transport.port).to eq(1234) } + it { expect(transport.ssl).to eq(false) } + it { expect(transport.path).to eq(Datadog::Core::Telemetry::Http::Ext::AGENTLESS_ENDPOINT) } + it { expect(transport.api_key).to eq(api_key) } + end end describe '#request' do @@ -62,5 +96,29 @@ end it { is_expected.to be(response) } + + context 'expect api key in headers when provided' do + let(:transport) { described_class.build_agentless_transport(api_key: api_key, dd_site: dd_site) } + + let(:api_key) { 'dd_api_key' } + let(:dd_site) { 'datadoghq.com' } + let(:hostname) { 'instrumentation-telemetry-intake.datadoghq.com' } + let(:ssl) { true } + let(:port) { 443 } + let(:path) { Datadog::Core::Telemetry::Http::Ext::AGENTLESS_ENDPOINT } + let(:headers) do + { + 'Content-Type' => 'application/json', + 'DD-Telemetry-API-Version' => 'v2', + 'DD-Telemetry-Request-Type' => 'app-started', + 'DD-Internal-Untraced-Request' => '1', + 'DD-Client-Library-Language' => 'ruby', + 'DD-Client-Library-Version' => Datadog::Core::Environment::Identity.gem_datadog_version_semver2, + 'DD-API-KEY' => api_key + } + end + + it { is_expected.to be(response) } + end end end diff --git a/spec/datadog/core/telemetry/logger_spec.rb b/spec/datadog/core/telemetry/logger_spec.rb new file mode 100644 index 00000000000..d4361fa7989 --- /dev/null +++ b/spec/datadog/core/telemetry/logger_spec.rb @@ -0,0 +1,69 @@ +require 'spec_helper' + +require 'datadog/core/telemetry/logger' + +RSpec.describe Datadog::Core::Telemetry::Logger do + describe '.report' do + context 'when there is a telemetry component configured' do + it do + exception = StandardError.new + telemetry = instance_double(Datadog::Core::Telemetry::Component) + allow(Datadog.send(:components)).to receive(:telemetry).and_return(telemetry) + expect(telemetry).to receive(:report).with(exception, level: :error, description: 'Oops...') + expect(Datadog.logger).not_to receive(:warn) + + expect do + described_class.report(exception, level: :error, description: 'Oops...') + end.not_to raise_error + end + + context 'when only given an exception' do + it do + exception = StandardError.new + telemetry = instance_double(Datadog::Core::Telemetry::Component) + allow(Datadog.send(:components)).to receive(:telemetry).and_return(telemetry) + expect(telemetry).to receive(:report).with(exception, level: :error, description: nil) + expect(Datadog.logger).not_to receive(:warn) + + expect do + described_class.report(exception) + end.not_to raise_error + end + end + end + + context 'when there is no telemetry component configured' do + it do + exception = StandardError.new + allow(Datadog.send(:components)).to receive(:telemetry).and_return(nil) + expect(Datadog.logger).to receive(:warn).with(/Failed to send telemetry/) + + expect do + described_class.report(exception, level: :error, description: 'Oops...') + end.not_to raise_error + end + end + end + + describe '.error' do + context 'when there is a telemetry component configured' do + it do + telemetry = instance_double(Datadog::Core::Telemetry::Component) + allow(Datadog.send(:components)).to receive(:telemetry).and_return(telemetry) + expect(telemetry).to receive(:error).with('description') + expect(Datadog.logger).not_to receive(:warn) + + expect { described_class.error('description') }.not_to raise_error + end + end + + context 'when there is no telemetry component configured' do + it do + allow(Datadog.send(:components)).to receive(:telemetry).and_return(nil) + expect(Datadog.logger).to receive(:warn).with(/Failed to send telemetry/) + + expect { described_class.error('description') }.not_to raise_error + end + end + end +end diff --git a/spec/datadog/core/telemetry/logging_spec.rb b/spec/datadog/core/telemetry/logging_spec.rb new file mode 100644 index 00000000000..01fdcc89b3a --- /dev/null +++ b/spec/datadog/core/telemetry/logging_spec.rb @@ -0,0 +1,127 @@ +require 'spec_helper' + +require 'datadog/core/telemetry/logging' + +RSpec.describe Datadog::Core::Telemetry::Logging do + let(:dummy_class) do + Class.new do + include Datadog::Core::Telemetry::Logging + def log!(_event) + :logs! + end + end + end + + let(:component) { dummy_class.new } + + describe '.report' do + context 'with named exception' do + it 'sends a log event to via telemetry' do + expect(component).to receive(:log!).with(instance_of(Datadog::Core::Telemetry::Event::Log)) do |event| + expect(event.payload).to include( + logs: [{ message: 'RuntimeError', level: 'ERROR', + stack_trace: a_string_including('REDACTED') }] + ) + expect(event.payload).to include( + logs: [{ message: 'RuntimeError', level: 'ERROR', + stack_trace: a_string_including(',/spec/') }] + ) + end + + begin + raise 'Invalid token: p@ssw0rd' + rescue StandardError => e + component.report(e, level: :error) + end + end + + context 'with description' do + it 'sends a log event to via telemetry' do + expect(component).to receive(:log!).with(instance_of(Datadog::Core::Telemetry::Event::Log)) do |event| + expect(event.payload).to include( + logs: [{ message: 'RuntimeError:Must not contain PII', level: 'ERROR', + stack_trace: a_string_including('REDACTED') }] + ) + expect(event.payload).to include( + logs: [{ message: 'RuntimeError:Must not contain PII', level: 'ERROR', + stack_trace: a_string_including(',/spec/') }] + ) + end + + begin + raise 'Invalid token: p@ssw0rd' + rescue StandardError => e + component.report(e, level: :error, description: 'Must not contain PII') + end + end + end + end + + context 'with anonymous exception' do + it 'sends a log event to via telemetry' do + expect(component).to receive(:log!).with(instance_of(Datadog::Core::Telemetry::Event::Log)) do |event| + expect(event.payload).to include( + logs: [{ message: /# e + component.report(e, level: :error) + end + end + end + end + + describe '.error' do + context 'with description' do + it 'sends a log event to via telemetry' do + expect(component).to receive(:log!).with(instance_of(Datadog::Core::Telemetry::Event::Log)) do |event| + expect(event.payload).to include(logs: [{ message: 'Must not contain PII', level: 'ERROR' }]) + end + + component.error('Must not contain PII') + end + end + end +end + +RSpec.describe Datadog::Core::Telemetry::Logging::DatadogStackTrace do + describe '.from' do + it do + exception = StandardError.new('Yo!') + + result = described_class.from(exception) + + expect(result).to be_nil + end + + it do + exception = StandardError.new('Yo!') + exception.set_backtrace([]) + + result = described_class.from(exception) + + expect(result).to be_nil + end + + it 'returns redacted stack trace' do + begin + raise 'Invalid token: p@ssw0rd' + rescue StandardError => e + result = described_class.from(e) + end + + expect(result).to start_with('/spec/datadog/core/telemetry/logging_spec.rb') + expect(result).to end_with('REDACTED') + end + end +end diff --git a/spec/datadog/core/telemetry/request_spec.rb b/spec/datadog/core/telemetry/request_spec.rb index d5021bcd0c7..3da9dacce31 100644 --- a/spec/datadog/core/telemetry/request_spec.rb +++ b/spec/datadog/core/telemetry/request_spec.rb @@ -13,7 +13,8 @@ let(:api_version) { 'v2' } let(:debug) { false } let(:runtime_id) { Datadog::Core::Environment::Identity.id } - let(:tracer_time) { Time.now.to_i } + let!(:before_time) { Time.now.to_i } + let(:after_time) { Time.now.to_i } let(:application) do { @@ -62,7 +63,7 @@ end it do - is_expected.to eq( + is_expected.to match( api_version: api_version, application: application, debug: debug, @@ -71,8 +72,37 @@ request_type: request_type, runtime_id: runtime_id, seq_id: seq_id, - tracer_time: tracer_time, + tracer_time: be_between(before_time, after_time), ) end + + context 'when Datadog::CI is loaded and ci mode is enabled' do + before do + stub_const('Datadog::CI::VERSION::STRING', '1.2.3') + expect(Datadog).to receive(:configuration).and_return( + double( + 'configuration', + ci: double('ci', enabled: true), + env: env, + service: service_name, + version: service_version + ) + ) + end + + it do + is_expected.to match( + api_version: api_version, + application: application.merge(tracer_version: "#{tracer_version}-ci-1.2.3"), + debug: debug, + host: host, + payload: payload, + request_type: request_type, + runtime_id: runtime_id, + seq_id: seq_id, + tracer_time: be_between(before_time, after_time), + ) + end + end end end diff --git a/spec/datadog/core/utils/at_fork_monkey_patch_spec.rb b/spec/datadog/core/utils/at_fork_monkey_patch_spec.rb new file mode 100644 index 00000000000..0ce2de884ce --- /dev/null +++ b/spec/datadog/core/utils/at_fork_monkey_patch_spec.rb @@ -0,0 +1,247 @@ +require 'datadog/core/utils/at_fork_monkey_patch' + +RSpec.describe Datadog::Core::Utils::AtForkMonkeyPatch do + before { skip 'Forking not supported' unless Datadog::Core::Utils::AtForkMonkeyPatch.supported? } # rubocop:disable RSpec/DescribedClass + + describe '::apply!' do + subject(:apply!) { described_class.apply! } + + context 'when forking is supported' do + before do + if ::Process.singleton_class.ancestors.include?(Datadog::Core::Utils::AtForkMonkeyPatch::ProcessMonkeyPatch) + skip 'Monkey patch already applied (unclean state)' + end + end + + let(:toplevel_receiver) { TOPLEVEL_BINDING.receiver } + + context 'on Ruby 3.0 or below' do + before { skip 'Test applies only to Ruby 3.0 or below' if RUBY_VERSION >= '3.1' } + + it 'applies the monkey patch' do + expect_in_fork do + apply! + + expect(::Process.ancestors).to include(described_class::KernelMonkeyPatch) + expect(::Process.ancestors).to include(described_class::ProcessMonkeyPatch) + expect(::Kernel.ancestors).to include(described_class::KernelMonkeyPatch) + expect(toplevel_receiver.class.ancestors).to include(described_class::KernelMonkeyPatch) + + expect(::Process.method(:fork).source_location.first).to match(/.*at_fork_monkey_patch.rb/) + expect(::Process.method(:daemon).source_location.first).to match(/.*at_fork_monkey_patch.rb/) + expect(::Kernel.method(:fork).source_location.first).to match(/.*at_fork_monkey_patch.rb/) + expect(toplevel_receiver.method(:fork).source_location.first).to match(/.*at_fork_monkey_patch.rb/) + end + end + end + + context 'on Ruby 3.1 or above' do + before { skip 'Test applies only to Ruby 3.1 or above' if RUBY_VERSION < '3.1' } + + it 'applies the monkey patch' do + expect_in_fork do + apply! + + expect(::Process.ancestors).to include(described_class::ProcessMonkeyPatch) + expect(::Process.method(:daemon).source_location.first).to match(/.*at_fork_monkey_patch.rb/) + expect(::Process.method(:_fork).source_location.first).to match(/.*at_fork_monkey_patch.rb/) + end + end + + it 'does not monkey patch Kernel/Object' do + expect_in_fork do + apply! + + expect(::Process.ancestors).to_not include(described_class::KernelMonkeyPatch) + expect(::Kernel.ancestors).to_not include(described_class::KernelMonkeyPatch) + expect(toplevel_receiver.class.ancestors).to_not include(described_class::KernelMonkeyPatch) + + expect(::Process.method(:fork).source_location&.first).to_not match(/.*at_fork_monkey_patch.rb/) + expect(::Kernel.method(:fork).source_location&.first).to_not match(/.*at_fork_monkey_patch.rb/) + expect(toplevel_receiver.method(:fork).source_location&.first).to_not match(/.*at_fork_monkey_patch.rb/) + end + end + end + end + + context 'when forking is not supported' do + before do + allow(described_class) + .to receive(:supported?) + .and_return(false) + end + + it 'skips the monkey patch' do + is_expected.to be false + end + end + end + + describe Datadog::Core::Utils::AtForkMonkeyPatch::KernelMonkeyPatch do + shared_context 'fork class' do + def new_fork_class + Class.new.tap do |c| + c.singleton_class.class_eval do + prepend Datadog::Core::Utils::AtForkMonkeyPatch::KernelMonkeyPatch + + def fork(&block) + Kernel.fork(&block) + end + end + end + end + + subject(:fork_class) { new_fork_class } + + let(:fork_result) { :fork_result } + + before do + # Stub out actual forking, return mock result. + # This also makes callback order deterministic. + allow(Kernel).to receive(:fork) do |*_args, &b| + b.call unless b.nil? + fork_result + end + end + end + + shared_context 'at_fork callbacks' do + let(:child) { double('child') } + + before do + Datadog::Core::Utils::AtForkMonkeyPatch.at_fork(:child) { child.call } + end + + after do + Datadog::Core::Utils::AtForkMonkeyPatch.const_get(:AT_FORK_CHILD_BLOCKS).clear + end + end + + context 'when applied to a class with forking' do + include_context 'fork class' + + it do + is_expected.to respond_to(:fork) + end + + describe '#fork' do + context 'when a block is not provided' do + include_context 'at_fork callbacks' + + subject(:fork) { fork_class.fork } + + context 'and returns from the parent context' do + let(:fork_result) { 1234 } # simulate parent: result is a pid + + it do + expect(child).to_not receive(:call) + + is_expected.to be fork_result + end + end + + context 'and returns from the child context' do + let(:fork_result) { nil } # simulate child: result is a nil + + it do + expect(child).to receive(:call) + + is_expected.to be nil + end + end + end + + context 'when a block is provided' do + subject(:fork) { fork_class.fork(&block) } + + let(:block) { proc {} } + + context 'when no callbacks are configured' do + it 'passes through to original #fork' do + expect { |b| fork_class.fork(&b) }.to yield_control + is_expected.to be fork_result + end + end + + context 'when callbacks are configured' do + include_context 'at_fork callbacks' + + it 'invokes all the callbacks in order' do + expect(child).to receive(:call) + + is_expected.to be fork_result + end + end + end + end + end + end + + describe Datadog::Core::Utils::AtForkMonkeyPatch::ProcessMonkeyPatch do + let(:_fork_result) { nil } + let(:process_module) do + result = _fork_result + + Module.new do + def self.daemon(nochdir = nil, noclose = nil) + [nochdir, noclose] + end + define_singleton_method(:_fork) { result } + end + end + let(:child_callback) { double('child', call: true) } + + before do + process_module.singleton_class.prepend(described_class) + + Datadog::Core::Utils::AtForkMonkeyPatch.at_fork(:child) { child_callback.call } + end + + after do + Datadog::Core::Utils::AtForkMonkeyPatch.const_get(:AT_FORK_CHILD_BLOCKS).clear + end + + describe '.daemon' do + it 'calls the child at_fork callbacks after calling Process.daemon' do + expect(process_module).to receive(:daemon).ordered.and_call_original + expect(child_callback).to receive(:call).ordered + + process_module.daemon + end + + it 'passes any arguments to Process.daemon and returns its results' do + expect(process_module.daemon(:arg1, :arg2)).to eq([:arg1, :arg2]) + end + end + + describe '_fork' do + context 'in the child process' do + let(:_fork_result) { 0 } + + it 'triggers the child callbacks' do + expect(child_callback).to receive(:call) + + expect(process_module._fork).to be 0 + end + + it 'returns the result from _fork' do + expect(process_module._fork).to be _fork_result + end + end + + context 'in the parent process' do + let(:_fork_result) { 1234 } + + it 'does not trigger the child callbacks' do + expect(child_callback).to_not receive(:call) + + process_module._fork + end + + it 'returns the result from _fork' do + expect(process_module._fork).to be _fork_result + end + end + end + end +end diff --git a/spec/datadog/core/workers/async_spec.rb b/spec/datadog/core/workers/async_spec.rb index 2dd0b74173f..952ebe3c85c 100644 --- a/spec/datadog/core/workers/async_spec.rb +++ b/spec/datadog/core/workers/async_spec.rb @@ -454,39 +454,19 @@ describe 'thread naming and fork-safety marker' do after { worker.terminate } - context 'on Ruby < 2.3' do - before do - skip 'Only applies to old Rubies' if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.3') - end - - it 'does not try to set a thread name' do - without_partial_double_verification do - expect_any_instance_of(Thread).not_to receive(:name=) + let(:worker_class) do + stub_const( + 'AsyncSpecThreadNaming', + Class.new(Datadog::Core::Worker) do + include Datadog::Core::Workers::Async::Thread end - - worker.perform - end + ) end - context 'on Ruby >= 2.3' do - before do - skip 'Not supported on old Rubies' if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3') - end - - let(:worker_class) do - stub_const( - 'AsyncSpecThreadNaming', - Class.new(Datadog::Core::Worker) do - include Datadog::Core::Workers::Async::Thread - end - ) - end - - it 'sets the name of the created thread to match the worker class name' do - worker.perform + it 'sets the name of the created thread to match the worker class name' do + worker.perform - expect(worker.send(:worker).name).to eq worker_class.to_s - end + expect(worker.send(:worker).name).to eq worker_class.to_s end # See https://github.com/puma/puma/blob/32e011ab9e029c757823efb068358ed255fb7ef4/lib/puma/cluster.rb#L353-L359 diff --git a/spec/datadog/di/code_tracker_load_class.rb b/spec/datadog/di/code_tracker_load_class.rb new file mode 100644 index 00000000000..ebc4f6f4c20 --- /dev/null +++ b/spec/datadog/di/code_tracker_load_class.rb @@ -0,0 +1,2 @@ +class CodeTrackerLoadClass +end diff --git a/spec/datadog/di/code_tracker_require_class.rb b/spec/datadog/di/code_tracker_require_class.rb new file mode 100644 index 00000000000..915b8b174f6 --- /dev/null +++ b/spec/datadog/di/code_tracker_require_class.rb @@ -0,0 +1,2 @@ +class CodeTrackerRequireClass +end diff --git a/spec/datadog/di/code_tracker_spec.rb b/spec/datadog/di/code_tracker_spec.rb new file mode 100644 index 00000000000..2ccca9e2244 --- /dev/null +++ b/spec/datadog/di/code_tracker_spec.rb @@ -0,0 +1,168 @@ +require "datadog/di/spec_helper" +require "datadog/di/code_tracker" + +RSpec.describe Datadog::DI::CodeTracker do + di_test + + let(:tracker) do + described_class.new + end + + describe "#start" do + after do + tracker.stop + end + + it "tracks loaded file" do + # The expectations appear to be lazy-loaded, therefore + # we need to invoke the same expectation before starting + # code tracking as we'll be using later in the test. + expect(tracker.send(:registry)).to be_empty + tracker.start + # Should still be empty here. + expect(tracker.send(:registry)).to be_empty + load File.join(File.dirname(__FILE__), "code_tracker_load_class.rb") + expect(tracker.send(:registry).length).to eq(1) + + path = tracker.send(:registry).to_a.dig(0, 0) + # The path in the registry should be absolute. + expect(path[0]).to eq "/" + # The full path is dependent on the environment/system + # running the tests, but we can assert on the basename + # which will be the same. + expect(File.basename(path)).to eq("code_tracker_load_class.rb") + # And, we should in fact have a full path. + expect(path).to start_with("/") + end + + it "tracks required file" do + # The expectations appear to be lazy-loaded, therefore + # we need to invoke the same expectation before starting + # code tracking as we'll be using later in the test. + expect(tracker.send(:registry)).to be_empty + tracker.start + # Should still be empty here. + expect(tracker.send(:registry)).to be_empty + require_relative "code_tracker_require_class" + expect(tracker.send(:registry).length).to eq(1) + + path = tracker.send(:registry).to_a.dig(0, 0) + # The path in the registry should be absolute. + expect(path[0]).to eq "/" + # The full path is dependent on the environment/system + # running the tests, but we can assert on the basename + # which will be the same. + expect(File.basename(path)).to eq("code_tracker_require_class.rb") + # And, we should in fact have a full path. + expect(path).to start_with("/") + end + + context "eval without location" do + it "does not track eval'd code" do + # The expectations appear to be lazy-loaded, therefore + # we need to invoke the same expectation before starting + # code tracking as we'll be using later in the test. + expect(tracker.send(:registry)).to be_empty + tracker.start + # Should still be empty here. + expect(tracker.send(:registry)).to be_empty + eval "1 + 2" # standard:disable Style/EvalWithLocation + # Should still be empty here. + expect(tracker.send(:registry)).to be_empty + end + end + + context "eval with location" do + it "does not track eval'd code" do + # The expectations appear to be lazy-loaded, therefore + # we need to invoke the same expectation before starting + # code tracking as we'll be using later in the test. + expect(tracker.send(:registry)).to be_empty + tracker.start + # Should still be empty here. + expect(tracker.send(:registry)).to be_empty + eval "1 + 2", nil, __FILE__, __LINE__ + # Should still be empty here. + expect(tracker.send(:registry)).to be_empty + end + end + end + + describe "#active?" do + context "when started" do + before do + tracker.start + end + + after do + tracker.stop + end + + it "is true" do + expect(tracker.active?).to be true + end + end + + context "when stopped" do + before do + tracker.start + tracker.stop + end + + it "is false" do + expect(tracker.active?).to be false + end + end + end + + describe "#iseqs_for_path" do + around do |example| + tracker.start + + load File.join(File.dirname(__FILE__), "code_tracker_test_class_1.rb") + load File.join(File.dirname(__FILE__), "code_tracker_test_class_2.rb") + load File.join(File.dirname(__FILE__), "code_tracker_test_class_3.rb") + load File.join(File.dirname(__FILE__), "code_tracker_test_classes", "code_tracker_test_class_1.rb") + expect(tracker.send(:registry).each.to_a.length).to eq(4) + + # To be able to assert on the registry, replace values (iseqs) + # with the keys. + (registry = tracker.send(:registry)).each do |k, v| + registry[k] = k + end + + example.run + + tracker.stop + end + + context "exact match for full path" do + let(:path) do + File.join(File.dirname(__FILE__), "code_tracker_test_class_1.rb") + end + + it "returns the exact match only" do + expect(tracker.iseqs_for_path(path)).to eq([path]) + end + end + + context "basename match" do + let(:expected) do + [ + File.join(File.dirname(__FILE__), "code_tracker_test_class_1.rb"), + File.join(File.dirname(__FILE__), "code_tracker_test_classes", "code_tracker_test_class_1.rb"), + ] + end + + it "returns the exact match only" do + expect(tracker.iseqs_for_path("code_tracker_test_class_1.rb")).to eq(expected) + end + end + + context "match not on path component boundary" do + it "returns no matches" do + expect(tracker.iseqs_for_path("1.rb")).to eq([]) + end + end + end +end diff --git a/spec/datadog/di/code_tracker_test_class_1.rb b/spec/datadog/di/code_tracker_test_class_1.rb new file mode 100644 index 00000000000..60f4b30f80c --- /dev/null +++ b/spec/datadog/di/code_tracker_test_class_1.rb @@ -0,0 +1,2 @@ +class CodeTrackerTestClass1 +end diff --git a/spec/datadog/di/code_tracker_test_class_2.rb b/spec/datadog/di/code_tracker_test_class_2.rb new file mode 100644 index 00000000000..c99b1367fd5 --- /dev/null +++ b/spec/datadog/di/code_tracker_test_class_2.rb @@ -0,0 +1,2 @@ +class CodeTrackerTestClass2 +end diff --git a/spec/datadog/di/code_tracker_test_class_3.rb b/spec/datadog/di/code_tracker_test_class_3.rb new file mode 100644 index 00000000000..eaa42bbe766 --- /dev/null +++ b/spec/datadog/di/code_tracker_test_class_3.rb @@ -0,0 +1,2 @@ +class CodeTrackerTestClass3 +end diff --git a/spec/datadog/di/code_tracker_test_classes/code_tracker_test_class_1.rb b/spec/datadog/di/code_tracker_test_classes/code_tracker_test_class_1.rb new file mode 100644 index 00000000000..27075513397 --- /dev/null +++ b/spec/datadog/di/code_tracker_test_classes/code_tracker_test_class_1.rb @@ -0,0 +1,4 @@ +# Different name to not conflict with the upper-level class definition. +# Note that file basenames need to be identical for some of the test cases. +class SubdirCodeTrackerTestClass1 +end diff --git a/spec/datadog/di/configuration/settings_spec.rb b/spec/datadog/di/configuration/settings_spec.rb new file mode 100644 index 00000000000..e0f5b75e3fb --- /dev/null +++ b/spec/datadog/di/configuration/settings_spec.rb @@ -0,0 +1,78 @@ +require "datadog/di" + +RSpec.describe Datadog::DI::Configuration::Settings do + subject(:settings) { Datadog::Core::Configuration::Settings.new } + + describe "dynamic_instrumentation" do + context "programmatic configuration" do + [ + ["enabled", true], + ["enabled", false], + ["untargeted_trace_points", true], + ["untargeted_trace_points", false], + ["propagate_all_exceptions", true], + ["propagate_all_exceptions", false], + ["redacted_identifiers", ["foo"]], + ["redacted_identifiers", []], + ["redacted_type_names", ["foo*", "bar"]], + ["redacted_type_names", []], + ["max_capture_depth", 5], + ["max_capture_collection_size", 10], + ["max_capture_string_length", 20], + ["max_capture_attribute_count", 4], + ].each do |(name_, value_)| + name = name_ + value = value_.freeze + + context "when #{name} set to #{value}" do + let(:value) { _value } + + before do + settings.dynamic_instrumentation.public_send("#{name}=", value) + end + + it "returns the value back" do + expect(settings.dynamic_instrumentation.public_send(name)).to eq(value) + end + end + end + end + + context "environment variable configuration" do + [ + ["DD_DYNAMIC_INSTRUMENTATION_ENABLED", "true", "enabled", true], + ["DD_DYNAMIC_INSTRUMENTATION_ENABLED", "false", "enabled", false], + ["DD_DYNAMIC_INSTRUMENTATION_ENABLED", nil, "enabled", false], + ["DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS", "foo", "redacted_identifiers", %w[foo]], + ["DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS", "foo,bar", "redacted_identifiers", %w[foo bar]], + ["DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS", "foo, bar", "redacted_identifiers", %w[foo bar]], + ["DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS", "", "redacted_identifiers", %w[]], + ["DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS", ",", "redacted_identifiers", %w[]], + ["DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS", "~?", "redacted_identifiers", %w[~?]], + ["DD_DYNAMIC_INSTRUMENTATION_REDACTED_TYPES", "foo", "redacted_type_names", %w[foo]], + ["DD_DYNAMIC_INSTRUMENTATION_REDACTED_TYPES", "foo,bar", "redacted_type_names", %w[foo bar]], + ["DD_DYNAMIC_INSTRUMENTATION_REDACTED_TYPES", "foo, bar", "redacted_type_names", %w[foo bar]], + ["DD_DYNAMIC_INSTRUMENTATION_REDACTED_TYPES", "", "redacted_type_names", %w[]], + ["DD_DYNAMIC_INSTRUMENTATION_REDACTED_TYPES", ",", "redacted_type_names", %w[]], + ["DD_DYNAMIC_INSTRUMENTATION_REDACTED_TYPES", ".!", "redacted_type_names", %w[.!]], + ].each do |(env_var_name_, env_var_value_, setting_name_, setting_value_)| + env_var_name = env_var_name_ + env_var_value = env_var_value_ + setting_name = setting_name_ + setting_value = setting_value_ + + context "when #{env_var_name}=#{env_var_value}" do + around do |example| + ClimateControl.modify(env_var_name => env_var_value) do + example.run + end + end + + it "sets dynamic_instrumentation.#{setting_name}=#{setting_value}" do + expect(settings.dynamic_instrumentation.public_send(setting_name)).to eq setting_value + end + end + end + end + end +end diff --git a/spec/datadog/di/probe_builder_spec.rb b/spec/datadog/di/probe_builder_spec.rb new file mode 100644 index 00000000000..c2d1738ff80 --- /dev/null +++ b/spec/datadog/di/probe_builder_spec.rb @@ -0,0 +1,146 @@ +require "datadog/di/spec_helper" +require "datadog/di/probe_builder" + +RSpec.describe Datadog::DI::ProbeBuilder do + di_test + + describe ".build_from_remote_config" do + let(:probe) do + described_class.build_from_remote_config(rc_probe_spec) + end + + context "typical line probe" do + let(:rc_probe_spec) do + {"id" => "3ecfd456-2d7c-4359-a51f-d4cc44141ffe", + "version" => 0, + "type" => "LOG_PROBE", + "language" => "python", + "where" => {"sourceFile" => "aaa.rb", "lines" => [4321]}, + "tags" => [], + "template" => "In aaa, line 1", + "segments" => [{"str" => "In aaa, line 1"}], + "captureSnapshot" => false, + # Use a value different from our library default to ensure that + # it is correctly processed. + "capture" => {"maxReferenceDepth" => 33}, + # Use a value different from our library default to ensure that + # it is correctly processed. + "sampling" => {"snapshotsPerSecond" => 4500}, + "evaluateAt" => "EXIT"} + end + + it "creates line probe with corresponding values" do + expect(probe.id).to eq "3ecfd456-2d7c-4359-a51f-d4cc44141ffe" + expect(probe.type).to eq :log + expect(probe.file).to eq "aaa.rb" + expect(probe.line_no).to eq 4321 + expect(probe.type_name).to be nil + expect(probe.method_name).to be nil + expect(probe.max_capture_depth).to eq 33 + expect(probe.rate_limit).to eq 4500 + + expect(probe.line?).to be true + expect(probe.method?).to be false + end + end + + context "minimum set of fields" do + # This is a made up payload to test attribute defaulting. + # In practice payloads like this should not be seen. + let(:rc_probe_spec) do + {"id" => "3ecfd456-2d7c-4359-a51f-d4cc44141ffe", + "type" => "LOG_PROBE", + "where" => {"sourceFile" => "aaa.rb", "lines" => [4321]},} + end + + describe ".max_capture_depth" do + it "is nil" do + expect(probe.max_capture_depth).to be nil + end + end + + describe ".rate_limit" do + it "is defaulted to 5000" do + expect(probe.rate_limit).to eq 5000 + end + end + end + + context "when lines is an array of nil" do + let(:rc_probe_spec) do + {"id" => "3ecfd456-2d7c-4359-a51f-d4cc44141ffe", + "version" => 0, + "type" => "LOG_PROBE", + "language" => "python", + "where" => {"sourceFile" => "aaa.rb", "lines" => [nil]}, + "tags" => [], + "template" => "In aaa, line 1", + "segments" => [{"str" => "In aaa, line 1"}], + "captureSnapshot" => false, + "capture" => {"maxReferenceDepth" => 3}, + "sampling" => {"snapshotsPerSecond" => 5000}, + "evaluateAt" => "EXIT"} + end + + describe "construction" do + it "fails with exception" do + expect do + probe + end.to raise_error(ArgumentError, /neither method nor line probe/) + end + end + end + + context "RC payload with capture snapshot" do + let(:rc_probe_spec) do + {"id" => "3ecfd456-2d7c-4359-a51f-d4cc44141ffe", + "version" => 0, + "type" => "LOG_PROBE", + "language" => "python", + "where" => {"sourceFile" => "aaa", "lines" => [2]}, + "tags" => [], + "template" => "In aaa, line 1", + "segments" => [{"str" => "In aaa, line 1"}], + "captureSnapshot" => true, + "capture" => {"maxReferenceDepth" => 3}, + "sampling" => {"snapshotsPerSecond" => 5000}, + "evaluateAt" => "EXIT"} + end + + it "capture_snapshot? is true" do + expect(probe.capture_snapshot?).to be true + end + end + + context "RC payload without capture snapshot" do + let(:rc_probe_spec) do + {"id" => "3ecfd456-2d7c-4359-a51f-d4cc44141ffe", + "version" => 0, + "type" => "LOG_PROBE", + "language" => "python", + "where" => {"sourceFile" => "aaa", "lines" => [4]}, + "tags" => [], + "template" => "In aaa, line 1", + "segments" => [{"str" => "In aaa, line 1"}], + "captureSnapshot" => false, + "capture" => {"maxReferenceDepth" => 3}, + "sampling" => {"snapshotsPerSecond" => 5000}, + "evaluateAt" => "EXIT"} + end + + it "capture_snapshot? is false" do + expect(probe.capture_snapshot?).to be false + end + end + + context "empty input" do + let(:rc_probe_spec) { {} } + + it "raises ArgumentError" do + expect do + probe + end.to raise_error(ArgumentError, /Malformed remote configuration entry/) + end + end + end +end diff --git a/spec/datadog/di/probe_spec.rb b/spec/datadog/di/probe_spec.rb new file mode 100644 index 00000000000..39561e87e8b --- /dev/null +++ b/spec/datadog/di/probe_spec.rb @@ -0,0 +1,207 @@ +require "datadog/di/spec_helper" +require "datadog/di/probe" + +RSpec.describe Datadog::DI::Probe do + di_test + + shared_context "method probe" do + let(:probe) do + described_class.new(id: "42", type: :log, type_name: 'Foo', method_name: "bar") + end + end + + shared_context "line probe" do + let(:probe) do + described_class.new(id: "42", type: :log, file: "foo.rb", line_no: 4) + end + end + + describe ".new" do + context "method probe" do + include_context "method probe" + + it "creates an instance" do + expect(probe).to be_a(described_class) + expect(probe.id).to eq "42" + expect(probe.type).to eq :log + expect(probe.type_name).to eq "Foo" + expect(probe.method_name).to eq "bar" + expect(probe.file).to be nil + expect(probe.line_no).to be nil + end + end + + context "line probe" do + include_context "line probe" + + it "creates an instance" do + expect(probe).to be_a(described_class) + expect(probe.id).to eq "42" + expect(probe.type).to eq :log + expect(probe.type_name).to be nil + expect(probe.method_name).to be nil + expect(probe.file).to eq "foo.rb" + expect(probe.line_no).to eq 4 + end + end + + context 'unsupported type' do + let(:probe) do + # LOG_PROBE is a valid type in RC probe specification but not + # as an argument to Probe constructor. + described_class.new(id: '42', type: 'LOG_PROBE', file: 'x', line_no: 1) + end + + it 'raises ArgumentError' do + expect do + probe + end.to raise_error(ArgumentError, /Unknown probe type/) + end + end + + context "neither method nor line" do + let(:probe) do + described_class.new(id: "42", type: :log) + end + + it "raises ArgumentError" do + expect do + probe + end.to raise_error(ArgumentError, /neither method nor line/) + end + end + + context "both method and line" do + let(:probe) do + described_class.new(id: "42", type: :log, + type_name: "foo", method_name: "bar", file: "baz", line_no: 4) + end + + it "raises ArgumentError" do + expect do + probe + end.to raise_error(ArgumentError, /both line number and method name/) + end + end + end + + describe "#line?" do + context "line probe" do + let(:probe) do + described_class.new(id: "42", type: :log, file: "bar.rb", line_no: 5) + end + + it "is true" do + expect(probe.line?).to be true + end + end + + context "method probe" do + let(:probe) do + described_class.new(id: "42", type: :log, type_name: "FooClass", method_name: "bar") + end + + it "is false" do + expect(probe.line?).to be false + end + end + + context "method probe with file name" do + let(:probe) do + described_class.new(id: "42", type: :log, type_name: "FooClass", method_name: "bar", file: "quux.rb") + end + + it "is false" do + expect(probe.line?).to be false + end + end + end + + describe "#method?" do + context "line probe" do + let(:probe) do + described_class.new(id: "42", type: :log, file: "bar.rb", line_no: 5) + end + + it "is false" do + expect(probe.method?).to be false + end + end + + context "method probe" do + let(:probe) do + described_class.new(id: "42", type: :log, type_name: "FooClass", method_name: "bar") + end + + it "is true" do + expect(probe.method?).to be true + end + end + + context "method probe with file name" do + let(:probe) do + described_class.new(id: "42", type: :log, type_name: "FooClass", method_name: "bar", file: "quux.rb") + end + + it "is true" do + expect(probe.method?).to be true + end + end + end + + describe "#line_no" do + context "one line number" do + let(:probe) { described_class.new(id: "x", type: :log, line_no: 5) } + + it "returns the line number" do + expect(probe.line_no).to eq 5 + end + end + + context "nil line number" do + let(:probe) { described_class.new(id: "id", type: :log, type_name: "x", method_name: "y", line_no: nil) } + + it "returns nil" do + expect(probe.line_no).to be nil + end + end + end + + describe "#line_no!" do + context "one line number" do + let(:probe) { described_class.new(id: "x", type: :log, line_no: 5) } + + it "returns the line number" do + expect(probe.line_no!).to eq 5 + end + end + + context "nil line number" do + let(:probe) { described_class.new(id: "id", type: :log, type_name: "x", method_name: "y", line_no: nil) } + + it "raises MissingLineNumber" do + expect do + probe.line_no! + end.to raise_error(Datadog::DI::Error::MissingLineNumber, /does not have a line number/) + end + end + end + + describe "#location" do + context "method probe" do + include_context "method probe" + + it "returns method location" do + expect(probe.location).to eq "Foo.bar" + end + end + + context "line probe" do + include_context "line probe" + + it "returns line location" do + expect(probe.location).to eq "foo.rb:4" + end + end + end +end diff --git a/spec/datadog/di/redactor_spec.rb b/spec/datadog/di/redactor_spec.rb new file mode 100644 index 00000000000..8e8f28be4ae --- /dev/null +++ b/spec/datadog/di/redactor_spec.rb @@ -0,0 +1,166 @@ +require "datadog/di/spec_helper" +require "datadog/di/redactor" + +class DIRedactorSpecSensitiveType; end + +class DIRedactorSpecWildCard; end + +class DIRedactorSpecWildCardClass; end + +class DIRedactorSpecWildCa; end + +class DIRedactorSpecPrefixWildCard; end + +class DIRedactorSpecDoubleColon; end + +module DIRedactorSpec + class SensitiveType; end + + class NotSensitiveType; end + + class WildCardSensitiveType; end + + class ExactMatch; end + + class DoubleColonNested; end + + class DoubleColonWildCardType; end +end + +RSpec.describe Datadog::DI::Redactor do + di_test + + let(:settings) do + double("settings").tap do |settings| + allow(settings).to receive(:dynamic_instrumentation).and_return(di_settings) + end + end + + let(:di_settings) do + double("di settings").tap do |settings| + allow(settings).to receive(:enabled).and_return(true) + allow(settings).to receive(:propagate_all_exceptions).and_return(false) + allow(settings).to receive(:redacted_identifiers).and_return([]) + end + end + + let(:redactor) do + Datadog::DI::Redactor.new(settings) + end + + describe "#redact_identifier?" do + def self.define_cases(cases) + cases.each do |(label, identifier_, redact_)| + identifier, redact = identifier_, redact_ + + context label do + let(:identifier) { identifier } + + it do + expect(redactor.redact_identifier?(identifier)).to be redact + end + end + end + end + + cases = [ + ["lowercase", "password", true], + ["uppercase", "PASSWORD", true], + ["with removed punctiation", "pass_word", true], + ["with non-removed punctuation", "pass/word", false], + ] + + define_cases(cases) + + context "when user-defined redacted identifiers exist" do + before do + expect(di_settings).to receive(:redacted_identifiers).and_return(%w[foo пароль Ключ @var]) + end + + cases = [ + ["exact user-defined identifier", "foo", true], + ["prefix of user-defined identifier", "f", false], + ["suffix of user-defined identifier", "oo", false], + ["user-defined identifier with extra removeable punctuation", "f-o-o", true], + ["user-defined identifier with extra non-removeable punctuation", "f.o.o", false], + ["user-defined identifier is not ascii, target identifier is in another case", "ПАРОЛь", true], + ["user-defined identifier is not ascii and uses mixed case in definition", "ключ", true], + ["user-defined identifier is not ascii and uses mixed case in definition and is not exact match", "ключ1", false], + ["@ in definition", "var", true], + ["@ in definition but name does not match", "var1", false], + ["@ in target identifier", "@foo", true], + ["@ in target identifier but name does not match", "@foo1", false], + ] + + define_cases(cases) + end + end + + describe "#redact_type?" do + let(:redacted_type_names) { + %w[ + DIRedactorSpecSensitiveType + DIRedactorSpecWildCard* + DIRedactorSpec::ExactMatch + DIRedactorSpec::WildCard* + SensitiveType + SensitiveType* + ::DIRedactorSpecDoubleColon + ::DIRedactorSpec::DoubleColonNested + ::DIRedactorSpec::DoubleColonWildCard* + ] + } + + def self.define_cases(cases) + cases.each do |(label, value_, redact_)| + value, redact = value_, redact_ + + context label do + let(:value) { value } + + it do + expect(redactor.redact_type?(value)).to be redact + end + end + end + end + + context "redacted type list is checked" do + before do + expect(di_settings).to receive(:redacted_type_names).and_return(redacted_type_names) + end + + cases = [ + ["redacted", DIRedactorSpecSensitiveType.new, true], + ["not redacted", /123/, false], + ["primitive type", nil, false], + ["wild card type whose name is the same as prefix", DIRedactorSpecWildCard.new, true], + ["wild card type", DIRedactorSpecWildCardClass.new, true], + ["wild card does not match from beginning", DIRedactorSpecPrefixWildCard.new, false], + ["partial wild card prefix match", DIRedactorSpecWildCa.new, false], + ["class object", String, false], + ["anonymous class object", Class.new, false], + ["namespaced class - exact match", DIRedactorSpec::ExactMatch.new, true], + ["namespaced class - wildcard - matched", DIRedactorSpec::WildCardSensitiveType.new, true], + ["namespaced class - tail component match only", DIRedactorSpec::SensitiveType.new, false], + ["double-colon top-level specification", DIRedactorSpecDoubleColon.new, true], + ["double-colon nested specification", DIRedactorSpec::DoubleColonNested.new, true], + ["double-colon nested wildcard", DIRedactorSpec::DoubleColonWildCardType.new, true], + ] + + define_cases(cases) + end + + context "redacted type list is not checked" do + before do + expect(di_settings).not_to receive(:redacted_type_names) + end + + cases = [ + ["instance of anonymous class", Class.new.new, false], + ] + + define_cases(cases) + end + end +end diff --git a/spec/datadog/di/serializer_spec.rb b/spec/datadog/di/serializer_spec.rb new file mode 100644 index 00000000000..2e870d9cad3 --- /dev/null +++ b/spec/datadog/di/serializer_spec.rb @@ -0,0 +1,398 @@ +require "datadog/di/spec_helper" +require "datadog/di/serializer" + +class DISerializerSpecSensitiveType +end + +class DISerializerSpecWildCardClass; end + +class DISerializerSpecInstanceVariable + def initialize(value) + @ivar = value + end +end + +class DISerializerSpecRedactedInstanceVariable + def initialize(value) + @session = value + end +end + +class DISerializerSpecManyInstanceVariables + def initialize + 1.upto(100) do |i| + instance_variable_set("@v#{i}", i) + end + end +end + +# Should have no instance variables +class DISerializerSpecTestClass; end + +RSpec.describe Datadog::DI::Serializer do + di_test + + let(:settings) do + double("settings").tap do |settings| + allow(settings).to receive(:dynamic_instrumentation).and_return(di_settings) + end + end + + let(:di_settings) do + double("di settings").tap do |settings| + allow(settings).to receive(:enabled).and_return(true) + allow(settings).to receive(:propagate_all_exceptions).and_return(false) + allow(settings).to receive(:redacted_identifiers).and_return([]) + allow(settings).to receive(:redacted_type_names).and_return(%w[ + DISerializerSpecSensitiveType DISerializerSpecWildCard* + ]) + allow(settings).to receive(:max_capture_collection_size).and_return(10) + allow(settings).to receive(:max_capture_attribute_count).and_return(10) + # Reduce max capture depth to 2 from default of 3 + allow(settings).to receive(:max_capture_depth).and_return(2) + allow(settings).to receive(:max_capture_string_length).and_return(100) + end + end + + let(:redactor) do + Datadog::DI::Redactor.new(settings) + end + + let(:serializer) do + described_class.new(settings, redactor) + end + + describe "#serialize_value" do + let(:serialized) do + serializer.serialize_value(value, **options) + end + + def self.define_cases(cases) + cases.each do |c| + value = c.fetch(:input) + expected = c.fetch(:expected) + var_name = c[:var_name] + + context c.fetch(:name) do + let(:value) { value } + + let(:options) do + {name: var_name} + end + + it "serializes as expected" do + expect(serialized).to eq(expected) + end + end + end + end + + cases = [ + {name: "nil value", input: nil, expected: {type: "NilClass", isNull: true}}, + {name: "true value", input: true, expected: {type: "TrueClass", value: "true"}}, + {name: "false value", input: false, expected: {type: "FalseClass", value: "false"}}, + {name: "int value", input: 42, expected: {type: "Integer", value: "42"}}, + {name: "bigint value", input: 420000000000000000000042, expected: {type: "Integer", value: "420000000000000000000042"}}, + {name: "float value", input: 42.02, expected: {type: "Float", value: "42.02"}}, + {name: "string value", input: "x", expected: {type: "String", value: "x"}}, + {name: "symbol value", input: :x, expected: {type: "Symbol", value: "x"}}, + {name: "redacted identifier in predefined list", input: "123", var_name: "password", + expected: {type: "String", notCapturedReason: "redactedIdent"}}, + {name: "variable name given and is not a redacted identifier", input: "123", var_name: "normal", + expected: {type: "String", value: "123"}}, + ] + + define_cases(cases) + end + + describe "#serialize_vars" do + let(:serialized) do + serializer.serialize_vars(vars) + end + + def self.define_cases(cases) + cases.each do |c| + value = c.fetch(:input) + expected = c.fetch(:expected) + + context c.fetch(:name) do + let(:vars) { value } + + it "serializes as expected" do + expect(serialized).to eq(expected) + end + end + end + end + + cases = [ + {name: "redacted value in predefined list", input: {password: "123"}, + expected: {password: {type: "String", notCapturedReason: "redactedIdent"}}}, + {name: "redacted type", input: {value: DISerializerSpecSensitiveType.new}, + expected: {value: {type: "DISerializerSpecSensitiveType", notCapturedReason: "redactedType"}}}, + {name: "redacted wild card type", input: {value: DISerializerSpecWildCardClass.new}, + expected: {value: {type: "DISerializerSpecWildCardClass", notCapturedReason: "redactedType"}}}, + {name: "empty array", input: {arr: []}, + expected: {arr: {type: "Array", elements: []}}}, + {name: "array of primitives", input: {arr: [42, "hello", nil, true]}, + expected: {arr: {type: "Array", elements: [ + {type: "Integer", value: "42"}, + {type: "String", value: "hello"}, + {type: "NilClass", isNull: true}, + {type: "TrueClass", value: "true"}, + ]}}}, + {name: "array with value of redacted type", input: {arr: [1, DISerializerSpecSensitiveType.new]}, + expected: {arr: {type: "Array", elements: [ + {type: "Integer", value: "1"}, + {type: "DISerializerSpecSensitiveType", notCapturedReason: "redactedType"}, + ]}}}, + {name: "empty hash", input: {h: {}}, expected: {h: {type: "Hash", entries: []}}}, + {name: "hash with symbol key", input: {h: {hello: 42}}, expected: {h: {type: "Hash", entries: [ + [{type: "Symbol", value: "hello"}, {type: "Integer", value: "42"}], + ]}}}, + {name: "hash with string key", input: {h: {"hello" => 42}}, expected: {h: {type: "Hash", entries: [ + [{type: "String", value: "hello"}, {type: "Integer", value: "42"}], + ]}}}, + {name: "hash with redacted identifier", input: {h: {"session-key" => 42}}, expected: {h: {type: "Hash", entries: [ + [{type: "String", value: "session-key"}, {type: "Integer", notCapturedReason: "redactedIdent"}], + ]}}}, + {name: "empty object", input: {x: Object.new}, expected: {x: {type: "Object", fields: {}}}}, + {name: "object with instance variable", input: {x: DISerializerSpecInstanceVariable.new(42)}, + expected: {x: {type: "DISerializerSpecInstanceVariable", fields: { + "@ivar": {type: "Integer", value: "42"}, + }}}}, + {name: "object with redacted instance variable", input: {x: DISerializerSpecRedactedInstanceVariable.new(42)}, + expected: {x: {type: "DISerializerSpecRedactedInstanceVariable", fields: { + "@session": {type: "Integer", notCapturedReason: "redactedIdent"}, + }}}}, + {name: "depth exceeded: array", input: {v: {a: {b: {c: []}}}}, + expected: {v: {type: "Hash", entries: [ + [{type: "Symbol", value: "a"}, {type: "Hash", entries: [ + [{type: "Symbol", value: "b"}, {type: "Hash", entries: [ + [{type: "Symbol", value: "c"}, {type: "Array", notCapturedReason: "depth"}], + ]}], + ]}], + ]}}}, + {name: "depth exceeded: hash", input: {v: {a: {b: {c: {}}}}}, + expected: {v: {type: "Hash", entries: [ + [{type: "Symbol", value: "a"}, {type: "Hash", entries: [ + [{type: "Symbol", value: "b"}, {type: "Hash", entries: [ + [{type: "Symbol", value: "c"}, {type: "Hash", notCapturedReason: "depth"}], + ]}], + ]}], + ]}}}, + {name: "depth exceeded: object", input: {v: {a: {b: {c: Object.new}}}}, + expected: {v: {type: "Hash", entries: [ + [{type: "Symbol", value: "a"}, {type: "Hash", entries: [ + [{type: "Symbol", value: "b"}, {type: "Hash", entries: [ + [{type: "Symbol", value: "c"}, {type: "Object", notCapturedReason: "depth"}], + ]}], + ]}], + ]}}}, + {name: "object with no attributes", input: {v: DISerializerSpecTestClass.new}, + expected: {v: {type: "DISerializerSpecTestClass", fields: {}}},}, + {name: "object of anonymous class with no attributes", input: {v: Class.new.new}, + expected: {v: {type: "[Unnamed class]", fields: {}}},}, + # TODO hash with a complex object as key? + ] + + define_cases(cases) + + context "when data exceeds collection limits" do + before do + allow(di_settings).to receive(:max_capture_collection_size).and_return(3) + end + + cases = [ + {name: "array too long", input: {a: [10] * 1000}, + expected: {a: {type: "Array", + elements: [ + {type: "Integer", value: "10"}, + {type: "Integer", value: "10"}, + {type: "Integer", value: "10"}, + ], notCapturedReason: "collectionSize", size: 1000}}}, + {name: "hash too long", input: {v: {a: 1, b: 2, c: 3, d: 4, e: 5}}, + expected: {v: {type: "Hash", + entries: [ + [{type: "Symbol", value: "a"}, {type: "Integer", value: "1"}], + [{type: "Symbol", value: "b"}, {type: "Integer", value: "2"}], + [{type: "Symbol", value: "c"}, {type: "Integer", value: "3"}], + ], notCapturedReason: "collectionSize", size: 5}}}, + ] + + define_cases(cases) + end + + context "when data exceeds attribute limits" do + before do + allow(di_settings).to receive(:max_capture_attribute_count).and_return(3) + end + + cases = [ + {name: "too many attributes", input: {a: DISerializerSpecManyInstanceVariables.new}, + expected: {a: {type: "DISerializerSpecManyInstanceVariables", + fields: { + "@v1": {type: "Integer", value: "1"}, + "@v2": {type: "Integer", value: "2"}, + "@v3": {type: "Integer", value: "3"}, + }, notCapturedReason: "fieldCount"}}}, + ] + + define_cases(cases) + end + + context "when strings exceed max length" do + before do + allow(di_settings).to receive(:max_capture_string_length).and_return(3) + end + + cases = [ + {name: "string too long", input: {a: "abcde"}, + expected: {a: {type: "String", value: "abc", size: 5, truncated: true}}}, + {name: "symbol too long", input: {a: :abcde}, + expected: {a: {type: "Symbol", value: "abc", size: 5, truncated: true}}}, + ] + + define_cases(cases) + end + + context "when limits are zero" do + before do + allow(di_settings).to receive(:max_capture_collection_size).and_return(0) + end + + cases = [ + {name: "array", input: {a: [10] * 5}, + expected: {a: {type: "Array", + elements: [ + {type: "Integer", value: "10"}, + {type: "Integer", value: "10"}, + {type: "Integer", value: "10"}, + {type: "Integer", value: "10"}, + {type: "Integer", value: "10"}, + ]}}}, + {name: "hash", input: {v: {a: 1, b: 2, c: 3, d: 4, e: 5}}, + expected: {v: {type: "Hash", + entries: [ + [{type: "Symbol", value: "a"}, {type: "Integer", value: "1"}], + [{type: "Symbol", value: "b"}, {type: "Integer", value: "2"}], + [{type: "Symbol", value: "c"}, {type: "Integer", value: "3"}], + [{type: "Symbol", value: "d"}, {type: "Integer", value: "4"}], + [{type: "Symbol", value: "e"}, {type: "Integer", value: "5"}], + ]}}}, + ] + + define_cases(cases) + end + end + + describe "#serialize_args" do + let(:serialized) do + serializer.serialize_args(args, kwargs) + end + + cases = [ + {name: "both args and kwargs", + args: [1, "x"], + kwargs: {a: 42}, + expected: {arg1: {type: "Integer", value: "1"}, + arg2: {type: "String", value: "x"}, + a: {type: "Integer", value: "42"}},}, + {name: "kwargs contains redacted identifier", + args: [1, "x"], + kwargs: {password: 42}, + expected: {arg1: {type: "Integer", value: "1"}, + arg2: {type: "String", value: "x"}, + password: {type: "Integer", notCapturedReason: "redactedIdent"}},}, + ] + + cases.each do |c| + args = c.fetch(:args) + kwargs = c.fetch(:kwargs) + expected = c.fetch(:expected) + + context c.fetch(:name) do + let(:args) { args } + let(:kwargs) { kwargs } + + it "serializes as expected" do + expect(serialized).to eq(expected) + end + end + end + + context 'when positional arg is mutated' do + let(:args) do + ['hello', 'world'] + end + + let(:kwargs) { {} } + + it 'preserves original value' do + serialized + + args.first.gsub!('hello', 'bye') + + expect(serialized).to eq( + arg1: {type: 'String', value: 'hello'}, + arg2: {type: 'String', value: 'world'}, + ) + end + end + + context 'when keyword arg is mutated' do + let(:args) do + [] + end + + let(:kwargs) do + {foo: 'bar'} + end + + it 'preserves original value' do + serialized + + kwargs[:foo].gsub!('bar', 'bye') + + expect(serialized).to eq( + foo: {type: 'String', value: 'bar'}, + ) + end + end + + context 'when positional arg is frozen' do + let(:frozen_string) { 'hello'.freeze } + + let(:args) do + [frozen_string, 'world'] + end + + let(:kwargs) { {} } + + it 'serializes without duplication' do + expect(serialized).to eq( + arg1: {type: 'String', value: 'hello'}, + arg2: {type: 'String', value: 'world'}, + ) + + expect(serialized[:arg1][:value]).to be frozen_string + end + end + + context 'when keyword arg is frozen' do + let(:frozen_string) { 'hello'.freeze } + + let(:args) { [] } + + let(:kwargs) { {foo: frozen_string} } + + it 'serializes without duplication' do + expect(serialized).to eq( + foo: {type: 'String', value: 'hello'}, + ) + + expect(serialized[:foo][:value]).to be frozen_string + end + end + end +end diff --git a/spec/datadog/di/spec_helper.rb b/spec/datadog/di/spec_helper.rb new file mode 100644 index 00000000000..5fe045e4cea --- /dev/null +++ b/spec/datadog/di/spec_helper.rb @@ -0,0 +1,20 @@ +module DIHelpers + module ClassMethods + def di_test + if PlatformHelpers.jruby? + before(:all) do + skip "Dynamic instrumentation is not supported on JRuby" + end + end + if RUBY_VERSION < "2.6" + before(:all) do + skip "Dynamic instrumentation requires Ruby 2.6 or higher" + end + end + end + end +end + +RSpec.configure do |config| + config.extend DIHelpers::ClassMethods +end diff --git a/spec/datadog/di/transport_spec.rb b/spec/datadog/di/transport_spec.rb new file mode 100644 index 00000000000..45631bc1afb --- /dev/null +++ b/spec/datadog/di/transport_spec.rb @@ -0,0 +1,108 @@ +require "datadog/di/spec_helper" +require "datadog/di/transport" + +RSpec.describe Datadog::DI::Transport do + di_test + + let(:agent_settings) do + instance_double(Datadog::Core::Configuration::AgentSettingsResolver::AgentSettings) + end + + describe '.new' do + it 'creates an instance using agent settings' do + expect(agent_settings).to receive(:hostname).and_return('localhost') + expect(agent_settings).to receive(:port).and_return(8126) + expect(agent_settings).to receive(:timeout_seconds).and_return(1) + expect(agent_settings).to receive(:ssl).and_return(false) + + expect(described_class.new(agent_settings)).to be_a(described_class) + end + end + + # These are fairly basic tests. The agent will accept all kinds of + # semantically nonsensical payloads. The tests here are useful to + # ascertain that things like content type is set correctly for each + # endpoint. + # + # Realistically, the only test that can check that the payload being + # sent is the correct one is a system test. + describe 'send methods' do + before(:all) do + # These tests require a functional datadog agent running at the + # configured (via agent_host & agent_port) location. + # CI has "dd-apm-test-agent" running which does not implement + # debugger endpoints, and thus is not suitable for these tests. + # These tests can be run locally, and test coverage in CI is + # accomplished via system tests. + unless agent_host && agent_port && ENV['TEST_DATADOG_AGENT'] == '1' + skip "Set TEST_DATADOG_AGENT=1, DD_AGENT_HOST and DD_TRACE_AGENT_PORT in environment to run these tests" + end + end + + let(:port) { agent_port } + + before do + expect(agent_settings).to receive(:hostname).and_return(agent_host) + expect(agent_settings).to receive(:port).and_return(port) + expect(agent_settings).to receive(:timeout_seconds).and_return(1) + expect(agent_settings).to receive(:ssl).and_return(false) + end + + let(:client) do + described_class.new(agent_settings) + end + + describe '.send_diagnostics' do + let(:payload) do + {} + end + + it 'does not raise exceptions' do + expect do + client.send_diagnostics(payload) + end.not_to raise_exception + end + end + + describe '.send_input' do + let(:payload) do + {} + end + + it 'does not raise exceptions' do + expect do + client.send_input(payload) + end.not_to raise_exception + end + end + + context 'when agent is not listening' do + # Use a bogus port + let(:port) { 99999 } + + describe '.send_diagnostics' do + let(:payload) do + {} + end + + it 'raises AgentCommunicationError' do + expect do + client.send_diagnostics(payload) + end.to raise_exception(Datadog::DI::Error::AgentCommunicationError, /(?:Connection refused|connect).*99999/) + end + end + + describe '.send_input' do + let(:payload) do + {} + end + + it 'raises AgentCommunicationError' do + expect do + client.send_input(payload) + end.to raise_exception(Datadog::DI::Error::AgentCommunicationError, /(?:Connection refused|connect).*99999/) + end + end + end + end +end diff --git a/spec/datadog/kit/appsec/events_spec.rb b/spec/datadog/kit/appsec/events_spec.rb index 4d34b30a169..5a296104cac 100644 --- a/spec/datadog/kit/appsec/events_spec.rb +++ b/spec/datadog/kit/appsec/events_spec.rb @@ -120,13 +120,6 @@ end end - it 'sets user non-existence on trace' do - trace_op.measure('root') do |span, _trace| - described_class.track_login_failure(trace_op, user_id: '42', user_exists: false) - expect(span.tags).to include('appsec.events.users.login.failure.usr.exists' => 'false') - end - end - it 'sets other keys on trace' do trace_op.measure('root') do |span, _trace| described_class.track_login_failure(trace_op, user_id: '42', user_exists: true, foo: 'bar') @@ -134,6 +127,22 @@ end end + context 'when user does not exist' do + it 'sets user non-existence on trace' do + trace_op.measure('root') do |span, _trace| + described_class.track_login_failure(trace_op, user_exists: false) + expect(span.tags).to include('appsec.events.users.login.failure.usr.exists' => 'false') + end + end + + it 'does not set user id on trace' do + trace_op.measure('root') do |span, _trace| + described_class.track_login_failure(trace_op, user_exists: false) + expect(span.tags).not_to have_key('appsec.events.users.login.failure.usr.id') + end + end + end + it_behaves_like 'uses AppSec scope' do let(:event_tag) { 'appsec.events.users.login.failure.track' } subject(:event) { described_class.track_login_failure(trace_op, user_id: '42', user_exists: true) } diff --git a/spec/datadog/profiling/collectors/code_provenance_spec.rb b/spec/datadog/profiling/collectors/code_provenance_spec.rb index 08ec41371f5..ff78d2ee4b9 100644 --- a/spec/datadog/profiling/collectors/code_provenance_spec.rb +++ b/spec/datadog/profiling/collectors/code_provenance_spec.rb @@ -1,76 +1,76 @@ -require 'datadog/profiling/collectors/code_provenance' -require 'json-schema' -require 'yaml' +require "datadog/profiling/collectors/code_provenance" +require "json-schema" +require "yaml" RSpec.describe Datadog::Profiling::Collectors::CodeProvenance do subject(:code_provenance) { described_class.new } - describe '#refresh' do + describe "#refresh" do subject(:refresh) { code_provenance.refresh } - it 'records libraries that are currently loaded' do + it "records libraries that are currently loaded" do refresh expect(code_provenance.generate).to include( have_attributes( - kind: 'standard library', - name: 'stdlib', + kind: "standard library", + name: "stdlib", version: RUBY_VERSION.to_s, - path: start_with('/'), + path: start_with("/"), ), have_attributes( - kind: 'library', - name: 'datadog', + kind: "library", + name: "datadog", version: Datadog::VERSION::STRING, - path: start_with('/'), + path: start_with("/"), ), have_attributes( - kind: 'library', - name: 'rspec-core', - version: start_with('3.'), # This will one day need to be bumped for RSpec 4 - path: start_with('/'), + kind: "library", + name: "rspec-core", + version: start_with("3."), # This will one day need to be bumped for RSpec 4 + path: start_with("/"), ) ) end - it 'records the correct path for datadog' do + it "records the correct path for datadog" do refresh current_file_directory = __dir__ - datadog_gem_root_directory = code_provenance.generate.find { |lib| lib.name == 'datadog' }.path + datadog_gem_root_directory = code_provenance.generate.find { |lib| lib.name == "datadog" }.path expect(current_file_directory).to start_with(datadog_gem_root_directory) end - it 'skips libraries not present in the loaded files' do + it "skips libraries not present in the loaded files" do code_provenance.refresh( - loaded_files: ['/is_loaded/is_loaded.rb'], + loaded_files: ["/is_loaded/is_loaded.rb"], loaded_specs: [ instance_double( Gem::Specification, - name: 'not_loaded', - version: 'not_loaded_version', - gem_dir: '/not_loaded/' + name: "not_loaded", + version: "not_loaded_version", + gem_dir: "/not_loaded/" ), instance_double( Gem::Specification, - name: 'is_loaded', - version: 'is_loaded_version', - gem_dir: '/is_loaded/' + name: "is_loaded", + version: "is_loaded_version", + gem_dir: "/is_loaded/" ) ], ) expect(code_provenance.generate).to have(1).item expect(code_provenance.generate.first).to have_attributes( - name: 'is_loaded', - version: 'is_loaded_version', - path: '/is_loaded/', - kind: 'library', + name: "is_loaded", + version: "is_loaded_version", + path: "/is_loaded/", + kind: "library", ) end - it 'returns self' do + it "returns self" do expect(code_provenance.refresh).to be code_provenance end @@ -78,32 +78,32 @@ # I'm not entirely sure if this can happen in end-user apps, but can happen in CI if bundler is configured to # install dependencies into a subfolder of datadog. In particular GitHub Actions does this. - it 'matches the loaded file to the longest matching path' do + it "matches the loaded file to the longest matching path" do code_provenance.refresh( - loaded_files: ['/dd-trace-rb/vendor/bundle/ruby/2.7.0/gems/byebug-11.1.3/lib/byebug.rb'], + loaded_files: ["/dd-trace-rb/vendor/bundle/ruby/2.7.0/gems/byebug-11.1.3/lib/byebug.rb"], loaded_specs: [ instance_double( Gem::Specification, - name: 'datadog', - version: '1.2.3', - gem_dir: '/dd-trace-rb' + name: "datadog", + version: "1.2.3", + gem_dir: "/dd-trace-rb" ), instance_double( Gem::Specification, - name: 'byebug', - version: '4.5.6', - gem_dir: '/dd-trace-rb/vendor/bundle/ruby/2.7.0/gems/byebug-11.1.3' + name: "byebug", + version: "4.5.6", + gem_dir: "/dd-trace-rb/vendor/bundle/ruby/2.7.0/gems/byebug-11.1.3" ) ], ) expect(code_provenance.generate).to have(1).item - expect(code_provenance.generate.first).to have_attributes(name: 'byebug') + expect(code_provenance.generate.first).to have_attributes(name: "byebug") end end end - describe '#generate_json' do + describe "#generate_json" do before do code_provenance.refresh end @@ -162,30 +162,30 @@ ).freeze end - it 'renders the list of loaded libraries as json' do - expect(JSON.parse(code_provenance.generate_json).fetch('v1')).to include( + it "renders the list of loaded libraries as json" do + expect(JSON.parse(code_provenance.generate_json).fetch("v1")).to include( hash_including( - 'name' => 'stdlib', - 'kind' => 'standard library', - 'version' => RUBY_VERSION.to_s, - 'paths' => include(start_with('/')), + "name" => "stdlib", + "kind" => "standard library", + "version" => RUBY_VERSION.to_s, + "paths" => include(start_with("/")), ), hash_including( - 'name' => 'datadog', - 'kind' => 'library', - 'version' => Datadog::VERSION::STRING, - 'paths' => include(start_with('/')), + "name" => "datadog", + "kind" => "library", + "version" => Datadog::VERSION::STRING, + "paths" => include(start_with("/")), ), hash_including( - 'name' => 'rspec-core', - 'kind' => 'library', - 'version' => start_with('3.'), # This will one day need to be bumped for RSpec 4 - 'paths' => include(start_with('/')), + "name" => "rspec-core", + "kind" => "library", + "version" => start_with("3."), # This will one day need to be bumped for RSpec 4 + "paths" => include(start_with("/")), ) ) end - it 'renders the list of loaded libraries using the expected schema' do + it "renders the list of loaded libraries using the expected schema" do JSON::Validator.validate!(code_provenance_schema, code_provenance.generate_json) end @@ -232,30 +232,30 @@ # {"world":2} # {"hello":1} # - describe 'when JSON encoder is broken and skips #to_json' do + describe "when JSON encoder is broken and skips #to_json" do let(:library_class_without_to_json) do Class.new(Datadog::Profiling::Collectors::CodeProvenance::Library) do undef to_json end end - it 'is still able to correctly encode a library instance' do + it "is still able to correctly encode a library instance" do instance = library_class_without_to_json.new( - name: 'datadog', - kind: 'library', - version: '1.2.3', - path: '/example/path/to/datadog/gem', + name: "datadog", + kind: "library", + version: "1.2.3", + path: "/example/path/to/datadog/gem", ) serialized_without_to_json = YAML.dump(instance) # Remove class annotation, so it deserializes back as a hash and not an instance of our class - serialized_without_to_json.gsub!(/---.*/, '---') + serialized_without_to_json.gsub!(/---.*/, "---") expect(YAML.safe_load(serialized_without_to_json)).to eq( - 'name' => 'datadog', - 'kind' => 'library', - 'version' => '1.2.3', - 'paths' => ['/example/path/to/datadog/gem'], + "name" => "datadog", + "kind" => "library", + "version" => "1.2.3", + "paths" => ["/example/path/to/datadog/gem"], ) end end diff --git a/spec/datadog/profiling/collectors/cpu_and_wall_time_worker_spec.rb b/spec/datadog/profiling/collectors/cpu_and_wall_time_worker_spec.rb index 633e1271ac6..07747dcecf5 100644 --- a/spec/datadog/profiling/collectors/cpu_and_wall_time_worker_spec.rb +++ b/spec/datadog/profiling/collectors/cpu_and_wall_time_worker_spec.rb @@ -1,6 +1,6 @@ -require 'datadog/profiling/spec_helper' +require "datadog/profiling/spec_helper" -require 'datadog/profiling/collectors/cpu_and_wall_time_worker' +require "datadog/profiling/collectors/cpu_and_wall_time_worker" RSpec.describe Datadog::Profiling::Collectors::CpuAndWallTimeWorker do before { skip_if_profiling_not_supported(self) } @@ -10,11 +10,19 @@ let(:allocation_profiling_enabled) { false } let(:heap_profiling_enabled) { false } let(:recorder) do - build_stack_recorder(heap_samples_enabled: heap_profiling_enabled, heap_size_enabled: heap_profiling_enabled) + Datadog::Profiling::StackRecorder.for_testing( + alloc_samples_enabled: true, + heap_samples_enabled: heap_profiling_enabled, + heap_size_enabled: heap_profiling_enabled, + **stack_recorder_options, + ) end let(:no_signals_workaround_enabled) { false } let(:timeline_enabled) { false } let(:options) { {} } + let(:stack_recorder_options) { {} } + let(:allocation_counting_enabled) { false } + let(:gvl_profiling_enabled) { false } let(:worker_settings) do { gc_profiling_enabled: gc_profiling_enabled, @@ -22,14 +30,16 @@ thread_context_collector: build_thread_context_collector(recorder), dynamic_sampling_rate_overhead_target_percentage: 2.0, allocation_profiling_enabled: allocation_profiling_enabled, + allocation_counting_enabled: allocation_counting_enabled, + gvl_profiling_enabled: gvl_profiling_enabled, **options } end subject(:cpu_and_wall_time_worker) { described_class.new(**worker_settings, **options) } - describe '.new' do - it 'creates the garbage collection tracepoint in the disabled state' do + describe ".new" do + it "creates the garbage collection tracepoint in the disabled state" do expect(described_class::Testing._native_gc_tracepoint(cpu_and_wall_time_worker)).to_not be_enabled end @@ -58,7 +68,7 @@ end end - describe '#start' do + describe "#start" do let(:expected_worker_initialization_error) { nil } subject(:start) do @@ -70,20 +80,20 @@ cpu_and_wall_time_worker.stop end - it 'creates a new thread' do + it "creates a new thread" do start expect(Thread.list.map(&:name)).to include(described_class.name) end # See https://github.com/puma/puma/blob/32e011ab9e029c757823efb068358ed255fb7ef4/lib/puma/cluster.rb#L353-L359 - it 'marks the new thread as fork-safe' do + it "marks the new thread as fork-safe" do start expect(cpu_and_wall_time_worker.instance_variable_get(:@worker_thread).thread_variable_get(:fork_safe)).to be true end - it 'does not create a second thread if start is called again' do + it "does not create a second thread if start is called again" do start expect(Thread).to_not receive(:new) @@ -91,7 +101,7 @@ cpu_and_wall_time_worker.start end - it 'does not allow other instances of the CpuAndWallTimeWorker to start' do + it "does not allow other instances of the CpuAndWallTimeWorker to start" do start allow(Datadog.logger).to receive(:warn) @@ -101,38 +111,75 @@ exception = try_wait_until(backoff: 0.01) { another_instance.send(:failure_exception) } - expect(exception.message).to include 'another instance' + expect(exception.message).to include "another instance" another_instance.stop end - it 'installs the profiling SIGPROF signal handler' do + it "installs the profiling SIGPROF signal handler" do start expect(described_class::Testing._native_current_sigprof_signal_handler).to be :profiling end - context 'when gc_profiling_enabled is true' do + context "when gc_profiling_enabled is true" do let(:gc_profiling_enabled) { true } - it 'enables the garbage collection tracepoint' do + it "enables the garbage collection tracepoint" do start expect(described_class::Testing._native_gc_tracepoint(cpu_and_wall_time_worker)).to be_enabled end end - context 'when gc_profiling_enabled is false' do + context "when gc_profiling_enabled is false" do let(:gc_profiling_enabled) { false } - it 'does not enable the garbage collection tracepoint' do + it "does not enable the garbage collection tracepoint" do start expect(described_class::Testing._native_gc_tracepoint(cpu_and_wall_time_worker)).to_not be_enabled end end - context 'when a previous signal handler existed' do + context "when gvl_profiling_enabled is true" do + before { skip_if_gvl_profiling_not_supported(self) } + + let(:gvl_profiling_enabled) { true } + + it "enables the gvl profiling hook" do + start + + expect(described_class::Testing._native_gvl_profiling_hook_active(cpu_and_wall_time_worker)).to be true + end + end + + context "when gvl_profiling_enabled is true on an unsupported Ruby" do + before { skip "Behavior does not apply to current Ruby version" if RUBY_VERSION >= "3.2." } + + let(:gvl_profiling_enabled) { true } + + it do + expect(Datadog.logger).to receive(:warn).with(/GVL profiling is not supported/) + proc_called = Queue.new + + cpu_and_wall_time_worker.start(on_failure_proc: proc { proc_called << true }) + + proc_called.pop + end + end + + context "when gvl_profiling_enabled is false" do + let(:gvl_profiling_enabled) { false } + + it "does not enable the gvl profiling hook" do + start + + expect(described_class::Testing._native_gvl_profiling_hook_active(cpu_and_wall_time_worker)).to be false + end + end + + context "when a previous signal handler existed" do before do described_class::Testing._native_install_testing_signal_handler expect(described_class::Testing._native_current_sigprof_signal_handler).to be :other @@ -144,15 +191,15 @@ described_class::Testing._native_remove_testing_signal_handler end - it 'does not start the sampling loop' do + it "does not start the sampling loop" do cpu_and_wall_time_worker.start exception = try_wait_until(backoff: 0.01) { cpu_and_wall_time_worker.send(:failure_exception) } - expect(exception.message).to include 'pre-existing SIGPROF' + expect(exception.message).to include "pre-existing SIGPROF" end - it 'leaves the existing signal handler in place' do + it "leaves the existing signal handler in place" do cpu_and_wall_time_worker.start try_wait_until(backoff: 0.01) { cpu_and_wall_time_worker.send(:failure_exception) } @@ -161,12 +208,12 @@ end end - context 'sampling of active threads' do + context "sampling of active threads" do # This option makes sure our samples are taken via thread interruptions (and not via idle sampling). # See native bits for more details. - let(:options) { { **super(), skip_idle_samples_for_testing: true } } + let(:options) { {**super(), skip_idle_samples_for_testing: true} } - it 'triggers sampling and records the results' do + it "triggers sampling and records the results", :memcheck_valgrind_skip do start all_samples = loop_until do @@ -178,8 +225,9 @@ end it( - 'keeps statistics on how many samples were triggered by the background thread, ' \ - 'as well as how many samples were requested from the VM', + "keeps statistics on how many samples were triggered by the background thread, " \ + "as well as how many samples were requested from the VM", + :memcheck_valgrind_skip, ) do start @@ -192,7 +240,7 @@ sample_count = samples_for_thread(all_samples, Thread.current) - .map { |it| it.values.fetch(:'cpu-samples') } + .map { |it| it.values.fetch(:"cpu-samples") } .reduce(:+) stats = cpu_and_wall_time_worker.stats @@ -205,7 +253,7 @@ end end - it 'keeps statistics on how long sampling is taking' do + it "keeps statistics on how long sampling is taking" do start try_wait_until do @@ -229,11 +277,11 @@ expect(sampling_time_ns_max).to be < one_second_in_ns, "A single sample should not take longer than 1s, #{stats}" end - context 'with allocation profiling enabled' do + context "with allocation profiling enabled" do # We need this otherwise allocations_during_sample will never change let(:allocation_profiling_enabled) { true } - it 'does not allocate Ruby objects during the regular operation of sampling' do + it "does not allocate Ruby objects during the regular operation of sampling" do # The intention of this test is to warn us if we accidentally trigger object allocations during "happy path" # sampling. # Note that when something does go wrong during sampling, we do allocate exceptions (and then raise them). @@ -253,7 +301,7 @@ end end - it 'records garbage collection cycles' do + it "records garbage collection cycles" do start described_class::Testing._native_trigger_sample @@ -268,22 +316,22 @@ all_samples = samples_from_pprof(recorder.serialize!) - gc_sample = all_samples.find { |sample| sample.labels[:'gc cause'] == 'GC.start()' } + gc_sample = all_samples.find { |sample| sample.labels[:"gc cause"] == "GC.start()" } expect(gc_sample.labels).to match a_hash_including( - :state => 'had cpu', - :'thread id' => 'GC', - :'thread name' => 'Garbage Collection', - :event => 'gc', - :'gc reason' => an_instance_of(String), - :'gc cause' => 'GC.start()', - :'gc type' => 'major', + state: "had cpu", + "thread id": "GC", + "thread name": "Garbage Collection", + event: "gc", + "gc reason": an_instance_of(String), + "gc cause": "GC.start()", + "gc type": "major", ) - expect(gc_sample.locations.first.path).to eq 'Garbage Collection' + expect(gc_sample.locations.first.path).to eq "Garbage Collection" end - context 'when the background thread dies without cleaning up (after Ruby forks)' do - it 'allows the CpuAndWallTimeWorker to be restarted' do + context "when the background thread dies without cleaning up (after Ruby forks)" do + it "allows the CpuAndWallTimeWorker to be restarted" do start expect_in_fork do @@ -292,7 +340,7 @@ end end - it 'allows a different instance of the CpuAndWallTimeWorker to be started' do + it "allows a different instance of the CpuAndWallTimeWorker to be started" do start expect_in_fork do @@ -303,7 +351,7 @@ end end - it 'disables the existing gc_tracepoint before starting another CpuAndWallTimeWorker' do + it "disables the existing gc_tracepoint before starting another CpuAndWallTimeWorker" do start expect(described_class::Testing._native_gc_tracepoint(cpu_and_wall_time_worker)).to be_enabled @@ -320,7 +368,7 @@ end end - context 'when main thread is sleeping but a background thread is working' do + context "when main thread is sleeping but a background thread is working", :memcheck_valgrind_skip do let(:ready_queue) { Queue.new } let(:background_thread) do Thread.new do @@ -335,7 +383,7 @@ background_thread.join end - it 'is able to sample even when the main thread is sleeping' do + it "is able to sample even when the main thread is sleeping" do background_thread ready_queue.pop @@ -348,14 +396,14 @@ background_thread.kill result = samples_for_thread(samples_from_pprof_without_gc_and_overhead(recorder.serialize!), Thread.current) - sample_count = result.map { |it| it.values.fetch(:'cpu-samples') }.reduce(:+) + sample_count = result.map { |it| it.values.fetch(:"cpu-samples") }.reduce(:+) stats = cpu_and_wall_time_worker.stats trigger_sample_attempts = stats.fetch(:trigger_sample_attempts) signal_handler_enqueued_sample = stats.fetch(:signal_handler_enqueued_sample) - expect(signal_handler_enqueued_sample.to_f / trigger_sample_attempts).to (be >= 0.6), \ + expect(signal_handler_enqueued_sample.to_f / trigger_sample_attempts).to (be >= 0.6), "Expected at least 60% of signals to be delivered to correct thread (#{stats})" # Sanity checking @@ -367,14 +415,160 @@ expect(sample_count).to be >= 5, "sample_count: #{sample_count}, stats: #{stats}" expect(trigger_sample_attempts).to be >= sample_count end + + context "when GVL profiling is enabled" do + before { skip_if_gvl_profiling_not_supported(self) } + + let(:gvl_profiling_enabled) { true } + + let(:timeline_enabled) { true } + let(:ready_queue_2) { Queue.new } + let(:background_thread_affected_by_gvl_contention) do + Thread.new do + ready_queue_2 << true + loop { Thread.pass } + end + end + + after do + background_thread_affected_by_gvl_contention.kill + background_thread_affected_by_gvl_contention.join + end + + it "records Waiting for GVL samples" do + background_thread_affected_by_gvl_contention + ready_queue_2.pop + + start + wait_until_running + + background_thread + ready_queue.pop + + sleep 0.2 + + threads = Thread.list + + cpu_and_wall_time_worker.stop + + background_thread.kill + background_thread_affected_by_gvl_contention.kill + + samples = samples_for_thread( + samples_from_pprof_without_gc_and_overhead(recorder.serialize!), + background_thread_affected_by_gvl_contention + ).sort_by { |s| s.labels.fetch(:end_timestamp_ns) } + + thread_activity_time = + samples + .group_by { |s| s.labels[:state] } + .map { |state, state_samples| [state, state_samples.sum { |s| s.values.fetch(:"wall-time") }] }.to_h + + # Because the background_thread_affected_by_gvl_contention starts BEFORE the profiler, the first few samples + # will have a sequence of unknown states because the profiler may have missed the beginning of the + # Waiting for GVL (and cannot categorize the state yet). + # + # In these cases, the pattern will be "unknown (one or more times), had cpu, waiting for gvl". + # + # In rare cases, we observe the background_thread_affected_by_gvl_contention just as it's starting the + # Waiting for GVL. Because "starting the Waiting for GVL" still uses a bit of CPU, we'll see + # "unknown, had cpu, unknown (one or more times), had cpu, waiting for gvl". + # + # So that the below assertions make sense (and are not flaky), we drop these first few samples from our + # consideration + + found_first_cpu = false + missed_by_profiler_time = + samples + .take_while do |s| + if s.labels[:state] == "unknown" + true + elsif s.labels[:state] == "had cpu" && !found_first_cpu + found_first_cpu = true + true + end + end.sum { |sample| sample.values.fetch(:"wall-time") } + + total_time = samples.sum { |sample| sample.values.fetch(:"wall-time") } - missed_by_profiler_time + waiting_for_gvl_samples = samples.select { |sample| sample.labels[:state] == "waiting for gvl" } + waiting_for_gvl_time = waiting_for_gvl_samples.sum { |sample| sample.values.fetch(:"wall-time") } + + debug_failures = { + thread_activity_time: thread_activity_time, + missed_by_profiler_time: missed_by_profiler_time, + total_time: total_time, + waiting_for_gvl_time: waiting_for_gvl_time, + sample_states: samples.map { |s| s.labels[:state] }, + samples: samples.map { |s| [s.values, s.labels] }, + threads: threads.map { |t| [t.inspect, t.object_id] } + } + + # The background thread should spend almost all of its time waiting to run (since when it gets to run + # it just passes and starts waiting) + + # This test should run for at least 200ms, which is how long we sleep for + # (unless somehow the missed_by_profiler_time is too big?) + expect(total_time).to be >= 200_000_000 + expect(waiting_for_gvl_time).to be < total_time + expect(waiting_for_gvl_time).to be_within(5).percent_of(total_time), \ + "Expected waiting_for_gvl_time to be close to total_time, debug_failures: #{debug_failures}" + + expect(cpu_and_wall_time_worker.stats).to match( + hash_including( + after_gvl_running: be > 0, + gvl_sampling_time_ns_min: be > 0, + gvl_sampling_time_ns_max: be > 0, + gvl_sampling_time_ns_total: be > 0, + gvl_sampling_time_ns_avg: be > 0, + ) + ) + end + + context "when 'Waiting for GVL' periods are below waiting_for_gvl_threshold_ns" do + let(:options) do + ten_seconds_as_ns = 1_000_000_000 + collector = build_thread_context_collector(recorder, waiting_for_gvl_threshold_ns: ten_seconds_as_ns) + + {thread_context_collector: collector} + end + + it "does not trigger extra samples" do + background_thread_affected_by_gvl_contention + ready_queue_2.pop + + start + wait_until_running + + sleep 0.1 + background_thread_affected_by_gvl_contention.kill + + cpu_and_wall_time_worker.stop + + # Note: There may still be "Waiting for GVL" samples in the output, but these samples will come from the + # periodic cpu/wall-sampling, not samples directly triggered by the end of a "Waiting for GVL" period. + + expect(cpu_and_wall_time_worker.stats.fetch(:gvl_dont_sample)).to be > 0 + + expect(cpu_and_wall_time_worker.stats).to match( + hash_including( + after_gvl_running: 0, + gvl_sampling_time_ns_min: nil, + gvl_sampling_time_ns_max: nil, + gvl_sampling_time_ns_total: nil, + gvl_sampling_time_ns_avg: nil, + ) + ) + end + end + end end - context 'when all threads are sleeping (no thread holds the Global VM Lock)' do - let(:options) { { dynamic_sampling_rate_enabled: false } } + context "when all threads are sleeping (no thread holds the Global VM Lock)" do + let(:options) { {dynamic_sampling_rate_enabled: false} } before { expect(Datadog.logger).to receive(:warn).with(/dynamic sampling rate disabled/) } - it 'is able to sample even when all threads are sleeping' do + it "is able to sample even when all threads are sleeping" do start wait_until_running @@ -384,15 +578,15 @@ all_samples = samples_from_pprof_without_gc_and_overhead(recorder.serialize!) result = samples_for_thread(all_samples, Thread.current) - sample_count = result.map { |it| it.values.fetch(:'cpu-samples') }.reduce(:+) + sample_count = result.map { |it| it.values.fetch(:"cpu-samples") }.reduce(:+) stats = cpu_and_wall_time_worker.stats - debug_failures = { thread_list: Thread.list, all_samples: all_samples } + debug_failures = {thread_list: Thread.list, all_samples: all_samples} trigger_sample_attempts = stats.fetch(:trigger_sample_attempts) simulated_signal_delivery = stats.fetch(:simulated_signal_delivery) - expect(simulated_signal_delivery.to_f / trigger_sample_attempts).to (be >= 0.8), \ + expect(simulated_signal_delivery.to_f / trigger_sample_attempts).to (be >= 0.8), "Expected at least 80% of signals to be simulated, stats: #{stats}, debug_failures: #{debug_failures}" # Sanity checking @@ -403,7 +597,7 @@ # expect(sample_count).to be >= 8, "sample_count: #{sample_count}, stats: #{stats}, debug_failures: #{debug_failures}" - if RUBY_VERSION >= '3.3.0' + if RUBY_VERSION >= "3.3.0" expect(trigger_sample_attempts).to be >= sample_count else # @ivoanjo: We've seen this assertion become flaky once in CI for Ruby 3.1, where @@ -423,16 +617,16 @@ # To avoid the flakiness, I've added a dummy margin here but... yeah in practice this can happen as many times # as we try to sample. margin = 1 - expect(trigger_sample_attempts).to (be >= (sample_count - margin)), \ + expect(trigger_sample_attempts).to (be >= (sample_count - margin)), "sample_count: #{sample_count}, stats: #{stats}, debug_failures: #{debug_failures}" end end end - context 'when using the no signals workaround' do + context "when using the no signals workaround" do let(:no_signals_workaround_enabled) { true } - it 'always simulates signal delivery' do + it "always simulates signal delivery" do start all_samples = try_wait_until do @@ -444,7 +638,7 @@ sample_count = samples_for_thread(all_samples, Thread.current) - .map { |it| it.values.fetch(:'cpu-samples') } + .map { |it| it.values.fetch(:"cpu-samples") } .reduce(:+) # Since we're reading the stats AFTER the worker is stopped, we expect a consistent view, as otherwise we @@ -475,20 +669,20 @@ end end - context 'when allocation profiling is enabled' do + context "when allocation profiling is enabled" do let(:allocation_profiling_enabled) { true } let(:test_num_allocated_object) { 123 } # Explicitly disable dynamic sampling in these tests so we can deterministically verify # sample counts. - let(:options) { { dynamic_sampling_rate_enabled: false } } + let(:options) { {dynamic_sampling_rate_enabled: false} } before do allow(Datadog.logger).to receive(:warn) allow(Datadog.logger).to receive(:warn).with(/dynamic sampling rate disabled/) end - it 'records allocated objects' do - stub_const('CpuAndWallTimeWorkerSpec::TestStruct', Struct.new(:foo)) + it "records allocated objects" do + stub_const("CpuAndWallTimeWorkerSpec::TestStruct", Struct.new(:foo)) start @@ -499,16 +693,17 @@ allocation_sample = samples_for_thread(samples_from_pprof(recorder.serialize!), Thread.current) - .find { |s| s.labels[:'allocation class'] == 'CpuAndWallTimeWorkerSpec::TestStruct' } + .find { |s| s.labels[:"allocation class"] == "CpuAndWallTimeWorkerSpec::TestStruct" } - expect(allocation_sample.values).to include(:'alloc-samples' => test_num_allocated_object) + expect(allocation_sample.values).to include("alloc-samples": test_num_allocated_object) expect(allocation_sample.locations.first.lineno).to eq allocation_line end - context 'with dynamic_sampling_rate_enabled' do - let(:options) { { dynamic_sampling_rate_enabled: true } } - it 'keeps statistics on how allocation sampling is doing' do - stub_const('CpuAndWallTimeWorkerSpec::TestStruct', Struct.new(:foo)) + context "with dynamic_sampling_rate_enabled" do + let(:options) { {dynamic_sampling_rate_enabled: true} } + + it "keeps statistics on how allocation sampling is doing" do + stub_const("CpuAndWallTimeWorkerSpec::TestStruct", Struct.new(:foo)) start @@ -536,9 +731,45 @@ one_second_in_ns = 1_000_000_000 expect(sampling_time_ns_max).to be < one_second_in_ns, "A single sample should not take longer than 1s, #{stats}" end + + # When large numbers of objects are allocated, the dynamic sampling rate kicks in, and we don't sample every + # object. + # We then assign a weight to every sample to compensate for this; to avoid bias, we have a limit on this weight, + # and we clamp it if it goes over the limit. + # But the total amount of allocations recorded should match the number we observed, and thus we record the + # remainder above the clamped value as a separate "Skipped Samples" step. + context "with a high allocation rate", :memcheck_valgrind_skip do + let(:options) { {**super(), dynamic_sampling_rate_overhead_target_percentage: 0.1} } + let(:thread_that_allocates_as_fast_as_possible) { Thread.new { loop { BasicObject.new } } } + + after do + thread_that_allocates_as_fast_as_possible.kill + thread_that_allocates_as_fast_as_possible.join + end + + it "records skipped allocation samples when weights are clamped" do + start + + # Trigger thread creation + thread_that_allocates_as_fast_as_possible + + allocation_samples = try_wait_until do + samples = samples_from_pprof(recorder.serialize!).select { |it| it.values[:"alloc-samples"] > 0 } + samples if samples.any? { |it| it.labels[:"thread name"] == "Skipped Samples" } + end + + # Stop thread earlier, since it will slow down the Ruby VM + thread_that_allocates_as_fast_as_possible.kill + thread_that_allocates_as_fast_as_possible.join + + cpu_and_wall_time_worker.stop + + expect(allocation_samples).to_not be_empty + end + end end - context 'when sampling optimized Ruby strings' do + context "when sampling optimized Ruby strings" do # Regression test: Some internal Ruby classes use a `rb_str_tmp_frozen_acquire` function which allocates a # weird "intermediate" string object that has its class pointer set to 0. # @@ -546,22 +777,22 @@ # # In practice, this test is actually validating behavior of the `ThreadContext` collector, but we can only # really trigger this situation when using the allocation tracepoint, which lives in the `CpuAndWallTimeWorker`. - it 'does not crash' do + it "does not crash" do start - expect(Time.new.strftime(String.new('Potato'))).to_not be nil + expect(Time.now.strftime(+"Potato")).to_not be nil end end - context 'T_IMEMO internal VM objects' do + context "T_IMEMO internal VM objects" do let(:something_that_triggers_creation_of_imemo_objects) do - eval('proc { def self.foo; rand; end; foo }.call') # rubocop:disable Style/EvalWithLocation + eval("proc { def self.foo; rand; end; foo }.call", binding, __FILE__, __LINE__) end - context 'on Ruby 2.x' do - before { skip 'Behavior only applies on Ruby 2.x' unless RUBY_VERSION.start_with?('2.') } + context "on Ruby 2.x" do + before { skip "Behavior only applies on Ruby 2.x" unless RUBY_VERSION.start_with?("2.") } - it 'records internal VM objects, not including their specific kind' do + it "records internal VM objects, not including their specific kind" do start something_that_triggers_creation_of_imemo_objects @@ -570,16 +801,16 @@ imemo_samples = samples_for_thread(samples_from_pprof(recorder.serialize!), Thread.current) - .select { |s| s.labels.fetch(:'allocation class', '') == '(VM Internal, T_IMEMO)' } + .select { |s| s.labels.fetch(:"allocation class", "") == "(VM Internal, T_IMEMO)" } expect(imemo_samples.size).to be >= 1 # We should always get some T_IMEMO objects end end - context 'on Ruby 3.x' do - before { skip 'Behavior only applies on Ruby 3.x' if RUBY_VERSION.start_with?('2.') } + context "on Ruby 3.x" do + before { skip "Behavior only applies on Ruby 3.x" if RUBY_VERSION.start_with?("2.") } - it 'records internal VM objects, including their specific kind' do + it "records internal VM objects, including their specific kind" do start something_that_triggers_creation_of_imemo_objects @@ -588,13 +819,13 @@ imemo_samples = samples_for_thread(samples_from_pprof(recorder.serialize!), Thread.current) - .select { |s| s.labels.fetch(:'allocation class', '').start_with?('(VM Internal, T_IMEMO') } + .select { |s| s.labels.fetch(:"allocation class", "").start_with?("(VM Internal, T_IMEMO") } expect(imemo_samples.size).to be >= 1 # We should always get some T_IMEMO objects # To avoid coupling too much on VM internals we check that at each of the found allocation classes are # a known member of the imemo_type enum (even if we don't exactly match on which one) - expect(imemo_samples.map { |s| s.labels.fetch(:'allocation class') }).to all( + expect(imemo_samples.map { |s| s.labels.fetch(:"allocation class") }).to all( match( /(env|cref|svar|throw_data|ifunc|memo|ment|iseq|tmpbuf|ast|parser_strterm|callinfo|callcache|constcache)/ ) @@ -604,11 +835,11 @@ end end - context 'when allocation sampling is disabled' do + context "when allocation sampling is disabled" do let(:allocation_profiling_enabled) { false } - it 'does not record allocations' do - stub_const('CpuAndWallTimeWorkerSpec::TestStruct', Struct.new(:foo)) + it "does not record allocations" do + stub_const("CpuAndWallTimeWorkerSpec::TestStruct", Struct.new(:foo)) start @@ -616,25 +847,37 @@ cpu_and_wall_time_worker.stop - expect(samples_from_pprof(recorder.serialize!).map(&:values)).to all(include(:'alloc-samples' => 0)) + expect(samples_from_pprof(recorder.serialize!).map(&:values)).to all(include("alloc-samples": 0)) end end - context 'when heap profiling is enabled' do + context "when heap profiling is enabled" do let(:allocation_profiling_enabled) { true } let(:heap_profiling_enabled) { true } let(:test_num_allocated_object) { 123 } # Explicitly disable dynamic sampling in these tests so we can deterministically verify # sample counts. - let(:options) { { dynamic_sampling_rate_enabled: false } } + let(:options) { {dynamic_sampling_rate_enabled: false} } before do + skip "Heap profiling is only supported on Ruby >= 2.7" if RUBY_VERSION < "2.7" allow(Datadog.logger).to receive(:warn) expect(Datadog.logger).to receive(:warn).with(/dynamic sampling rate disabled/) end - it 'records live heap objects' do - stub_const('CpuAndWallTimeWorkerSpec::TestStruct', Struct.new(:foo)) + after do |example| + # This is here to facilitate troubleshooting when this test fails. Otherwise + # it's very hard to understand what may be happening. + if example.exception + cpu_and_wall_time_worker.stop + + puts("Heap recorder debugging info:") + puts(Datadog::Profiling::StackRecorder::Testing._native_debug_heap_recorder(recorder)) + end + end + + it "records live heap objects" do + stub_const("CpuAndWallTimeWorkerSpec::TestStruct", Struct.new(:foo)) start @@ -653,9 +896,9 @@ first_frame = sample.locations.first first_frame.lineno == allocation_line && first_frame.path == __FILE__ && - first_frame.base_label == 'new' && - sample.labels[:'allocation class'] == 'CpuAndWallTimeWorkerSpec::TestStruct' && - (sample.values[:'heap-live-samples'] || 0) > 0 + first_frame.base_label == "new" && + sample.labels[:"allocation class"] == "CpuAndWallTimeWorkerSpec::TestStruct" && + (sample.values[:"heap-live-samples"] || 0) > 0 } # We can't just use find here because samples might have different gc age labels @@ -664,20 +907,92 @@ relevant_samples = samples_from_pprof(recorder.serialize!) .select(&test_struct_heap_sample) - total_samples = relevant_samples.map { |sample| sample.values[:'heap-live-samples'] || 0 }.reduce(:+) - total_size = relevant_samples.map { |sample| sample.values[:'heap-live-size'] || 0 }.reduce(:+) + total_samples = relevant_samples.map { |sample| sample.values[:"heap-live-samples"] || 0 }.reduce(:+) + total_size = relevant_samples.map { |sample| sample.values[:"heap-live-size"] || 0 }.reduce(:+) expect(total_samples).to eq test_num_allocated_object # 40 is the size of a basic object and we have test_num_allocated_object of them expect(total_size).to eq test_num_allocated_object * 40 end + + describe "heap cleanup after GC" do + let(:options) { {dynamic_sampling_rate_enabled: false} } + + let(:cleared_object_id) do + stub_const("CpuAndWallTimeWorkerSpec::TestStruct", Struct.new(:foo)) + + start + + # Force a full GC to make sure there's no incremental GC going on at this point + GC.start + + test_object = CpuAndWallTimeWorkerSpec::TestStruct.new + test_object_id = test_object.object_id + + expect( + Datadog::Profiling::StackRecorder::Testing._native_is_object_recorded?(recorder, test_object_id) + ).to be true + + # Let's replace the test_object reference with another object, so that the original one can be GC'd + test_object = Object.new # rubocop:disable Lint/UselessAssignment + + # Force an update to happen on the next GC + Datadog::Profiling::StackRecorder::Testing._native_heap_recorder_reset_last_update(recorder) + + GC.start + + test_object_id + end + + context "when gc_profiling_enabled is enabled" do + let(:gc_profiling_enabled) { true } + + context "when heap_clean_after_gc_enabled is enabled in the recorder" do + let(:stack_recorder_options) { {**super(), heap_clean_after_gc_enabled: true} } + + it "removes live heap objects after GCs" do + expect( + Datadog::Profiling::StackRecorder::Testing._native_is_object_recorded?(recorder, cleared_object_id) + ).to be false + end + end + + context "when heap_clean_after_gc_enabled is disabled in the recorder" do + let(:stack_recorder_options) { {**super(), heap_clean_after_gc_enabled: false} } + + it "does not remove live heap objects after GCs" do + expect( + Datadog::Profiling::StackRecorder::Testing._native_is_object_recorded?(recorder, cleared_object_id) + ).to be true + end + end + end + + context "when GC profiling is disabled" do + let(:gc_profiling_enabled) { false } + + it "does not remove live heap objects after minor GCs" do + # The object is still being tracked! + expect( + Datadog::Profiling::StackRecorder::Testing._native_is_object_recorded?(recorder, cleared_object_id) + ).to be true + + # Sanity checking: It stops being tracked after a serialization, proving it was indeed dead, we just hadn't + # updated our state yet + recorder.serialize! + expect( + Datadog::Profiling::StackRecorder::Testing._native_is_object_recorded?(recorder, cleared_object_id) + ).to be false + end + end + end end - context 'when heap profiling is disabled' do + context "when heap profiling is disabled" do let(:heap_profiling_enabled) { false } - it 'does not record heap samples' do - stub_const('CpuAndWallTimeWorkerSpec::TestStruct', Struct.new(:foo)) + it "does not record heap samples" do + stub_const("CpuAndWallTimeWorkerSpec::TestStruct", Struct.new(:foo)) start @@ -685,11 +1000,11 @@ cpu_and_wall_time_worker.stop - expect(samples_from_pprof(recorder.serialize!).select { |s| s.values.key?(:'heap-live-samples') }).to be_empty + expect(samples_from_pprof(recorder.serialize!).select { |s| s.values.key?(:"heap-live-samples") }).to be_empty end end - context 'Process::Waiter crash regression tests' do + context "Process::Waiter crash regression tests" do # On Ruby 2.3 to 2.6, there's a crash when accessing instance variables of the `process_waiter_thread`, # see https://bugs.ruby-lang.org/issues/17807 . # @@ -700,7 +1015,7 @@ # @ivoanjo: This affected the old profiler at some point (but never affected the new profiler), but I think # it's useful to keep around so that we don't regress if we decide to start reading/writing some # info to thread objects to implement some future feature. - it 'can sample an instance of Process::Waiter without crashing' do + it "can sample an instance of Process::Waiter without crashing" do forked_process = fork { sleep } process_waiter_thread = Process.detach(forked_process) @@ -715,16 +1030,16 @@ sample = samples_for_thread(all_samples, process_waiter_thread).first - expect(sample.locations.first.path).to eq 'In native code' + expect(sample.locations.first.path).to eq "In native code" - Process.kill('TERM', forked_process) + Process.kill("TERM", forked_process) process_waiter_thread.join end end - context 'when the _native_sampling_loop terminates with an exception' do - it 'calls the on_failure_proc' do - expect(described_class).to receive(:_native_sampling_loop).and_raise(StandardError.new('Simulated error')) + context "when the _native_sampling_loop terminates with an exception" do + it "calls the on_failure_proc" do + expect(described_class).to receive(:_native_sampling_loop).and_raise(StandardError.new("Simulated error")) expect(Datadog.logger).to receive(:warn) proc_called = Queue.new @@ -736,16 +1051,16 @@ end end - describe 'Ractor safety' do + describe "Ractor safety" do before do - skip 'Behavior does not apply to current Ruby version' if RUBY_VERSION < '3.' + skip "Behavior does not apply to current Ruby version" if RUBY_VERSION < "3." # See native_extension_spec.rb for more details on the issues we saw on 3.0 - skip 'Ruby 3.0 Ractors are too buggy to run this spec' if RUBY_VERSION.start_with?('3.0.') + skip "Ruby 3.0 Ractors are too buggy to run this spec" if RUBY_VERSION.start_with?("3.0.") end - shared_examples_for 'does not trigger a sample' do |run_ractor| - it 'does not trigger a sample' do + shared_examples_for "does not trigger a sample" do |run_ractor| + it "does not trigger a sample" do cpu_and_wall_time_worker.start wait_until_running @@ -755,13 +1070,13 @@ samples_from_ractor = samples_from_pprof(recorder.serialize!) - .select { |it| it.labels[:'thread name'] == 'background ractor' } + .select { |it| it.labels[:"thread name"] == "background ractor" } expect(samples_from_ractor).to be_empty end end - context 'when called from a background ractor', :ractors => true do + context "when called from a background ractor", ractors: true do # Even though we're not testing it explicitly, the GC profiling hooks can sometimes be called when running these # specs. Unfortunately, there's a VM crash in that case as well -- https://bugs.ruby-lang.org/issues/18464 -- # so this must be disabled when interacting with Ractors. @@ -769,24 +1084,24 @@ # ...same thing for the tracepoint for allocation counting/profiling :( let(:allocation_profiling_enabled) { false } - describe 'handle_sampling_signal' do - include_examples 'does not trigger a sample', + describe "handle_sampling_signal" do + include_examples "does not trigger a sample", ( proc do Ractor.new do - Thread.current.name = 'background ractor' + Thread.current.name = "background ractor" Datadog::Profiling::Collectors::CpuAndWallTimeWorker::Testing._native_simulate_handle_sampling_signal end.take end ) end - describe 'sample_from_postponed_job' do - include_examples 'does not trigger a sample', + describe "sample_from_postponed_job" do + include_examples "does not trigger a sample", ( proc do Ractor.new do - Thread.current.name = 'background ractor' + Thread.current.name = "background ractor" Datadog::Profiling::Collectors::CpuAndWallTimeWorker::Testing._native_simulate_sample_from_postponed_job end.take end @@ -799,11 +1114,11 @@ end end - describe '#stop' do + describe "#stop" do subject(:stop) { cpu_and_wall_time_worker.stop } - context 'when called immediately after start' do - it 'stops the CpuAndWallTimeWorker' do + context "when called immediately after start" do + it "stops the CpuAndWallTimeWorker" do cpu_and_wall_time_worker.start stop @@ -812,41 +1127,53 @@ end end - context 'after starting' do + context "after starting" do before do + skip_if_gvl_profiling_not_supported(self) if gvl_profiling_enabled + cpu_and_wall_time_worker.start wait_until_running end - it 'shuts down the background thread' do + it "shuts down the background thread" do stop expect(Thread.list.map(&:name)).to_not include(described_class.name) end - it 'replaces the profiling sigprof signal handler with an empty one' do + it "replaces the profiling sigprof signal handler with an empty one" do stop expect(described_class::Testing._native_current_sigprof_signal_handler).to be :empty end - it 'disables the garbage collection tracepoint' do + it "disables the garbage collection tracepoint" do stop expect(described_class::Testing._native_gc_tracepoint(cpu_and_wall_time_worker)).to_not be_enabled end - it 'leaves behind an empty SIGPROF signal handler' do + it "leaves behind an empty SIGPROF signal handler" do stop # Without an empty SIGPROF signal handler (e.g. with no signal handler) the following command will make the VM # instantly terminate with a confusing "Profiling timer expired" message left behind. (This message doesn't # come from us -- it's the default message for an unhandled SIGPROF. Pretty confusing UNIX/POSIX behavior...) - Process.kill('SIGPROF', Process.pid) + Process.kill("SIGPROF", Process.pid) + end + + context "when GVL profiling is enabled" do + let(:gvl_profiling_enabled) { true } + + it "disables the GVL profiling hook" do + expect { stop } + .to change { described_class::Testing._native_gvl_profiling_hook_active(cpu_and_wall_time_worker) } + .from(true).to(false) + end end end - it 'unblocks SIGPROF signal handling from the worker thread' do + it "unblocks SIGPROF signal handling from the worker thread" do inner_ran = false expect(described_class).to receive(:_native_sampling_loop).and_wrap_original do |native, *args| @@ -865,21 +1192,15 @@ end end - describe '#reset_after_fork' do + describe "#reset_after_fork" do subject(:reset_after_fork) { cpu_and_wall_time_worker.reset_after_fork } - let(:thread_context_collector) do - Datadog::Profiling::Collectors::ThreadContext.new( - recorder: recorder, - max_frames: 400, - tracer: nil, - endpoint_collection_enabled: endpoint_collection_enabled, - timeline_enabled: timeline_enabled, - ) - end - let(:options) { { thread_context_collector: thread_context_collector } } + let(:thread_context_collector) { build_thread_context_collector(recorder) } + let(:options) { {thread_context_collector: thread_context_collector} } before do + skip_if_gvl_profiling_not_supported(self) if gvl_profiling_enabled + # This is important -- the real #reset_after_fork must not be called concurrently with the worker running, # which we do in this spec to make it easier to test the reset_after_fork behavior allow(thread_context_collector).to receive(:reset_after_fork) @@ -892,13 +1213,23 @@ cpu_and_wall_time_worker.stop end - it 'disables the gc_tracepoint' do + it "disables the gc_tracepoint" do expect { reset_after_fork } .to change { described_class::Testing._native_gc_tracepoint(cpu_and_wall_time_worker).enabled? } .from(true).to(false) end - it 'resets the CpuAndWallTime collector only after disabling the tracepoint' do + context "when gvl_profiling_enabled is true" do + let(:gvl_profiling_enabled) { true } + + it "disables the gvl profiling hook" do + expect { reset_after_fork } + .to change { described_class::Testing._native_gvl_profiling_hook_active(cpu_and_wall_time_worker) } + .from(true).to(false) + end + end + + it "resets the CpuAndWallTime collector only after disabling the tracepoint" do expect(thread_context_collector).to receive(:reset_after_fork) do expect(described_class::Testing._native_gc_tracepoint(cpu_and_wall_time_worker)).to_not be_enabled end @@ -906,7 +1237,7 @@ reset_after_fork end - it 'resets all stats' do + it "resets all stats" do cpu_and_wall_time_worker.stop reset_after_fork @@ -939,19 +1270,25 @@ allocation_sampling_time_ns_avg: nil, allocation_sampler_snapshot: nil, allocations_during_sample: nil, + after_gvl_running: 0, + gvl_dont_sample: 0, + gvl_sampling_time_ns_min: nil, + gvl_sampling_time_ns_max: nil, + gvl_sampling_time_ns_total: nil, + gvl_sampling_time_ns_avg: nil, } ) end end - describe '._native_allocation_count' do + describe "._native_allocation_count" do subject(:_native_allocation_count) { described_class._native_allocation_count } - context 'when CpuAndWallTimeWorker has not been started' do + context "when CpuAndWallTimeWorker has not been started" do it { is_expected.to be nil } end - context 'when CpuAndWallTimeWorker has been started' do + context "when CpuAndWallTimeWorker has been started" do before do cpu_and_wall_time_worker.start wait_until_running @@ -961,14 +1298,15 @@ cpu_and_wall_time_worker.stop end - context 'when allocation profiling is enabled' do + context "when allocation profiling and allocation counting is enabled" do let(:allocation_profiling_enabled) { true } + let(:allocation_counting_enabled) { true } - it 'always returns a >= 0 value' do + it "always returns a >= 0 value" do expect(described_class._native_allocation_count).to be >= 0 end - it 'returns the exact number of allocations between two calls of the method' do + it "returns the exact number of allocations between two calls of the method" do # In rare situations (once every few thousand runs) we've witnessed this test failing with # more than 100 allocations being reported. With some extra debugging logs and callstack # dumps we've tracked the extra allocations to the calling of finalizers with complex @@ -986,28 +1324,27 @@ # there's a small chance that a GC gets triggered in between the two # `_native_allocation_count` calls and contributes with unexpected Array allocations to # the allocation count. To prevent this, we'll explicitly disable GC around these checks. - begin - GC.disable - # To get the exact expected number of allocations, we run through the ropes once so - # Ruby can create and cache all it needs to and hopefully flush any pending finalizer - # executions that could affect our expectations - described_class._native_allocation_count - new_object = proc { Object.new } - 1.times(&new_object) - described_class._native_allocation_count - - # Here we do the actual work we care about - before_allocations = described_class._native_allocation_count - 100.times(&new_object) - after_allocations = described_class._native_allocation_count - expect(after_allocations - before_allocations).to be 100 - ensure - GC.enable - end + GC.disable + # To get the exact expected number of allocations, we run through the ropes once so + # Ruby can create and cache all it needs to and hopefully flush any pending finalizer + # executions that could affect our expectations + described_class._native_allocation_count + new_object = proc { Object.new } + 1.times(&new_object) + described_class._native_allocation_count + + # Here we do the actual work we care about + before_allocations = described_class._native_allocation_count + 100.times(&new_object) + after_allocations = described_class._native_allocation_count + + expect(after_allocations - before_allocations).to be 100 + ensure + GC.enable end - it 'returns different numbers of allocations for different threads' do + it "returns different numbers of allocations for different threads" do # To get the exact expected number of allocations, we run this once before so that Ruby can create and cache all # it needs to new_object = proc { Object.new } @@ -1040,11 +1377,22 @@ expect(after_t1 - before_t1).to be 100 expect(after_allocations - before_allocations).to be < 10 end + + context "when allocation profiling is enabled but allocation counting is disabled" do + let(:allocation_counting_enabled) { false } + + it "always returns a nil value" do + 100.times { Object.new } + + expect(described_class._native_allocation_count).to be nil + end + end end - context 'when allocation profiling is disabled' do + context "when allocation profiling is disabled" do let(:allocation_profiling_enabled) { false } - it 'always returns a nil value' do + + it "always returns a nil value" do 100.times { Object.new } expect(described_class._native_allocation_count).to be nil @@ -1053,10 +1401,10 @@ end end - describe '#stats_reset_not_thread_safe' do + describe "#stats_reset_not_thread_safe" do let(:allocation_profiling_enabled) { true } - it 'returns accumulated stats and resets them back to 0' do + it "returns accumulated stats and resets them back to 0" do cpu_and_wall_time_worker.start wait_until_running @@ -1066,11 +1414,11 @@ # prematurely stop waiting as soon as we get an allocation sample # which would result in us reaching our expectation with cpu_sampled = 0 samples = samples_from_pprof_without_gc_and_overhead(recorder.serialize!) - .reject { |sample| sample.values[:'alloc-samples'] > 0 } + .reject { |sample| sample.values[:"alloc-samples"] > 0 } samples if samples.any? end - stub_const('CpuAndWallTimeWorkerSpec::TestStruct', Struct.new(:foo)) + stub_const("CpuAndWallTimeWorkerSpec::TestStruct", Struct.new(:foo)) 1000.times { CpuAndWallTimeWorkerSpec::TestStruct.new } cpu_and_wall_time_worker.stop @@ -1079,10 +1427,10 @@ expect(stats).to match( hash_including( - :cpu_sampled => be > 0, - :allocation_sampled => be > 0, - :cpu_sampling_time_ns_avg => be > 0, - :allocation_sampling_time_ns_avg => be > 0, + cpu_sampled: be > 0, + allocation_sampled: be > 0, + cpu_sampling_time_ns_avg: be > 0, + allocation_sampling_time_ns_avg: be > 0, ) ) @@ -1090,24 +1438,24 @@ expect(stats).to match( hash_including( - :cpu_sampled => 0, - :allocation_sampled => 0, - :cpu_sampling_time_ns_avg => nil, - :allocation_sampling_time_ns_avg => nil, + cpu_sampled: 0, + allocation_sampled: 0, + cpu_sampling_time_ns_avg: nil, + allocation_sampling_time_ns_avg: nil, ) ) end end - describe '.delayed_error' do + describe ".delayed_error" do before { allow(Datadog.logger).to receive(:warn) } - it 'on allocation, raises on start' do + it "on allocation, raises on start" do worker = described_class.allocate # Simulate a delayed failure pre-initialization (i.e. during new) Datadog::Profiling::Collectors::CpuAndWallTimeWorker::Testing._native_delayed_error( worker, - 'test failure' + "test failure" ) worker.send(:initialize, **worker_settings, **options) @@ -1123,12 +1471,12 @@ # And we expect the worker to be shutdown with a failure exception expect(described_class._native_is_running?(worker)).to be false exception = try_wait_until(backoff: 0.01) { worker.send(:failure_exception) } - expect(exception.message).to include 'test failure' + expect(exception.message).to include "test failure" worker.stop end - it 'raises on next iteration' do + it "raises on next iteration" do proc_called = Queue.new cpu_and_wall_time_worker.start(on_failure_proc: proc { proc_called << true }) @@ -1143,7 +1491,7 @@ # Simulate a delayed failure while running Datadog::Profiling::Collectors::CpuAndWallTimeWorker::Testing._native_delayed_error( cpu_and_wall_time_worker, - 'test failure' + "test failure" ) # We expect this to have been filled by the on_failure_proc @@ -1152,14 +1500,14 @@ # And we expect the worker to be shutdown with a failure exception expect(described_class._native_is_running?(cpu_and_wall_time_worker)).to be false exception = try_wait_until(backoff: 0.01) { cpu_and_wall_time_worker.send(:failure_exception) } - expect(exception.message).to include 'test failure' + expect(exception.message).to include "test failure" cpu_and_wall_time_worker.stop end end - describe '#wait_until_running' do - context 'when the worker starts' do + describe "#wait_until_running" do + context "when the worker starts" do it do cpu_and_wall_time_worker.start @@ -1170,14 +1518,14 @@ end context "when worker doesn't start on time" do - it 'raises an exception' do + it "raises an exception" do expect { cpu_and_wall_time_worker.wait_until_running(timeout_seconds: 0) }.to raise_error(/Timeout waiting/) end end end - describe '._native_hold_signals and _native_resume_signals' do - it 'blocks/unblocks interruptions for the current thread' do + describe "._native_hold_signals and _native_resume_signals" do + it "blocks/unblocks interruptions for the current thread" do expect(described_class::Testing._native_is_sigprof_blocked_in_current_thread).to be false described_class._native_hold_signals @@ -1200,21 +1548,20 @@ def wait_until_running # We have separate specs that assert on these behaviors. def samples_from_pprof_without_gc_and_overhead(pprof_data) samples_from_pprof(pprof_data) - .reject { |it| it.locations.first.path == 'Garbage Collection' } - .reject { |it| it.labels.include?(:'profiler overhead') } + .reject { |it| it.locations.first.path == "Garbage Collection" } + .reject { |it| it.labels.include?(:"profiler overhead") } end def build_another_instance described_class.new(**worker_settings) end - def build_thread_context_collector(recorder) - Datadog::Profiling::Collectors::ThreadContext.new( + def build_thread_context_collector(recorder, **options) + Datadog::Profiling::Collectors::ThreadContext.for_testing( recorder: recorder, - max_frames: 400, - tracer: nil, endpoint_collection_enabled: endpoint_collection_enabled, timeline_enabled: timeline_enabled, + **options, ) end @@ -1226,6 +1573,6 @@ def loop_until(timeout_seconds: 5) return result if result end - raise('Wait time exhausted!') + raise("Wait time exhausted!") end end diff --git a/spec/datadog/profiling/collectors/discrete_dynamic_sampler_spec.rb b/spec/datadog/profiling/collectors/discrete_dynamic_sampler_spec.rb index 22e1dd5e6a2..6d1eaca350d 100644 --- a/spec/datadog/profiling/collectors/discrete_dynamic_sampler_spec.rb +++ b/spec/datadog/profiling/collectors/discrete_dynamic_sampler_spec.rb @@ -1,7 +1,7 @@ -require 'datadog/profiling/spec_helper' -require 'datadog/profiling' +require "datadog/profiling/spec_helper" +require "datadog/profiling" -RSpec.describe 'Datadog::Profiling::Collectors::DiscreteDynamicSampler' do +RSpec.describe "Datadog::Profiling::Collectors::DiscreteDynamicSampler" do let(:max_overhead_target) { 2.0 } before do @@ -70,7 +70,7 @@ def sampler_current_events_per_sec sampler._native_state_snapshot.fetch(:events_per_sec) end - context 'when under a constant' do + context "when under a constant" do let(:stats) do # Warm things up a little to overcome the hardcoded starting parameters simulate_load(duration_seconds: 5, events_per_second: events_per_second, sampling_seconds: 0.01) @@ -78,10 +78,10 @@ def sampler_current_events_per_sec simulate_load(duration_seconds: 60, events_per_second: events_per_second, sampling_seconds: 0.01) end - context 'low load' do + context "low load" do let(:events_per_second) { 1 } - it 'samples everything that comes' do + it "samples everything that comes" do # Max overhead of 2% over 1 second means a max of 0.02 seconds of sampling. # With each sample taking 0.01 seconds, we can afford to do 2 of these every second. # At an event rate of 1/sec we can sample all. @@ -91,10 +91,10 @@ def sampler_current_events_per_sec end end - context 'moderate load' do + context "moderate load" do let(:events_per_second) { 8 } - it 'samples only as many samples as it can to keep to the overhead target' do + it "samples only as many samples as it can to keep to the overhead target" do # Max overhead of 2% over 1 second means a max of 0.02 seconds of sampling. # With each sample taking 0.01 seconds, we can afford to do 2 of these every second. # At an event rate of 8/sec we can sample 1/4 of total events. @@ -104,10 +104,10 @@ def sampler_current_events_per_sec end end - context 'heavy load' do + context "heavy load" do let(:events_per_second) { 100 } - it 'will heavily restrict sampling' do + it "will heavily restrict sampling" do # Max overhead of 2% over 1 second means a max of 0.02 seconds of sampling. # With each sample taking 0.01 seconds, we can afford to do 2 of these every second. # At an event rate of 100/sec we can sample 2% of total events. @@ -118,9 +118,9 @@ def sampler_current_events_per_sec end end - context 'when under a variable load' do - context 'containing lots of short spikes' do - it 'will readjust to decrease sampling rate' do + context "when under a variable load" do + context "containing lots of short spikes" do + it "will readjust to decrease sampling rate" do # Baseline simulate_load(duration_seconds: 10, events_per_second: 10, sampling_seconds: 0.01) p_baseline = sampler_current_probability @@ -140,7 +140,7 @@ def sampler_current_events_per_sec end end - context 'with a big spike at the beginning' do + context "with a big spike at the beginning" do it "won't wait until the next sample to adjust" do # We'll start with a very big load at the beginning. This should move the sampler towards # having very low sampling probabilities (i.e. a big sampling interval). We want to validate @@ -175,8 +175,8 @@ def sampler_current_events_per_sec end end - context 'with a big spike that fits within an adjustment window' do - it 'will readjust preemptively with smaller windows to prevent sampling overload' do + context "with a big spike that fits within an adjustment window" do + it "will readjust preemptively with smaller windows to prevent sampling overload" do # Start with a very small constant load during a long time. So low in fact that we'll # decide to sample everything simulate_load(duration_seconds: 60, events_per_second: 1, sampling_seconds: 0.0001) @@ -198,8 +198,8 @@ def sampler_current_events_per_sec end end - context 'when sampling time worsens' do - it 'will readjust to decrease sampling rate' do + context "when sampling time worsens" do + it "will readjust to decrease sampling rate" do # Start with an initial load of 8 eps @ 0.01s sampling time should give us a sampling # probability of around 25% given our 2% overhead target (see similar test case above) stats = simulate_load(duration_seconds: 60, events_per_second: 8, sampling_seconds: 0.01) @@ -212,8 +212,8 @@ def sampler_current_events_per_sec end end - context 'when sampling time improves' do - it 'will readjust to increase sampling rate' do + context "when sampling time improves" do + it "will readjust to increase sampling rate" do # Start with an initial load of 8 eps @ 0.01s sampling time should give us a sampling # probability of around 25% given our 2% overhead target (see similar test case above) stats = simulate_load(duration_seconds: 60, events_per_second: 8, sampling_seconds: 0.01) @@ -226,7 +226,7 @@ def sampler_current_events_per_sec end end - context 'given a constant load' do + context "given a constant load" do it "the higher the target overhead, the more we'll sample" do # Warm-up to overcome initial hardcoded window simulate_load(duration_seconds: 5, events_per_second: 4, sampling_seconds: 0.01) @@ -246,7 +246,7 @@ def sampler_current_events_per_sec end end - it 'disables sampling for next window if sampling overhead is deemed extremely high but relaxes over time' do + it "disables sampling for next window if sampling overhead is deemed extremely high but relaxes over time" do # Max overhead of 2% over 1 seconds means a max of 0.02 seconds of sampling each second. If each # of our samples takes 0.08 seconds, there's no way for us to sample and meet the target # so probability and intervals must go down to 0. @@ -289,10 +289,10 @@ def sampler_current_events_per_sec expect(stats[:num_samples]).to be >= 60 end - describe '.state_snapshot' do + describe ".state_snapshot" do let(:state_snapshot) { sampler._native_state_snapshot } - it 'fills a Ruby hash with relevant data from a sampler instance' do + it "fills a Ruby hash with relevant data from a sampler instance" do # Max overhead of 2% over 1 second means a max of 0.02 seconds of sampling. # With each sample taking 0.01 seconds, we can afford to do 2 of these every second. # At an event rate of 8/sec we can sample 1/4 of total events. @@ -314,10 +314,10 @@ def sampler_current_events_per_sec ) end - context 'in a situation that triggers our minimum sampling target mechanism' do + context "in a situation that triggers our minimum sampling target mechanism" do let(:max_overhead_target) { 1.0 } - it 'captures time clamps accurately' do + it "captures time clamps accurately" do # Max overhead of 1% over 1 second means a max of 0.01 seconds of sampling. # With each sample taking 0.02 seconds, we can in theory only do one sample every 2 seconds. # However, our minimum sampling target ensure we try at least one sample per window and we'll diff --git a/spec/datadog/profiling/collectors/dynamic_sampling_rate_spec.rb b/spec/datadog/profiling/collectors/dynamic_sampling_rate_spec.rb index 8faf38c8db7..9b3f89ba403 100644 --- a/spec/datadog/profiling/collectors/dynamic_sampling_rate_spec.rb +++ b/spec/datadog/profiling/collectors/dynamic_sampling_rate_spec.rb @@ -1,15 +1,15 @@ -require 'datadog/profiling/spec_helper' -require 'datadog/profiling/collectors/dynamic_sampling_rate' +require "datadog/profiling/spec_helper" +require "datadog/profiling/collectors/dynamic_sampling_rate" RSpec.describe Datadog::Profiling::Collectors::DynamicSamplingRate do before { skip_if_profiling_not_supported(self) } let(:max_overhead_target) { 2.0 } - describe 'dynamic_sampling_rate_after_sample' do + describe "dynamic_sampling_rate_after_sample" do let(:current_monotonic_wall_time_ns) { 123 } - it 'sets the next_sample_after_monotonic_wall_time_ns based on the current timestamp and max overhead target' do + it "sets the next_sample_after_monotonic_wall_time_ns based on the current timestamp and max overhead target" do sampling_time_ns = 456 # The idea here is -- if sampling_time_ns is 2% of the time we spend working, how much is the 98% we should spend @@ -26,8 +26,8 @@ .to be(current_monotonic_wall_time_ns + expected_time_to_sleep.to_i) end - context 'when next_sample_after_monotonic_wall_time_ns would be too far in the future' do - it 'sets the next_sample_after_monotonic_wall_time_ns to be current timestamp + MAX_TIME_UNTIL_NEXT_SAMPLE_NS' do + context "when next_sample_after_monotonic_wall_time_ns would be too far in the future" do + it "sets the next_sample_after_monotonic_wall_time_ns to be current timestamp + MAX_TIME_UNTIL_NEXT_SAMPLE_NS" do max_time_until_next_sample_ns = 10_000_000_000 # MAX_TIME_UNTIL_NEXT_SAMPLE_NS sampling_time_ns = 60_000_000_000 @@ -43,7 +43,7 @@ end end - describe 'dynamic_sampling_rate_should_sample' do + describe "dynamic_sampling_rate_should_sample" do let(:next_sample_after_monotonic_wall_time_ns) { 10 } subject(:dynamic_sampling_rate_should_sample) do @@ -54,18 +54,18 @@ ) end - context 'when wall_time_ns_before_sample is before next_sample_after_monotonic_wall_time_ns' do + context "when wall_time_ns_before_sample is before next_sample_after_monotonic_wall_time_ns" do let(:wall_time_ns_before_sample) { next_sample_after_monotonic_wall_time_ns - 1 } it { is_expected.to be false } end - context 'when wall_time_ns_before_sample is after next_sample_after_monotonic_wall_time_ns' do + context "when wall_time_ns_before_sample is after next_sample_after_monotonic_wall_time_ns" do let(:wall_time_ns_before_sample) { next_sample_after_monotonic_wall_time_ns + 1 } it { is_expected.to be true } end end - describe 'dynamic_sampling_rate_get_sleep' do + describe "dynamic_sampling_rate_get_sleep" do let(:next_sample_after_monotonic_wall_time_ns) { 1_000_000_000 } subject(:dynamic_sampling_rate_get_sleep) do @@ -76,31 +76,31 @@ ) end - context 'when current_monotonic_wall_time_ns is before next_sample_after_monotonic_wall_time_ns' do + context "when current_monotonic_wall_time_ns is before next_sample_after_monotonic_wall_time_ns" do context( - 'when current_monotonic_wall_time_ns is less than MAX_SLEEP_TIME_NS ' \ - 'from next_sample_after_monotonic_wall_time_ns' + "when current_monotonic_wall_time_ns is less than MAX_SLEEP_TIME_NS " \ + "from next_sample_after_monotonic_wall_time_ns" ) do let(:current_monotonic_wall_time_ns) { next_sample_after_monotonic_wall_time_ns - 1234 } - it 'returns the time between current_monotonic_wall_time_ns and next_sample_after_monotonic_wall_time_ns' do + it "returns the time between current_monotonic_wall_time_ns and next_sample_after_monotonic_wall_time_ns" do expect(dynamic_sampling_rate_get_sleep).to be 1234 end end context( - 'when current_monotonic_wall_time_ns is more than MAX_SLEEP_TIME_NS ' \ - 'from next_sample_after_monotonic_wall_time_ns' + "when current_monotonic_wall_time_ns is more than MAX_SLEEP_TIME_NS " \ + "from next_sample_after_monotonic_wall_time_ns" ) do let(:current_monotonic_wall_time_ns) { next_sample_after_monotonic_wall_time_ns - 123_456_789 } - it 'returns MAX_SLEEP_TIME_NS' do + it "returns MAX_SLEEP_TIME_NS" do expect(dynamic_sampling_rate_get_sleep).to be 100_000_000 end end end - context 'when current_monotonic_wall_time_ns is after next_sample_after_monotonic_wall_time_ns' do + context "when current_monotonic_wall_time_ns is after next_sample_after_monotonic_wall_time_ns" do let(:current_monotonic_wall_time_ns) { next_sample_after_monotonic_wall_time_ns + 1 } it { is_expected.to be 0 } end diff --git a/spec/datadog/profiling/collectors/idle_sampling_helper_spec.rb b/spec/datadog/profiling/collectors/idle_sampling_helper_spec.rb index 1bd8821e512..d971f032a97 100644 --- a/spec/datadog/profiling/collectors/idle_sampling_helper_spec.rb +++ b/spec/datadog/profiling/collectors/idle_sampling_helper_spec.rb @@ -1,39 +1,39 @@ -require 'datadog/profiling/spec_helper' -require 'datadog/profiling/collectors/idle_sampling_helper' +require "datadog/profiling/spec_helper" +require "datadog/profiling/collectors/idle_sampling_helper" RSpec.describe Datadog::Profiling::Collectors::IdleSamplingHelper do before { skip_if_profiling_not_supported(self) } subject(:idle_sampling_helper) { described_class.new } - describe '#start' do + describe "#start" do subject(:start) { idle_sampling_helper.start } after do idle_sampling_helper.stop end - it 'resets the IdleSamplingHelper before creating a new thread' do + it "resets the IdleSamplingHelper before creating a new thread" do expect(described_class).to receive(:_native_reset).with(idle_sampling_helper).ordered expect(Thread).to receive(:new).ordered.and_call_original start end - it 'creates a new thread' do + it "creates a new thread" do expect(Thread).to receive(:new).ordered.and_call_original start end # See https://github.com/puma/puma/blob/32e011ab9e029c757823efb068358ed255fb7ef4/lib/puma/cluster.rb#L353-L359 - it 'marks the new thread as fork-safe' do + it "marks the new thread as fork-safe" do start expect(idle_sampling_helper.instance_variable_get(:@worker_thread).thread_variable_get(:fork_safe)).to be true end - it 'does not create a second thread if start is called again' do + it "does not create a second thread if start is called again" do start expect(Thread).to_not receive(:new) @@ -42,10 +42,10 @@ end end - describe '#stop' do + describe "#stop" do subject(:stop) { idle_sampling_helper.stop } - it 'shuts down the background thread' do + it "shuts down the background thread" do worker_thread = idle_sampling_helper.instance_variable_get(:@worker_thread) stop @@ -54,12 +54,12 @@ end end - describe 'idle_sampling_helper_request_action' do + describe "idle_sampling_helper_request_action" do before { idle_sampling_helper.start } after { idle_sampling_helper.stop } # rubocop:disable Style/GlobalVars - it 'runs the requested function in a background thread' do + it "runs the requested function in a background thread" do action_ran = Queue.new # idle_sampling_helper_request_action is built to be called from C code, not Ruby code, so the testing interface diff --git a/spec/datadog/profiling/collectors/info_spec.rb b/spec/datadog/profiling/collectors/info_spec.rb index 95313c4e3ef..07adaeeeb9f 100644 --- a/spec/datadog/profiling/collectors/info_spec.rb +++ b/spec/datadog/profiling/collectors/info_spec.rb @@ -1,5 +1,5 @@ -require 'datadog/profiling/collectors/info' -require 'json-schema' +require "datadog/profiling/collectors/info" +require "json-schema" RSpec.describe Datadog::Profiling::Collectors::Info do let(:settings) { Datadog::Core::Configuration::Settings.new } @@ -7,9 +7,9 @@ subject(:info_collector) { described_class.new(settings) } - describe '#info' do - it 'records useful info in multiple categories' do - settings.service = 'test' + describe "#info" do + it "records useful info in multiple categories" do + settings.service = "test" expect(info).to match( { platform: hash_including( @@ -28,7 +28,7 @@ ) end - it 'records a sensible application start time' do + it "records a sensible application start time" do now = Time.now # We approximate the start time to the loading time of info. For this not to be @@ -37,7 +37,7 @@ expect(parsed_start_time).to be_between(now - 60 * 60, now) end - it 'records profiler info including a json dump of settings' do + it "records profiler info including a json dump of settings" do settings.profiling.advanced.max_frames = 600 settings.profiling.advanced.experimental_heap_enabled = true @@ -49,45 +49,62 @@ ) end - it 'caches data' do + it "caches data" do expect(info_collector.info).to be(info_collector.info) end - context 'with exotic-typed profile settings' do + context "with exotic-typed profile settings" do let(:settings) do TestSettings.new end - it 'handles multiple types nicely' do + it "handles multiple types nicely" do expect(info[:profiler][:settings]).to match( { boolean_opt: true, symbol_opt: :a_symbol, - string_opt: 'a string', + string_opt: "a string", integer_opt: 123, float_opt: 123.456, nil_opt: nil, advanced: { - list_opt: [false, 1, 2.0, '3', nil, [1, 2, 3], { 'a' => 'a', 'b' => 'b' }, :a_symbol, - a_string_including('# "a", "b" => "b"}, :a_symbol, + a_string_including("# 'a', 'b' => 'b' }, + g: {"a" => "a", "b" => "b"}, h: :a_symbol, - i: a_string_including('# 'a', 'b' => 'b' }, :a_symbol, ComplexObject.new] + o.default [false, 1, 2.0, "3", nil, [1, 2, 3], {"a" => "a", "b" => "b"}, :a_symbol, ComplexObject.new] end option :hash_opt do |o| @@ -152,10 +169,10 @@ class TestSettings a: false, b: 1, c: 2.0, - d: '3', + d: "3", e: nil, f: [1, 2, 3], - g: { 'a' => 'a', 'b' => 'b' }, + g: {"a" => "a", "b" => "b"}, h: :a_symbol, i: ComplexObject.new, } @@ -166,7 +183,7 @@ class TestSettings o.type :proc o.default do proc { - 'proc result' + "proc result" } end end diff --git a/spec/datadog/profiling/collectors/interesting_backtrace_helper.rb b/spec/datadog/profiling/collectors/interesting_backtrace_helper.rb index 07f778f8043..05d1d09636f 100644 --- a/spec/datadog/profiling/collectors/interesting_backtrace_helper.rb +++ b/spec/datadog/profiling/collectors/interesting_backtrace_helper.rb @@ -3,7 +3,7 @@ # The objective is to thoroughly test our stack trace sampling abilities. # Control flow goes from bottom of file to top (e.g. ClassA will be the top of the stack) -# ---- +# standard:disable all class IbhClassA def hello diff --git a/spec/datadog/profiling/collectors/stack_spec.rb b/spec/datadog/profiling/collectors/stack_spec.rb index 7a4e0dc4313..a32aac56273 100644 --- a/spec/datadog/profiling/collectors/stack_spec.rb +++ b/spec/datadog/profiling/collectors/stack_spec.rb @@ -1,5 +1,5 @@ -require 'datadog/profiling/spec_helper' -require 'datadog/profiling/collectors/stack' +require "datadog/profiling/spec_helper" +require "datadog/profiling/collectors/stack" # This file has a few lines that cannot be broken because we want some things to have the same line number when looking # at their stack traces. Hence, we disable Rubocop's complaints here. @@ -10,29 +10,29 @@ subject(:collectors_stack) { described_class.new } - let(:metric_values) { { 'cpu-time' => 123, 'cpu-samples' => 456, 'wall-time' => 789 } } - let(:labels) { { 'label_a' => 'value_a', 'label_b' => 'value_b', 'state' => 'unknown' }.to_a } + let(:metric_values) { {"cpu-time" => 123, "cpu-samples" => 456, "wall-time" => 789} } + let(:labels) { {"label_a" => "value_a", "label_b" => "value_b", "state" => "unknown"}.to_a } let(:raw_reference_stack) { stacks.fetch(:reference) } let(:reference_stack) { convert_reference_stack(raw_reference_stack) } let(:gathered_stack) { stacks.fetch(:gathered) } - def sample(thread, recorder_instance, metric_values_hash, labels_array, max_frames: 400, in_gc: false) + def sample(thread, recorder_instance, metric_values_hash, labels_array, **options) numeric_labels_array = [] - described_class::Testing._native_sample(thread, recorder_instance, metric_values_hash, labels_array, numeric_labels_array, max_frames, in_gc) + described_class::Testing._native_sample(thread, recorder_instance, metric_values_hash, labels_array, numeric_labels_array, **options) end # This spec explicitly tests the main thread because an unpatched rb_profile_frames returns one more frame in the # main thread than the reference Ruby API. This is almost-surely a bug in rb_profile_frames, since the same frame # gets excluded from the reference Ruby API. - context 'when sampling the main thread' do + context "when sampling the main thread" do let(:in_gc) { false } - let(:stacks) { { reference: Thread.current.backtrace_locations, gathered: sample_and_decode(Thread.current, in_gc: in_gc) } } + let(:stacks) { {reference: Thread.current.backtrace_locations, gathered: sample_and_decode(Thread.current, in_gc: in_gc)} } let(:reference_stack) do # To make the stacks comparable we slice off the actual Ruby `Thread#backtrace_locations` frame since that part # will necessarily be different - expect(super().first.base_label).to eq 'backtrace_locations' + expect(super().first.base_label).to eq "backtrace_locations" super()[1..-1] end @@ -41,38 +41,38 @@ def sample(thread, recorder_instance, metric_values_hash, labels_array, max_fram # also necessarily be different expect(super()[0..2]).to match( [ - have_attributes(base_label: '_native_sample'), - have_attributes(base_label: 'sample'), - have_attributes(base_label: 'sample_and_decode'), + have_attributes(base_label: "_native_sample"), + have_attributes(base_label: "sample"), + have_attributes(base_label: "sample_and_decode"), ] ) super()[3..-1] end before do - expect(Thread.current).to be(Thread.main), 'Unexpected: RSpec is not running on the main thread' + expect(Thread.current).to be(Thread.main), "Unexpected: RSpec is not running on the main thread" end - it 'matches the Ruby backtrace API' do + it "matches the Ruby backtrace API" do expect(gathered_stack).to eq reference_stack end - context 'when marking sample as being in garbage collection' do + context "when marking sample as being in garbage collection" do let(:in_gc) { true } it 'gathers a one-element stack with a "Garbage Collection" placeholder' do - expect(stacks.fetch(:gathered)).to contain_exactly(have_attributes(base_label: '', path: 'Garbage Collection', lineno: 0)) + expect(stacks.fetch(:gathered)).to contain_exactly(have_attributes(base_label: "", path: "Garbage Collection", lineno: 0)) end end end - context 'in a background thread' do + context "in a background thread" do let(:ready_queue) { Queue.new } - let(:stacks) { { reference: background_thread.backtrace_locations, gathered: sample_and_decode(background_thread) } } + let(:stacks) { {reference: background_thread.backtrace_locations, gathered: sample_and_decode(background_thread)} } let(:background_thread) { Thread.new(ready_queue, &do_in_background_thread) } let(:expected_eval_path) do # Starting in Ruby 3.3, the path on evals went from being "(eval)" to being "(eval at some_file.rb:line)" - RUBY_VERSION < '3.3.' ? '(eval)' : match(/\(eval at .+stack_spec.rb:\d+\)/) + (RUBY_VERSION < "3.3.") ? "(eval)" : match(/\(eval at .+stack_spec.rb:\d+\)/) end before do @@ -88,7 +88,7 @@ def sample(thread, recorder_instance, metric_values_hash, labels_array, max_fram # Kernel#sleep is one of many Ruby standard library APIs that are implemented using native code. Older versions of # rb_profile_frames did not include these frames in their output, so this spec tests that our rb_profile_frames fixes # do correctly overcome this. - context 'when sampling a sleeping thread' do + context "when sampling a sleeping thread" do let(:do_in_background_thread) do proc do |ready_queue| ready_queue << true @@ -96,17 +96,17 @@ def sample(thread, recorder_instance, metric_values_hash, labels_array, max_fram end end - it 'matches the Ruby backtrace API' do + it "matches the Ruby backtrace API" do expect(gathered_stack).to eq reference_stack end - it 'has a sleeping frame at the top of the stack' do - expect(reference_stack.first.base_label).to eq 'sleep' + it "has a sleeping frame at the top of the stack" do + expect(reference_stack.first.base_label).to eq "sleep" end end # rubocop:disable Style/EvalWithLocation - context 'when sampling a top-level eval' do + context "when sampling a top-level eval" do let(:do_in_background_thread) do proc do eval( @@ -118,21 +118,21 @@ def sample(thread, recorder_instance, metric_values_hash, labels_array, max_fram end end - it 'matches the Ruby backtrace API' do + it "matches the Ruby backtrace API" do expect(gathered_stack).to eq reference_stack end - it 'has eval frames on the stack' do + it "has eval frames on the stack" do expect(reference_stack[0..2]).to contain_exactly( - have_attributes(base_label: 'sleep', path: expected_eval_path), - have_attributes(base_label: '', path: expected_eval_path), - have_attributes(base_label: 'eval', path: end_with('stack_spec.rb')), + have_attributes(base_label: "sleep", path: expected_eval_path), + have_attributes(base_label: "", path: expected_eval_path), + have_attributes(base_label: "eval", path: end_with("stack_spec.rb")), ) end end # We needed to patch our custom rb_profile_frames to match the reference stack on this case - context 'when sampling an eval/instance eval inside an object' do + context "when sampling an eval/instance eval inside an object" do let(:eval_test_class) do Class.new do def initialize(ready_queue) @@ -140,11 +140,11 @@ def initialize(ready_queue) end def call_eval - eval('call_instance_eval') + eval("call_instance_eval") end def call_instance_eval - instance_eval('call_sleep') + instance_eval("call_sleep") end def call_sleep @@ -159,41 +159,41 @@ def call_sleep end end - it 'matches the Ruby backtrace API' do + it "matches the Ruby backtrace API" do expect(gathered_stack).to eq reference_stack end - it 'has two eval frames on the stack' do + it "has two eval frames on the stack" do expect(reference_stack).to include( # These two frames are the frames that get created with the evaluation of the string, e.g. if instead of # `eval("foo")` we did `eval { foo }` then it is the block containing foo; eval with a string works similarly, # although you don't see a block there. - have_attributes(base_label: 'call_eval', path: expected_eval_path, lineno: 1), - have_attributes(base_label: 'call_instance_eval', path: expected_eval_path, lineno: 1), + have_attributes(base_label: "call_eval", path: expected_eval_path, lineno: 1), + have_attributes(base_label: "call_instance_eval", path: expected_eval_path, lineno: 1), ) end end - context 'when sampling an eval with a custom file and line provided' do + context "when sampling an eval with a custom file and line provided" do let(:do_in_background_thread) do proc do |ready_queue| - eval('ready_queue << true; sleep', binding, '/this/is/a/fake_file_.rb', -123456789) + eval("ready_queue << true; sleep", binding, "/this/is/a/fake_file_.rb", -123456789) end end - it 'matches the Ruby backtrace API' do + it "matches the Ruby backtrace API" do expect(gathered_stack).to eq reference_stack end - it 'has a frame with the custom file and line provided on the stack' do + it "has a frame with the custom file and line provided on the stack" do expect(reference_stack).to include( - have_attributes(path: '/this/is/a/fake_file_.rb', lineno: -123456789), + have_attributes(path: "/this/is/a/fake_file_.rb", lineno: -123456789), ) end end # rubocop:enable Style/EvalWithLocation - context 'when sampling the interesting backtrace helper' do + context "when sampling the interesting backtrace helper" do # rubocop:disable Style/GlobalVars let(:do_in_background_thread) do proc do |ready_queue| @@ -208,19 +208,50 @@ def call_sleep # rubocop:enable Style/GlobalVars # I opted to join these two expects to avoid running the `load` above more than once - it 'matches the Ruby backtrace API AND has a sleeping frame at the top of the stack' do + it "matches the Ruby backtrace API AND has a sleeping frame at the top of the stack" do expect(gathered_stack).to eq reference_stack - expect(reference_stack.first.base_label).to eq 'sleep' + expect(reference_stack.first.base_label).to eq "sleep" end end - describe 'approximate thread state categorization based on current stack' do + context "when sampling a thread in gvl waiting state" do + let(:do_in_background_thread) do + proc do |ready_queue| + ready_queue << true + sleep + end + end + + context "when the thread has cpu time" do + let(:metric_values) { {"cpu-time" => 123, "cpu-samples" => 456, "wall-time" => 789} } + + it do + expect { + sample_and_decode(background_thread, :labels, is_gvl_waiting_state: true) + }.to raise_error(RuntimeError, /BUG: .* is_gvl_waiting/) + end + end + + context "when the thread has wall time but no cpu time" do + let(:metric_values) { {"cpu-time" => 0, "cpu-samples" => 456, "wall-time" => 789} } + + it do + expect(sample_and_decode(background_thread, :labels, is_gvl_waiting_state: true)).to include(state: "waiting for gvl") + end + + it "takes precedence over approximate state categorization" do + expect(sample_and_decode(background_thread, :labels, is_gvl_waiting_state: false)).to include(state: "sleeping") + end + end + end + + describe "approximate thread state categorization based on current stack" do before do wait_for { background_thread.backtrace_locations.first.base_label }.to eq(expected_method_name) end - describe 'state label validation' do - let(:expected_method_name) { 'sleep' } + describe "state label validation" do + let(:expected_method_name) { "sleep" } let(:do_in_background_thread) do proc do |ready_queue| ready_queue << true @@ -229,55 +260,64 @@ def call_sleep end let(:labels) { [] } - context 'when taking a cpu/wall-time sample and the state label is missing' do - let(:metric_values) { { 'cpu-samples' => 1 } } + context "when taking a cpu/wall-time sample and the state label is missing" do + let(:metric_values) { {"cpu-samples" => 1} } - it 'raises an exception' do + it "raises an exception" do expect { gathered_stack }.to raise_error(RuntimeError, /BUG: Unexpected missing state_label/) end end - context 'when taking a non-cpu/wall-time sample and the state label is missing' do - let(:metric_values) { { 'cpu-samples' => 0 } } + context "when taking a non-cpu/wall-time sample and the state label is missing" do + let(:metric_values) { {"cpu-samples" => 0} } - it 'does not raise an exception' do + it "does not raise an exception" do expect(gathered_stack).to be_truthy end end end - context 'when sampling a thread with cpu-time' do - let(:expected_method_name) { 'sleep' } + context "when sampling a thread with cpu-time" do + let(:expected_method_name) { "sleep" } let(:do_in_background_thread) do proc do |ready_queue| ready_queue << true sleep end end - let(:metric_values) { { 'cpu-time' => 123, 'cpu-samples' => 456, 'wall-time' => 789 } } + let(:metric_values) { {"cpu-time" => 123, "cpu-samples" => 456, "wall-time" => 789} } it do - expect(sample_and_decode(background_thread, :labels)).to include(state: 'had cpu') + expect(sample_and_decode(background_thread, :labels)).to include(state: "had cpu") end end - context 'when sampling a sleeping thread with no cpu-time' do - let(:expected_method_name) { 'sleep' } + context "when sampling a sleeping thread with no cpu-time" do + let(:expected_method_name) { "sleep" } let(:do_in_background_thread) do proc do |ready_queue| ready_queue << true sleep end end - let(:metric_values) { { 'cpu-time' => 0, 'cpu-samples' => 1, 'wall-time' => 1 } } + let(:metric_values) { {"cpu-time" => 0, "cpu-samples" => 1, "wall-time" => 1} } it do - expect(sample_and_decode(background_thread, :labels)).to include(state: 'sleeping') + expect(sample_and_decode(background_thread, :labels)).to include(state: "sleeping") + end + + # See comment on sample_thread in collectors_stack.c for details of why we do this + context 'when wall_time is zero' do + let(:metric_values) { {"cpu-time" => 0, "cpu-samples" => 1, "wall-time" => 0} } + + it do + expect(sample_and_decode(background_thread, :labels)).to include(state: "sleeping") + end end end - context 'when sampling a thread waiting on a select' do - let(:expected_method_name) { 'select' } + context "when sampling a thread waiting on a select" do + let(:expected_method_name) { "select" } let(:server_socket) { TCPServer.new(6006) } let(:background_thread) { Thread.new(ready_queue, server_socket, &do_in_background_thread) } let(:do_in_background_thread) do @@ -286,7 +326,7 @@ def call_sleep IO.select([server_socket]) end end - let(:metric_values) { { 'cpu-time' => 0, 'cpu-samples' => 1, 'wall-time' => 1 } } + let(:metric_values) { {"cpu-time" => 0, "cpu-samples" => 1, "wall-time" => 1} } after do background_thread.kill @@ -295,12 +335,12 @@ def call_sleep end it do - expect(sample_and_decode(background_thread, :labels)).to include(state: 'waiting') + expect(sample_and_decode(background_thread, :labels)).to include(state: "waiting") end end - context 'when sampling a thread blocked on Thread#join' do - let(:expected_method_name) { 'join' } + context "when sampling a thread blocked on Thread#join" do + let(:expected_method_name) { "join" } let(:another_thread) { Thread.new { sleep } } let(:background_thread) { Thread.new(ready_queue, another_thread, &do_in_background_thread) } let(:do_in_background_thread) do @@ -309,7 +349,7 @@ def call_sleep another_thread.join end end - let(:metric_values) { { 'cpu-time' => 0, 'cpu-samples' => 1, 'wall-time' => 1 } } + let(:metric_values) { {"cpu-time" => 0, "cpu-samples" => 1, "wall-time" => 1} } after do another_thread.kill @@ -319,15 +359,15 @@ def call_sleep it do sample = sample_and_decode(background_thread, :itself) expect(sample.labels).to( - include(state: 'blocked'), + include(state: "blocked"), "**If you see this test flaking, please report it to @ivoanjo!**\n\n" \ "sample: #{sample}", ) end end - context 'when sampling a thread blocked on Mutex#synchronize' do - let(:expected_method_name) { 'synchronize' } + context "when sampling a thread blocked on Mutex#synchronize" do + let(:expected_method_name) { "synchronize" } let(:locked_mutex) { Mutex.new.tap(&:lock) } let(:background_thread) { Thread.new(ready_queue, locked_mutex, &do_in_background_thread) } let(:do_in_background_thread) do @@ -336,15 +376,15 @@ def call_sleep locked_mutex.synchronize {} end end - let(:metric_values) { { 'cpu-time' => 0, 'cpu-samples' => 1, 'wall-time' => 1 } } + let(:metric_values) { {"cpu-time" => 0, "cpu-samples" => 1, "wall-time" => 1} } it do - expect(sample_and_decode(background_thread, :labels)).to include(state: 'blocked') + expect(sample_and_decode(background_thread, :labels)).to include(state: "blocked") end end - context 'when sampling a thread blocked on Mutex#lock' do - let(:expected_method_name) { 'lock' } + context "when sampling a thread blocked on Mutex#lock" do + let(:expected_method_name) { "lock" } let(:locked_mutex) { Mutex.new.tap(&:lock) } let(:background_thread) { Thread.new(ready_queue, locked_mutex, &do_in_background_thread) } let(:do_in_background_thread) do @@ -353,20 +393,20 @@ def call_sleep locked_mutex.lock end end - let(:metric_values) { { 'cpu-time' => 0, 'cpu-samples' => 1, 'wall-time' => 1 } } + let(:metric_values) { {"cpu-time" => 0, "cpu-samples" => 1, "wall-time" => 1} } it do - expect(sample_and_decode(background_thread, :labels)).to include(state: 'blocked') + expect(sample_and_decode(background_thread, :labels)).to include(state: "blocked") end end - context 'when sampling a thread blocked on Monitor#synchronize' do + context "when sampling a thread blocked on Monitor#synchronize" do let(:expected_method_name) do # On older Rubies Monitor is implemented using Mutex instead of natively - if RUBY_VERSION.start_with?('2.5', '2.6') - 'lock' + if RUBY_VERSION.start_with?("2.5", "2.6") + "lock" else - 'synchronize' + "synchronize" end end let(:locked_monitor) { Monitor.new.tap(&:enter) } @@ -377,15 +417,15 @@ def call_sleep locked_monitor.synchronize {} end end - let(:metric_values) { { 'cpu-time' => 0, 'cpu-samples' => 1, 'wall-time' => 1 } } + let(:metric_values) { {"cpu-time" => 0, "cpu-samples" => 1, "wall-time" => 1} } it do - expect(sample_and_decode(background_thread, :labels)).to include(state: 'blocked') + expect(sample_and_decode(background_thread, :labels)).to include(state: "blocked") end end - context 'when sampling a thread waiting on a IO object' do - let(:expected_method_name) { 'wait_readable' } + context "when sampling a thread waiting on a IO object" do + let(:expected_method_name) { "wait_readable" } let(:server_socket) { TCPServer.new(6006) } let(:background_thread) { Thread.new(ready_queue, server_socket, &do_in_background_thread) } let(:do_in_background_thread) do @@ -394,7 +434,7 @@ def call_sleep server_socket.wait_readable end end - let(:metric_values) { { 'cpu-time' => 0, 'cpu-samples' => 1, 'wall-time' => 1 } } + let(:metric_values) { {"cpu-time" => 0, "cpu-samples" => 1, "wall-time" => 1} } after do background_thread.kill @@ -403,45 +443,45 @@ def call_sleep end it do - expect(sample_and_decode(background_thread, :labels)).to include(state: 'network') + expect(sample_and_decode(background_thread, :labels)).to include(state: "network") end end - context 'when sampling a thread waiting on a Queue object' do - let(:expected_method_name) { 'pop' } + context "when sampling a thread waiting on a Queue object" do + let(:expected_method_name) { "pop" } let(:do_in_background_thread) do proc do |ready_queue| ready_queue << true Queue.new.pop end end - let(:metric_values) { { 'cpu-time' => 0, 'cpu-samples' => 1, 'wall-time' => 1 } } + let(:metric_values) { {"cpu-time" => 0, "cpu-samples" => 1, "wall-time" => 1} } it do - expect(sample_and_decode(background_thread, :labels)).to include(state: 'waiting') + expect(sample_and_decode(background_thread, :labels)).to include(state: "waiting") end end - context 'when sampling a thread in an unknown state' do - let(:expected_method_name) { 'stop' } + context "when sampling a thread in an unknown state" do + let(:expected_method_name) { "stop" } let(:do_in_background_thread) do proc do |ready_queue| ready_queue << true Thread.stop end end - let(:metric_values) { { 'cpu-time' => 0, 'cpu-samples' => 1, 'wall-time' => 1 } } + let(:metric_values) { {"cpu-time" => 0, "cpu-samples" => 1, "wall-time" => 1} } it do - expect(sample_and_decode(background_thread, :labels)).to include(state: 'unknown') + expect(sample_and_decode(background_thread, :labels)).to include(state: "unknown") end end end - context 'when sampling a stack with a dynamically-generated template method name' do - let(:method_name) { '_app_views_layouts_explore_html_haml__2304485752546535910_211320' } - let(:filename) { '/myapp/app/views/layouts/explore.html.haml' } - let(:dummy_template) { double('Dummy template object') } + context "when sampling a stack with a dynamically-generated template method name" do + let(:method_name) { "_app_views_layouts_explore_html_haml__2304485752546535910_211320" } + let(:filename) { "/myapp/app/views/layouts/explore.html.haml" } + let(:dummy_template) { double("Dummy template object") } let(:do_in_background_thread) do # rubocop:disable Security/Eval @@ -465,128 +505,128 @@ def dummy_template.#{method_name}(ready_queue) # rubocop:enable Style/DocumentDynamicEvalDefinition end - it 'samples the frame with a simplified method name' do + it "samples the frame with a simplified method name" do expect(gathered_stack).to include( have_attributes( - path: '/myapp/app/views/layouts/explore.html.haml', - base_label: '_app_views_layouts_explore_html_haml', + path: "/myapp/app/views/layouts/explore.html.haml", + base_label: "_app_views_layouts_explore_html_haml", ) ) end - context 'when method name ends with three ___ instead of two' do - let(:method_name) { super().gsub('__', '___') } + context "when method name ends with three ___ instead of two" do + let(:method_name) { super().gsub("__", "___") } - it 'samples the frame with a simplified method name' do + it "samples the frame with a simplified method name" do expect(gathered_stack).to include( have_attributes( - path: '/myapp/app/views/layouts/explore.html.haml', - base_label: '_app_views_layouts_explore_html_haml', + path: "/myapp/app/views/layouts/explore.html.haml", + base_label: "_app_views_layouts_explore_html_haml", ) ) end end - context 'when filename ends with .rb' do - let(:filename) { 'example.rb' } + context "when filename ends with .rb" do + let(:filename) { "example.rb" } - it 'does not trim the method name' do + it "does not trim the method name" do expect(gathered_stack).to eq reference_stack end end - context 'when method_name does not end with __number_number' do - let(:method_name) { super().gsub('__', '_') } + context "when method_name does not end with __number_number" do + let(:method_name) { super().gsub("__", "_") } - it 'does not trim the method name' do + it "does not trim the method name" do expect(gathered_stack).to eq reference_stack end end - context 'when method only has __number_number' do - let(:method_name) { '__2304485752546535910_211320' } + context "when method only has __number_number" do + let(:method_name) { "__2304485752546535910_211320" } - it 'does not trim the method name' do + it "does not trim the method name" do expect(gathered_stack).to eq reference_stack end end end end - context 'when sampling a thread with a stack that is deeper than the configured max_frames' do + context "when sampling a thread with a stack that is deeper than the configured max_frames" do let(:max_frames) { 5 } let(:target_stack_depth) { 100 } let(:thread_with_deep_stack) { DeepStackSimulator.thread_with_stack_depth(target_stack_depth) } let(:in_gc) { false } - let(:stacks) { { reference: thread_with_deep_stack.backtrace_locations, gathered: sample_and_decode(thread_with_deep_stack, max_frames: max_frames, in_gc: in_gc) } } + let(:stacks) { {reference: thread_with_deep_stack.backtrace_locations, gathered: sample_and_decode(thread_with_deep_stack, max_frames: max_frames, in_gc: in_gc)} } after do thread_with_deep_stack.kill thread_with_deep_stack.join end - it 'gathers exactly max_frames frames' do + it "gathers exactly max_frames frames" do expect(gathered_stack.size).to be max_frames end - it 'matches the Ruby backtrace API up to max_frames - 1' do + it "matches the Ruby backtrace API up to max_frames - 1" do expect(gathered_stack[0...(max_frames - 1)]).to eq reference_stack[0...(max_frames - 1)] end - it 'includes a placeholder frame including the number of skipped frames' do + it "includes a placeholder frame including the number of skipped frames" do placeholder = 1 omitted_frames = target_stack_depth - max_frames + placeholder expect(omitted_frames).to be 96 - expect(gathered_stack.last).to have_attributes(base_label: '', path: '96 frames omitted', lineno: 0) + expect(gathered_stack.last).to have_attributes(base_label: "", path: "96 frames omitted", lineno: 0) end - context 'when stack is exactly 1 item deeper than the configured max_frames' do + context "when stack is exactly 1 item deeper than the configured max_frames" do let(:target_stack_depth) { 6 } - it 'includes a placeholder frame stating that 2 frames were omitted' do + it "includes a placeholder frame stating that 2 frames were omitted" do # Why 2 frames omitted and not 1? That's because the placeholder takes over 1 space in the buffer, so # if there were 6 frames on the stack and the limit is 5, then 4 of those frames will be present in the output - expect(gathered_stack.last).to have_attributes(base_label: '', path: '2 frames omitted', lineno: 0) + expect(gathered_stack.last).to have_attributes(base_label: "", path: "2 frames omitted", lineno: 0) end end - context 'when stack is exactly as deep as the configured max_frames' do + context "when stack is exactly as deep as the configured max_frames" do let(:target_stack_depth) { 5 } - it 'matches the Ruby backtrace API' do + it "matches the Ruby backtrace API" do expect(gathered_stack).to eq reference_stack end end end - context 'when sampling a dead thread' do + context "when sampling a dead thread" do let(:dead_thread) { Thread.new {}.tap(&:join) } let(:in_gc) { false } - let(:stacks) { { reference: dead_thread.backtrace_locations, gathered: sample_and_decode(dead_thread, in_gc: in_gc) } } + let(:stacks) { {reference: dead_thread.backtrace_locations, gathered: sample_and_decode(dead_thread, in_gc: in_gc)} } - it 'gathers an empty stack' do + it "gathers an empty stack" do expect(gathered_stack).to be_empty end - context 'when marking sample as being in garbage collection' do + context "when marking sample as being in garbage collection" do let(:in_gc) { true } - it 'gathers a stack with a garbage collection placeholder' do + it "gathers a stack with a garbage collection placeholder" do # @ivoanjo: I... don't think this can happen in practice. It's debatable if we should still have the placeholder # frame or not, but for ease of implementation I chose this path, and I added this spec just to get coverage on # this corner case. - expect(gathered_stack).to contain_exactly(have_attributes(base_label: '', path: 'Garbage Collection', lineno: 0)) + expect(gathered_stack).to contain_exactly(have_attributes(base_label: "", path: "Garbage Collection", lineno: 0)) end end end - context 'when sampling a thread with empty locations' do + context "when sampling a thread with empty locations" do let(:ready_pipe) { IO.pipe } let(:in_gc) { false } - let(:stacks) { { reference: thread_with_empty_locations.backtrace_locations, gathered: sample_and_decode(thread_with_empty_locations, in_gc: in_gc) } } + let(:stacks) { {reference: thread_with_empty_locations.backtrace_locations, gathered: sample_and_decode(thread_with_empty_locations, in_gc: in_gc)} } let(:finish_pipe) { IO.pipe } let(:thread_with_empty_locations) do @@ -599,7 +639,7 @@ def dummy_template.#{method_name}(ready_queue) fork do # Signal ready to parent read_ready_pipe.close - write_ready_pipe.write('ready') + write_ready_pipe.write("ready") write_ready_pipe.close # Wait for parent to signal we can exit @@ -616,7 +656,7 @@ def dummy_template.#{method_name}(ready_queue) # Wait for child to signal ready read_ready_pipe, write_ready_pipe = ready_pipe write_ready_pipe.close - expect(read_ready_pipe.read).to eq 'ready' + expect(read_ready_pipe.read).to eq "ready" read_ready_pipe.close expect(reference_stack).to be_empty @@ -630,38 +670,38 @@ def dummy_template.#{method_name}(ready_queue) end it 'gathers a one-element stack with a "In native code" placeholder' do - expect(gathered_stack).to contain_exactly(have_attributes(base_label: '', path: 'In native code', lineno: 0)) + expect(gathered_stack).to contain_exactly(have_attributes(base_label: "", path: "In native code", lineno: 0)) end - context 'when marking sample as being in garbage collection' do + context "when marking sample as being in garbage collection" do let(:in_gc) { true } it 'gathers a one-element stack with a "Garbage Collection" placeholder' do - expect(stacks.fetch(:gathered)).to contain_exactly(have_attributes(base_label: '', path: 'Garbage Collection', lineno: 0)) + expect(stacks.fetch(:gathered)).to contain_exactly(have_attributes(base_label: "", path: "Garbage Collection", lineno: 0)) end end end - context 'when trying to sample something which is not a thread' do - it 'raises a TypeError' do + context "when trying to sample something which is not a thread" do + it "raises a TypeError" do expect do - sample(:not_a_thread, build_stack_recorder, metric_values, labels) + sample(:not_a_thread, Datadog::Profiling::StackRecorder.for_testing, metric_values, labels) end.to raise_error(TypeError) end end - context 'when max_frames is too small' do - it 'raises an ArgumentError' do + context "when max_frames is too small" do + it "raises an ArgumentError" do expect do - sample(Thread.current, build_stack_recorder, metric_values, labels, max_frames: 4) + sample(Thread.current, Datadog::Profiling::StackRecorder.for_testing, metric_values, labels, max_frames: 4) end.to raise_error(ArgumentError) end end - context 'when max_frames is too large' do - it 'raises an ArgumentError' do + context "when max_frames is too large" do + it "raises an ArgumentError" do expect do - sample(Thread.current, build_stack_recorder, metric_values, labels, max_frames: 10_001) + sample(Thread.current, Datadog::Profiling::StackRecorder.for_testing, metric_values, labels, max_frames: 10_001) end.to raise_error(ArgumentError) end end @@ -672,8 +712,8 @@ def convert_reference_stack(raw_reference_stack) end end - def sample_and_decode(thread, data = :locations, max_frames: 400, recorder: build_stack_recorder, in_gc: false) - sample(thread, recorder, metric_values, labels, max_frames: max_frames, in_gc: in_gc) + def sample_and_decode(thread, data = :locations, recorder: Datadog::Profiling::StackRecorder.for_testing, **options) + sample(thread, recorder, metric_values, labels, **options) samples = samples_from_pprof(recorder.serialize!) @@ -690,7 +730,7 @@ def self.thread_with_stack_depth(depth) # Since in this helper we want to have precise control over how many frames are on the stack of a given thread, # we need to take into account that the DatadogThreadDebugger adds one more frame to the stack. first_method = - defined?(DatadogThreadDebugger) && Thread.include?(DatadogThreadDebugger) ? :deep_stack_2 : :deep_stack_1 + (defined?(DatadogThreadDebugger) && Thread.include?(DatadogThreadDebugger)) ? :deep_stack_2 : :deep_stack_1 thread = Thread.new(&DeepStackSimulator.new(target_depth: depth, ready_queue: ready_queue).method(first_method)) thread.name = "Deep stack #{depth}" if thread.respond_to?(:name=) diff --git a/spec/datadog/profiling/collectors/thread_context_spec.rb b/spec/datadog/profiling/collectors/thread_context_spec.rb index 024a127abfb..555ec9408f6 100644 --- a/spec/datadog/profiling/collectors/thread_context_spec.rb +++ b/spec/datadog/profiling/collectors/thread_context_spec.rb @@ -1,5 +1,5 @@ -require 'datadog/profiling/spec_helper' -require 'datadog/profiling/collectors/thread_context' +require "datadog/profiling/spec_helper" +require "datadog/profiling/collectors/thread_context" RSpec.describe Datadog::Profiling::Collectors::ThreadContext do before do @@ -9,7 +9,9 @@ expect(Thread.list).to include(Thread.main, t1, t2, t3) end - let(:recorder) { build_stack_recorder(timeline_enabled: timeline_enabled) } + let(:recorder) do + Datadog::Profiling::StackRecorder.for_testing(alloc_samples_enabled: true, timeline_enabled: timeline_enabled) + end let(:ready_queue) { Queue.new } let(:t1) do Thread.new(ready_queue) do |ready_queue| @@ -39,7 +41,11 @@ let(:tracer) { nil } let(:endpoint_collection_enabled) { true } let(:timeline_enabled) { false } - let(:allocation_type_enabled) { true } + # This mirrors the use of RUBY_FIXNUM_MAX for GVL_WAITING_ENABLED_EMPTY in the native code; it may need adjusting if we + # ever want to support more platforms + let(:gvl_waiting_enabled_empty_magic_value) { 2**62 - 1 } + let(:waiting_for_gvl_threshold_ns) { 222_333_444 } + let(:otel_context_enabled) { false } subject(:cpu_and_wall_time_collector) do described_class.new( @@ -48,7 +54,8 @@ tracer: tracer, endpoint_collection_enabled: endpoint_collection_enabled, timeline_enabled: timeline_enabled, - allocation_type_enabled: allocation_type_enabled, + waiting_for_gvl_threshold_ns: waiting_for_gvl_threshold_ns, + otel_context_enabled: otel_context_enabled, ) end @@ -71,14 +78,34 @@ def on_gc_finish described_class::Testing._native_on_gc_finish(cpu_and_wall_time_collector) end - def sample_after_gc - described_class::Testing._native_sample_after_gc(cpu_and_wall_time_collector) + def sample_after_gc(reset_monotonic_to_system_state: false) + described_class::Testing._native_sample_after_gc(cpu_and_wall_time_collector, reset_monotonic_to_system_state) end def sample_allocation(weight:, new_object: Object.new) described_class::Testing._native_sample_allocation(cpu_and_wall_time_collector, weight, new_object) end + def sample_skipped_allocation_samples(skipped_samples) + described_class::Testing._native_sample_skipped_allocation_samples(cpu_and_wall_time_collector, skipped_samples) + end + + def on_gvl_waiting(thread) + described_class::Testing._native_on_gvl_waiting(thread) + end + + def gvl_waiting_at_for(thread) + described_class::Testing._native_gvl_waiting_at_for(thread) + end + + def on_gvl_running(thread) + described_class::Testing._native_on_gvl_running(thread) + end + + def sample_after_gvl_running(thread) + described_class::Testing._native_sample_after_gvl_running(cpu_and_wall_time_collector, thread) + end + def thread_list described_class::Testing._native_thread_list end @@ -95,6 +122,11 @@ def gc_tracking described_class::Testing._native_gc_tracking(cpu_and_wall_time_collector) end + def apply_delta_to_cpu_time_at_previous_sample_ns(thread, delta_ns) + described_class::Testing + ._native_apply_delta_to_cpu_time_at_previous_sample_ns(cpu_and_wall_time_collector, thread, delta_ns) + end + # This method exists only so we can look for its name in the stack trace in a few tests def inside_t1 yield @@ -105,66 +137,73 @@ def another_way_of_calling_sample(profiler_overhead_stack_thread: Thread.current sample(profiler_overhead_stack_thread: profiler_overhead_stack_thread) end - describe '#sample' do - it 'samples all threads' do + describe ".new" do + it "sets the waiting_for_gvl_threshold_ns to the provided value" do + # This is a bit ugly but it saves us from having to introduce yet another way to poke at the native state + expect(cpu_and_wall_time_collector.inspect).to include("global_waiting_for_gvl_threshold_ns=222333444") + end + end + + describe "#sample" do + it "samples all threads" do all_threads = Thread.list sample - expect(Thread.list).to eq(all_threads), 'Threads finished during this spec, causing flakiness!' + expect(Thread.list).to eq(all_threads), "Threads finished during this spec, causing flakiness!" - seen_threads = samples.map(&:labels).map { |it| it.fetch(:'thread id') }.uniq + seen_threads = samples.map(&:labels).map { |it| it.fetch(:"thread id") }.uniq expect(seen_threads.size).to be all_threads.size end - it 'tags the samples with the object ids of the Threads they belong to' do + it "tags the samples with the object ids of the Threads they belong to" do sample - expect(samples.map { |it| object_id_from(it.labels.fetch(:'thread id')) }) + expect(samples.map { |it| object_id_from(it.labels.fetch(:"thread id")) }) .to include(*[Thread.main, t1, t2, t3].map(&:object_id)) end - it 'includes the thread names' do - t1.name = 'thread t1' - t2.name = 'thread t2' + it "includes the thread names" do + t1.name = "thread t1" + t2.name = "thread t2" sample t1_sample = samples_for_thread(samples, t1).first t2_sample = samples_for_thread(samples, t2).first - expect(t1_sample.labels).to include(:'thread name' => 'thread t1') - expect(t2_sample.labels).to include(:'thread name' => 'thread t2') + expect(t1_sample.labels).to include("thread name": "thread t1") + expect(t2_sample.labels).to include("thread name": "thread t2") end - context 'when no thread names are available' do + context "when no thread names are available" do # NOTE: As of this writing, the dd-trace-rb spec_helper.rb includes a monkey patch to Thread creation that we use # to track specs that leak threads. This means that the invoke_location of every thread will point at the # spec_helper in our test suite. Just in case you're looking at the output and being a bit confused :) - it 'uses the thread_invoke_location as a thread name' do + it "uses the thread_invoke_location as a thread name" do t1.name = nil sample t1_sample = samples_for_thread(samples, t1).first - expect(t1_sample.labels).to include(:'thread name' => per_thread_context.fetch(t1).fetch(:thread_invoke_location)) - expect(t1_sample.labels).to include(:'thread name' => match(/.+\.rb:\d+/)) + expect(t1_sample.labels).to include("thread name": per_thread_context.fetch(t1).fetch(:thread_invoke_location)) + expect(t1_sample.labels).to include("thread name": match(/.+\.rb:\d+/)) end end - it 'includes a fallback name for the main thread, when not set' do - expect(Thread.main.name).to eq('Thread.main') # We set this in the spec_helper.rb + it "includes a fallback name for the main thread, when not set" do + expect(Thread.main.name).to eq("Thread.main") # We set this in the spec_helper.rb Thread.main.name = nil sample - expect(samples_for_thread(samples, Thread.main).first.labels).to include(:'thread name' => 'main') + expect(samples_for_thread(samples, Thread.main).first.labels).to include("thread name": "main") - Thread.main.name = 'Thread.main' + Thread.main.name = "Thread.main" end - it 'includes the wall-time elapsed between samples' do + it "includes the wall-time elapsed between samples" do sample wall_time_at_first_sample = per_thread_context.fetch(t1).fetch(:wall_time_at_previous_sample_ns) @@ -175,22 +214,22 @@ def another_way_of_calling_sample(profiler_overhead_stack_thread: Thread.current t1_samples = samples_for_thread(samples, t1) - wall_time = t1_samples.map(&:values).map { |it| it.fetch(:'wall-time') }.reduce(:+) + wall_time = t1_samples.map(&:values).map { |it| it.fetch(:"wall-time") }.reduce(:+) expect(wall_time).to be(wall_time_at_second_sample - wall_time_at_first_sample) end - it 'tags samples with how many times they were seen' do + it "tags samples with how many times they were seen" do 5.times { sample } t1_samples = samples_for_thread(samples, t1) - expect(t1_samples.map(&:values).map { |it| it.fetch(:'cpu-samples') }.reduce(:+)).to eq 5 + expect(t1_samples.map(&:values).map { |it| it.fetch(:"cpu-samples") }.reduce(:+)).to eq 5 end - context 'when a thread is marked as being in garbage collection by on_gc_start' do + context "when a thread is marked as being in garbage collection by on_gc_start" do # @ivoanjo: This spec exists because for cpu-time the behavior is not this one (e.g. we don't keep recording # cpu-time), and I wanted to validate that the different behavior does not get applied to wall-time. - it 'keeps recording the wall-time after every sample' do + it "keeps recording the wall-time after every sample" do sample wall_time_at_first_sample = per_thread_context.fetch(Thread.current).fetch(:wall_time_at_previous_sample_ns) @@ -209,25 +248,25 @@ def another_way_of_calling_sample(profiler_overhead_stack_thread: Thread.current end end - context 'cpu-time behavior' do - context 'when not on Linux' do + context "cpu-time behavior" do + context "when not on Linux" do before do - skip 'The fallback behavior only applies when not on Linux' if PlatformHelpers.linux? + skip "The fallback behavior only applies when not on Linux" if PlatformHelpers.linux? end - it 'sets the cpu-time on every sample to zero' do + it "sets the cpu-time on every sample to zero" do 5.times { sample } - expect(samples).to all have_attributes(values: include(:'cpu-time' => 0)) + expect(samples).to all have_attributes(values: include("cpu-time": 0)) end end - context 'on Linux' do + context "on Linux" do before do - skip 'Test only runs on Linux' unless PlatformHelpers.linux? + skip "Test only runs on Linux" unless PlatformHelpers.linux? end - it 'includes the cpu-time for the samples' do + it "includes the cpu-time for the samples" do rspec_thread_spent_time = Datadog::Core::Utils::Time.measure(:nanosecond) do 5.times { sample } samples # to trigger serialization @@ -237,7 +276,7 @@ def another_way_of_calling_sample(profiler_overhead_stack_thread: Thread.current # some data for it total_cpu_for_rspec_thread = samples_for_thread(samples, Thread.current) - .map { |it| it.values.fetch(:'cpu-time') } + .map { |it| it.values.fetch(:"cpu-time") } .reduce(:+) # The **wall-clock time** spent by the rspec thread is going to be an upper bound for the cpu time spent, @@ -246,22 +285,22 @@ def another_way_of_calling_sample(profiler_overhead_stack_thread: Thread.current expect(total_cpu_for_rspec_thread).to be_between(1, rspec_thread_spent_time) end - context 'when a thread is marked as being in garbage collection by on_gc_start' do - it 'records the cpu-time between a previous sample and the start of garbage collection, and no further time' do + context "when a thread is marked as being in garbage collection by on_gc_start" do + it "records the cpu-time between a previous sample and the start of garbage collection, and no further time" do sample cpu_time_at_first_sample = per_thread_context.fetch(Thread.current).fetch(:cpu_time_at_previous_sample_ns) on_gc_start - cpu_time_at_gc_start = per_thread_context.fetch(Thread.current).fetch(:'gc_tracking.cpu_time_at_start_ns') + cpu_time_at_gc_start = per_thread_context.fetch(Thread.current).fetch(:"gc_tracking.cpu_time_at_start_ns") # Even though we keep calling sample, the result only includes the time until we called on_gc_start 5.times { another_way_of_calling_sample } total_cpu_for_rspec_thread = samples_for_thread(samples, Thread.current) - .select { |it| it.locations.find { |frame| frame.base_label == 'another_way_of_calling_sample' } } - .map { |it| it.values.fetch(:'cpu-time') } + .select { |it| it.locations.find { |frame| frame.base_label == "another_way_of_calling_sample" } } + .map { |it| it.values.fetch(:"cpu-time") } .reduce(:+) expect(total_cpu_for_rspec_thread).to be(cpu_time_at_gc_start - cpu_time_at_first_sample) @@ -269,12 +308,12 @@ def another_way_of_calling_sample(profiler_overhead_stack_thread: Thread.current # When a thread is marked as being in GC the cpu_time_at_previous_sample_ns is not allowed to advance until # the GC finishes. - it 'does not advance cpu_time_at_previous_sample_ns for the thread beyond gc_tracking.cpu_time_at_start_ns' do + it "does not advance cpu_time_at_previous_sample_ns for the thread beyond gc_tracking.cpu_time_at_start_ns" do sample on_gc_start - cpu_time_at_gc_start = per_thread_context.fetch(Thread.current).fetch(:'gc_tracking.cpu_time_at_start_ns') + cpu_time_at_gc_start = per_thread_context.fetch(Thread.current).fetch(:"gc_tracking.cpu_time_at_start_ns") 5.times { sample } @@ -285,13 +324,13 @@ def another_way_of_calling_sample(profiler_overhead_stack_thread: Thread.current end end - context 'when a thread is unmarked as being in garbage collection by on_gc_finish' do - it 'lets cpu_time_at_previous_sample_ns advance again' do + context "when a thread is unmarked as being in garbage collection by on_gc_finish" do + it "lets cpu_time_at_previous_sample_ns advance again" do sample on_gc_start - cpu_time_at_gc_start = per_thread_context.fetch(Thread.current).fetch(:'gc_tracking.cpu_time_at_start_ns') + cpu_time_at_gc_start = per_thread_context.fetch(Thread.current).fetch(:"gc_tracking.cpu_time_at_start_ns") on_gc_finish @@ -306,11 +345,11 @@ def another_way_of_calling_sample(profiler_overhead_stack_thread: Thread.current end end - describe 'code hotspots' do + describe "code hotspots" do let(:t1_sample) { samples_for_thread(samples, t1).first } - shared_examples_for 'samples without code hotspots information' do - it 'samples successfully' do + shared_examples_for "samples without code hotspots information" do + it "samples successfully" do sample expect(t1_sample).to_not be_nil @@ -321,52 +360,53 @@ def another_way_of_calling_sample(profiler_overhead_stack_thread: Thread.current found_labels = t1_sample.labels.keys - expect(found_labels).to_not include(:'local root span id') - expect(found_labels).to_not include(:'span id') + expect(found_labels).to_not include(:"local root span id") + expect(found_labels).to_not include(:"span id") - expect(found_labels).to include(:'thread id') # Sanity check + expect(found_labels).to include(:"thread id") # Sanity check end end - context 'when there is no tracer instance available' do + context "when there is no tracer instance available" do let(:tracer) { nil } - it_behaves_like 'samples without code hotspots information' + it_behaves_like "samples without code hotspots information" end - context 'when tracer has no provider API' do - let(:tracer) { double('Tracer without provider API') } - it_behaves_like 'samples without code hotspots information' + context "when tracer has no provider API" do + let(:tracer) { double("Tracer without provider API") } + it_behaves_like "samples without code hotspots information" end - context 'when tracer provider is nil' do - let(:tracer) { double('Tracer with nil provider', provider: nil) } - it_behaves_like 'samples without code hotspots information' + context "when tracer provider is nil" do + let(:tracer) { double("Tracer with nil provider", provider: nil) } + it_behaves_like "samples without code hotspots information" end - context 'when there is a tracer instance available' do + context "when there is a tracer instance available" do let(:tracer) { Datadog::Tracing.send(:tracer) } after { Datadog::Tracing.shutdown! } - context 'when thread does not have a tracer context' do + context "when thread does not have a tracer context" do # NOTE: Since t1 is newly created for this test, and never had any active trace, it won't have a context - it_behaves_like 'samples without code hotspots information' + it_behaves_like "samples without code hotspots information" end - context 'when thread has a tracer context, but no trace is in progress' do + context "when thread has a tracer context, but no trace is in progress" do before { tracer.active_trace(t1) } # Trigger context setting - it_behaves_like 'samples without code hotspots information' + it_behaves_like "samples without code hotspots information" end - context 'when thread has a tracer context, and a trace is in progress' do - let(:root_span_type) { 'not-web' } + context "when thread has a tracer context, and a trace is in progress" do + let(:root_span_type) { "not-web" } + let(:allow_invalid_ids) { false } let(:t1) do Thread.new(ready_queue) do |ready_queue| - Datadog::Tracing.trace('profiler.test', type: root_span_type) do |_span, trace| + Datadog::Tracing.trace("profiler.test", type: root_span_type) do |_span, trace| @t1_trace = trace - Datadog::Tracing.trace('profiler.test.inner') do |inner_span| + Datadog::Tracing.trace("profiler.test.inner") do |inner_span| @t1_span_id = inner_span.id @t1_local_root_span_id = trace.send(:root_span).id ready_queue << true @@ -377,8 +417,10 @@ def another_way_of_calling_sample(profiler_overhead_stack_thread: Thread.current end before do - expect(@t1_span_id.to_i).to be > 0 - expect(@t1_local_root_span_id.to_i).to be > 0 + unless allow_invalid_ids + expect(@t1_span_id.to_i).to be > 0 + expect(@t1_local_root_span_id.to_i).to be > 0 + end end it 'includes "local root span id" and "span id" labels in the samples' do @@ -387,51 +429,51 @@ def another_way_of_calling_sample(profiler_overhead_stack_thread: Thread.current sample expect(t1_sample.labels).to include( - :'local root span id' => @t1_local_root_span_id.to_i, - :'span id' => @t1_span_id.to_i, + "local root span id": @t1_local_root_span_id.to_i, + "span id": @t1_span_id.to_i, ) end it 'does not include the "trace endpoint" label' do sample - expect(t1_sample.labels).to_not include(:'trace endpoint' => anything) + expect(t1_sample.labels).to_not include("trace endpoint": anything) end - shared_examples_for 'samples with code hotspots information' do + shared_examples_for "samples with code hotspots information" do it 'includes the "trace endpoint" label in the samples' do sample - expect(t1_sample.labels).to include(:'trace endpoint' => 'profiler.test') + expect(t1_sample.labels).to include("trace endpoint": "profiler.test") end - context 'when endpoint_collection_enabled is false' do + context "when endpoint_collection_enabled is false" do let(:endpoint_collection_enabled) { false } it 'still includes "local root span id" and "span id" labels in the samples' do sample expect(t1_sample.labels).to include( - :'local root span id' => @t1_local_root_span_id.to_i, - :'span id' => @t1_span_id.to_i, + "local root span id": @t1_local_root_span_id.to_i, + "span id": @t1_span_id.to_i, ) end it 'does not include the "trace endpoint" label' do sample - expect(t1_sample.labels).to_not include(:'trace endpoint' => anything) + expect(t1_sample.labels).to_not include("trace endpoint": anything) end end - describe 'trace vs root span resource mutation' do + describe "trace vs root span resource mutation" do let(:t1) do Thread.new(ready_queue) do |ready_queue| - Datadog::Tracing.trace('profiler.test', type: root_span_type) do |span, trace| + Datadog::Tracing.trace("profiler.test", type: root_span_type) do |span, trace| trace.resource = trace_resource span.resource = root_span_resource - Datadog::Tracing.trace('profiler.test.inner') do |inner_span| + Datadog::Tracing.trace("profiler.test.inner") do |inner_span| @t1_span_id = inner_span.id @t1_local_root_span_id = trace.send(:root_span).id ready_queue << true @@ -441,44 +483,44 @@ def another_way_of_calling_sample(profiler_overhead_stack_thread: Thread.current end end - context 'when the trace resource is nil but the root span resource is not nil' do + context "when the trace resource is nil but the root span resource is not nil" do let(:trace_resource) { nil } - let(:root_span_resource) { 'root_span_resource' } + let(:root_span_resource) { "root_span_resource" } it 'includes the "trace endpoint" label in the samples with the root span resource' do sample - expect(t1_sample.labels).to include(:'trace endpoint' => 'root_span_resource') + expect(t1_sample.labels).to include("trace endpoint": "root_span_resource") end end - context 'when both the trace resource and the root span resource are specified' do - let(:trace_resource) { 'trace_resource' } - let(:root_span_resource) { 'root_span_resource' } + context "when both the trace resource and the root span resource are specified" do + let(:trace_resource) { "trace_resource" } + let(:root_span_resource) { "root_span_resource" } it 'includes the "trace endpoint" label in the samples with the trace resource' do sample - expect(t1_sample.labels).to include(:'trace endpoint' => 'trace_resource') + expect(t1_sample.labels).to include("trace endpoint": "trace_resource") end end - context 'when both the trace resource and the root span resource are nil' do + context "when both the trace resource and the root span resource are nil" do let(:trace_resource) { nil } let(:root_span_resource) { nil } it 'does not include the "trace endpoint" label' do sample - expect(t1_sample.labels.keys).to_not include(:'trace endpoint') + expect(t1_sample.labels.keys).to_not include(:"trace endpoint") end end end - context 'when resource is changed after a sample was taken' do + context "when resource is changed after a sample was taken" do before do sample - @t1_trace.resource = 'changed_after_first_sample' + @t1_trace.resource = "changed_after_first_sample" end it 'changes the "trace endpoint" label in all samples' do @@ -487,67 +529,72 @@ def another_way_of_calling_sample(profiler_overhead_stack_thread: Thread.current t1_samples = samples_for_thread(samples, t1) expect(t1_samples) - .to all have_attributes(labels: include(:'trace endpoint' => 'changed_after_first_sample')) - expect(t1_samples.map(&:values).map { |it| it.fetch(:'cpu-samples') }.reduce(:+)).to eq 2 + .to all have_attributes(labels: include("trace endpoint": "changed_after_first_sample")) + expect(t1_samples.map(&:values).map { |it| it.fetch(:"cpu-samples") }.reduce(:+)).to eq 2 end - context 'when the resource is changed multiple times' do + context "when the resource is changed multiple times" do it 'changes the "trace endpoint" label in all samples' do sample - @t1_trace.resource = 'changed_after_second_sample' + @t1_trace.resource = "changed_after_second_sample" sample t1_samples = samples_for_thread(samples, t1) expect(t1_samples) - .to all have_attributes(labels: include(:'trace endpoint' => 'changed_after_second_sample')) - expect(t1_samples.map(&:values).map { |it| it.fetch(:'cpu-samples') }.reduce(:+)).to eq 3 + .to all have_attributes(labels: include("trace endpoint": "changed_after_second_sample")) + expect(t1_samples.map(&:values).map { |it| it.fetch(:"cpu-samples") }.reduce(:+)).to eq 3 end end end end - context 'when local root span type is web' do - let(:root_span_type) { 'web' } + context "when local root span type is web" do + let(:root_span_type) { "web" } - it_behaves_like 'samples with code hotspots information' + it_behaves_like "samples with code hotspots information" end # Used by the rack integration with request_queuing: true - context 'when local root span type is proxy' do - let(:root_span_type) { 'proxy' } + context "when local root span type is proxy" do + let(:root_span_type) { "proxy" } - it_behaves_like 'samples with code hotspots information' + it_behaves_like "samples with code hotspots information" end - context 'when local root span type is worker' do - let(:root_span_type) { 'worker' } + context "when local root span type is worker" do + let(:root_span_type) { "worker" } - it_behaves_like 'samples with code hotspots information' + it_behaves_like "samples with code hotspots information" end def self.otel_sdk_available? - begin - require 'opentelemetry/sdk' - true - rescue LoadError - false - end + require "opentelemetry/sdk" + true + rescue LoadError + false end - context 'when trace comes from otel sdk', if: otel_sdk_available? do + def self.otel_otlp_exporter_available? + require "opentelemetry-exporter-otlp" + true + rescue LoadError + false + end + + context "when trace comes from otel sdk", if: otel_sdk_available? && !otel_otlp_exporter_available? do let(:otel_tracer) do - require 'datadog/opentelemetry' + require "datadog/opentelemetry" OpenTelemetry::SDK.configure - OpenTelemetry.tracer_provider.tracer('datadog-profiling-test') + OpenTelemetry.tracer_provider.tracer("datadog-profiling-test") end let(:t1) do Thread.new(ready_queue, otel_tracer) do |ready_queue, otel_tracer| - otel_tracer.in_span('profiler.test') do + otel_tracer.in_span("profiler.test") do @t1_span_id = Datadog::Tracing.correlation.span_id @t1_local_root_span_id = Datadog::Tracing.correlation.span_id ready_queue << true @@ -560,25 +607,25 @@ def self.otel_sdk_available? sample expect(t1_sample.labels).to include( - :'local root span id' => @t1_local_root_span_id.to_i, - :'span id' => @t1_span_id.to_i, + "local root span id": @t1_local_root_span_id.to_i, + "span id": @t1_span_id.to_i, ) end it 'does not include the "trace endpoint" label' do sample - expect(t1_sample.labels).to_not include(:'trace endpoint' => anything) + expect(t1_sample.labels).to_not include("trace endpoint": anything) end - context 'when there are multiple otel spans nested' do + context "when there are multiple otel spans nested" do let(:t1) do Thread.new(ready_queue, otel_tracer) do |ready_queue, otel_tracer| - otel_tracer.in_span('profiler.test') do + otel_tracer.in_span("profiler.test") do @t1_local_root_span_id = Datadog::Tracing.correlation.span_id - otel_tracer.in_span('profiler.test.nested.1') do - otel_tracer.in_span('profiler.test.nested.2') do - otel_tracer.in_span('profiler.test.nested.3') do + otel_tracer.in_span("profiler.test.nested.1") do + otel_tracer.in_span("profiler.test.nested.2") do + otel_tracer.in_span("profiler.test.nested.3") do @t1_span_id = Datadog::Tracing.correlation.span_id ready_queue << true sleep @@ -593,24 +640,24 @@ def self.otel_sdk_available? sample expect(t1_sample.labels).to include( - :'local root span id' => @t1_local_root_span_id.to_i, - :'span id' => @t1_span_id.to_i, + "local root span id": @t1_local_root_span_id.to_i, + "span id": @t1_span_id.to_i, ) end end - context 'mixing of otel sdk and datadog' do - context 'when top-level span is started from datadog' do + context "mixing of otel sdk and datadog" do + context "when top-level span is started from datadog" do let(:t1) do Thread.new(ready_queue, otel_tracer) do |ready_queue, otel_tracer| - Datadog::Tracing.trace('profiler.test', type: :web) do |_span, trace| - trace.resource = 'example_resource' + Datadog::Tracing.trace("profiler.test", type: :web) do |_span, trace| + trace.resource = "example_resource" @t1_local_root_span_id = Datadog::Tracing.correlation.span_id - otel_tracer.in_span('profiler.test.nested.1') do - Datadog::Tracing.trace('profiler.test.nested.2') do - otel_tracer.in_span('profiler.test.nested.3') do - Datadog::Tracing.trace('profiler.test.nested.4') do + otel_tracer.in_span("profiler.test.nested.1") do + Datadog::Tracing.trace("profiler.test.nested.2") do + otel_tracer.in_span("profiler.test.nested.3") do + Datadog::Tracing.trace("profiler.test.nested.4") do @t1_span_id = Datadog::Tracing.correlation.span_id ready_queue << true sleep @@ -622,31 +669,31 @@ def self.otel_sdk_available? end end - it 'uses the local root span id from the top-level span, and the span id from the leaf span' do + it "uses the local root span id from the top-level span, and the span id from the leaf span" do sample expect(t1_sample.labels).to include( - :'local root span id' => @t1_local_root_span_id.to_i, - :'span id' => @t1_span_id.to_i, + "local root span id": @t1_local_root_span_id.to_i, + "span id": @t1_span_id.to_i, ) end it 'includes the "trace endpoint" label in the samples with the trace resource' do sample - expect(t1_sample.labels).to include(:'trace endpoint' => 'example_resource') + expect(t1_sample.labels).to include("trace endpoint": "example_resource") end end - context 'when top-level span is started from otel' do + context "when top-level span is started from otel" do let(:t1) do Thread.new(ready_queue, otel_tracer) do |ready_queue, otel_tracer| - otel_tracer.in_span('profiler.test') do + otel_tracer.in_span("profiler.test") do @t1_local_root_span_id = Datadog::Tracing.correlation.span_id - otel_tracer.in_span('profiler.test.nested.1') do - Datadog::Tracing.trace('profiler.test.nested.2') do - otel_tracer.in_span('profiler.test.nested.3') do - Datadog::Tracing.trace('profiler.test.nested.4') do + otel_tracer.in_span("profiler.test.nested.1") do + Datadog::Tracing.trace("profiler.test.nested.2") do + otel_tracer.in_span("profiler.test.nested.3") do + Datadog::Tracing.trace("profiler.test.nested.4") do @t1_span_id = Datadog::Tracing.correlation.span_id ready_queue << true sleep @@ -658,21 +705,237 @@ def self.otel_sdk_available? end end - it 'uses the local root span id from the top-level span, and the span id from the leaf span' do + it "uses the local root span id from the top-level span, and the span id from the leaf span" do + sample + + expect(t1_sample.labels).to include( + "local root span id": @t1_local_root_span_id.to_i, + "span id": @t1_span_id.to_i, + ) + end + end + end + end + + context( + "when trace comes from otel sdk and the ddtrace otel support is not loaded", + if: otel_sdk_available? && otel_otlp_exporter_available? + ) do + let(:otel_tracer) do + if defined?(Datadog::OpenTelemetry::LOADED) + raise "This test should not be run with the ddtrace otel support loaded. " \ + "Make sure that no `require 'datadog/opentelemetry'` runs when testing this spec." + end + + OpenTelemetry::SDK.configure + OpenTelemetry.tracer_provider.tracer("ddtrace-profiling-test") + end + let(:otel_context_enabled) { :both } + let(:t1) do + Thread.new(ready_queue, otel_tracer) do |ready_queue, otel_tracer| + otel_tracer.in_span("profiler.test") do |span| + @t1_span_id = otel_span_id_to_i(span.context.span_id) + @t1_local_root_span_id = @t1_span_id + ready_queue << true + sleep + end + end + end + + after do + OpenTelemetry.tracer_provider.shutdown + end + + def otel_span_id_to_i(span_id) + span_id.unpack1("Q>").to_i + end + + it 'includes "local root span id" and "span id" labels in the samples' do + sample + + expect(t1_sample.labels).to include( + "local root span id": @t1_local_root_span_id.to_i, + "span id": @t1_span_id.to_i, + ) + end + + it 'does not include the "trace endpoint" label' do + sample + + expect(t1_sample.labels).to_not include("trace endpoint": anything) + end + + context 'when otel_context_enabled is false' do + let(:otel_context_enabled) { false } + + it 'does not include "local root span id" or "span id" labels in the samples' do + sample + + expect(t1_sample.labels.keys).to_not include(:"local root span id", :"span id") + end + end + + context "when there are multiple otel spans nested" do + let(:t1) do + Thread.new(ready_queue, otel_tracer) do |ready_queue, otel_tracer| + otel_tracer.in_span("profiler.test") do |root_span| + @t1_local_root_span_id = otel_span_id_to_i(root_span.context.span_id) + otel_tracer.in_span("profiler.test.nested.1") do + otel_tracer.in_span("profiler.test.nested.2") do + otel_tracer.in_span("profiler.test.nested.3") do |leaf_span| + @t1_span_id = otel_span_id_to_i(leaf_span.context.span_id) + ready_queue << true + sleep + end + end + end + end + end + end + + it 'includes "local root span id" and "span id" labels in the samples' do + sample + + expect(t1_sample.labels).to include( + "local root span id": @t1_local_root_span_id.to_i, + "span id": @t1_span_id.to_i, + ) + end + end + + context "when the context storage contains spans related to multiple traces" do + let(:t1) do + Thread.new(ready_queue, otel_tracer) do |ready_queue, otel_tracer| + otel_tracer.in_span("another.trace") do # <-- Is ignored + OpenTelemetry::Trace.with_span( + otel_tracer.start_span("profiler.test", with_parent: OpenTelemetry::Context.empty) + ) do |root_span| + @t1_local_root_span_id = otel_span_id_to_i(root_span.context.span_id) + otel_tracer.in_span("profiler.test.nested.1") do |leaf_span| + @t1_span_id = otel_span_id_to_i(leaf_span.context.span_id) + ready_queue << true + sleep + end + end + end + end + end + + it 'includes "local root span id" and "span id" labels in the samples' do + sample + + expect(t1_sample.labels).to include( + "local root span id": @t1_local_root_span_id.to_i, + "span id": @t1_span_id.to_i, + ) + end + end + + context "when local root span kind is :server" do + let(:t1) do + Thread.new(ready_queue, otel_tracer) do |ready_queue, otel_tracer| + otel_tracer.in_span("profiler.test", kind: :server) do |span| + @t1_span_id = otel_span_id_to_i(span.context.span_id) + @t1_local_root_span_id = @t1_span_id + ready_queue << true + sleep + end + end + end + + it 'includes the "trace endpoint" label' do + sample + + expect(t1_sample.labels).to include("trace endpoint": "profiler.test") + end + + context "when there are multiple otel spans nested" do + let(:t1) do + Thread.new(ready_queue, otel_tracer) do |ready_queue, otel_tracer| + otel_tracer.in_span("profiler.test", kind: :server) do |root_span| + @t1_local_root_span_id = otel_span_id_to_i(root_span.context.span_id) + otel_tracer.in_span("profiler.test.nested.1") do + otel_tracer.in_span("profiler.test.nested.2") do + otel_tracer.in_span("profiler.test.nested.3") do |leaf_span| + @t1_span_id = otel_span_id_to_i(leaf_span.context.span_id) + ready_queue << true + sleep + end + end + end + end + end + end + + it 'includes the "trace endpoint" label set to the root span name' do + sample + + expect(t1_sample.labels).to include("trace endpoint": "profiler.test") + end + end + + context "when endpoint_collection_enabled is false" do + let(:endpoint_collection_enabled) { false } + + it 'still includes "local root span id" and "span id" labels in the samples' do sample expect(t1_sample.labels).to include( - :'local root span id' => @t1_local_root_span_id.to_i, - :'span id' => @t1_span_id.to_i, + "local root span id": @t1_local_root_span_id.to_i, + "span id": @t1_span_id.to_i, ) end + + it 'does not include the "trace endpoint" label' do + sample + + expect(t1_sample.labels).to_not include("trace endpoint": anything) + end end end + + context "when current span is invalid" do + let(:allow_invalid_ids) { true } + + let(:t1) do + Thread.new(ready_queue, otel_tracer) do |ready_queue, _otel_tracer| + OpenTelemetry::Trace.with_span(OpenTelemetry::Trace::Span::INVALID) do |span| + @t1_span_id = otel_span_id_to_i(span.context.span_id) + @t1_local_root_span_id = @t1_span_id + ready_queue << true + sleep + end + end + end + + before do + expect(@t1_span_id).to be 0 + end + + it 'does not include the "local root span id" and "span id" labels in the samples' do + sample + + expect(t1_sample.labels).to_not include( + "local root span id": anything, + "span id": anything, + ) + end + end + end + + context "when trace comes from otel sdk (warning)", unless: otel_sdk_available? do + it "is not being tested" do + skip "Skipping OpenTelemetry tests because `opentelemetry-sdk` gem is not available" + end end - context 'when trace comes from otel sdk (warning)', unless: otel_sdk_available? do - it 'is not being tested' do - skip 'Skipping OpenTelemetry tests because `opentelemetry-sdk` gem is not available' + context "when trace comes from otel sdk (warning)", if: otel_sdk_available? do + not_being_tested = otel_otlp_exporter_available? ? "otel sdk WITH ddtrace" : "otel sdk WITHOUT ddtrace" + + it "#{not_being_tested} is not being tested" do + skip "The tests for otel sdk WITH and WITHOUT ddtrace are mutually exclusive, because ddtrace monkey " \ + "patches the otel sdk in a way that makes it hard to remove. To test both configurations, run this " \ + "spec with and without `opentelemetry-exporter-otlp` on your Gemfile (hint: can be done using appraisals)." end end end @@ -693,7 +956,7 @@ def self.otel_sdk_available? # This way it's clear what overhead comes from profiling. Without this feature (aka if profiler_overhead_stack_thread # is set to Thread.current), then all 1.5s get attributed to the current stack, and the profiler overhead would be # invisible. - it 'attributes the time sampling to the stack of the worker_thread_to_blame' do + it "attributes the time sampling to the stack of the worker_thread_to_blame" do sample wall_time_at_first_sample = per_thread_context.fetch(Thread.current).fetch(:wall_time_at_previous_sample_ns) @@ -702,64 +965,253 @@ def self.otel_sdk_available? second_sample_stack = samples_for_thread(samples, Thread.current) - .select { |it| it.locations.find { |frame| frame.base_label == 'another_way_of_calling_sample' } } + .select { |it| it.locations.find { |frame| frame.base_label == "another_way_of_calling_sample" } } # The stack from the profiler_overhead_stack_thread (t1) above has showed up attributed to Thread.current, as we # are using it to represent the profiler overhead. profiler_overhead_stack = samples_for_thread(samples, Thread.current) - .select { |it| it.locations.find { |frame| frame.base_label == 'inside_t1' } } + .select { |it| it.locations.find { |frame| frame.base_label == "inside_t1" } } expect(second_sample_stack.size).to be 1 expect(profiler_overhead_stack.size).to be 1 expect( - second_sample_stack.first.values.fetch(:'wall-time') + profiler_overhead_stack.first.values.fetch(:'wall-time') + second_sample_stack.first.values.fetch(:"wall-time") + profiler_overhead_stack.first.values.fetch(:"wall-time") ).to be wall_time_at_second_sample - wall_time_at_first_sample - expect(second_sample_stack.first.labels).to_not include(:'profiler overhead' => anything) - expect(profiler_overhead_stack.first.labels).to include(:'profiler overhead' => 1) + expect(second_sample_stack.first.labels).to_not include("profiler overhead": anything) + expect(profiler_overhead_stack.first.labels).to include("profiler overhead": 1) end - describe 'timeline support' do - context 'when timeline is disabled' do + describe "timeline support" do + context "when timeline is disabled" do let(:timeline_enabled) { false } - it 'does not include end_timestamp_ns labels in samples' do + it "does not include end_timestamp_ns labels in samples" do sample expect(samples.map(&:labels).flat_map(&:keys).uniq).to_not include(:end_timestamp_ns) end end - context 'when timeline is enabled' do + context "when timeline is enabled" do let(:timeline_enabled) { true } - it 'includes a end_timestamp_ns containing epoch time in every sample' do + it "includes a end_timestamp_ns containing epoch time in every sample" do time_before = Datadog::Core::Utils::Time.as_utc_epoch_ns(Time.now) sample time_after = Datadog::Core::Utils::Time.as_utc_epoch_ns(Time.now) expect(samples.first.labels).to include(end_timestamp_ns: be_between(time_before, time_after)) end + + context "when thread starts Waiting for GVL" do + before do + skip_if_gvl_profiling_not_supported(self) + + sample # trigger context creation + samples_from_pprof(recorder.serialize!) # flush sample + + @previous_sample_timestamp_ns = per_thread_context.dig(t1, :wall_time_at_previous_sample_ns) + + @time_before_gvl_waiting = Datadog::Core::Utils::Time.as_utc_epoch_ns(Time.now) + on_gvl_waiting(t1) + @time_after_gvl_waiting = Datadog::Core::Utils::Time.as_utc_epoch_ns(Time.now) + + @gvl_waiting_at = gvl_waiting_at_for(t1) + + expect(@gvl_waiting_at).to be >= @previous_sample_timestamp_ns + end + + it "records a first sample to represent the time between the previous sample and the start of Waiting for GVL" do + sample + + first_sample = samples_for_thread(samples, t1, expected_size: 2).first + + expect(first_sample.values.fetch(:"wall-time")).to be(@gvl_waiting_at - @previous_sample_timestamp_ns) + expect(first_sample.labels).to include( + state: "sleeping", + end_timestamp_ns: be_between(@time_before_gvl_waiting, @time_after_gvl_waiting), + ) + end + + it "records a second sample to represent the time spent Waiting for GVL" do + time_before_sample = Datadog::Core::Utils::Time.as_utc_epoch_ns(Time.now) + sample + time_after_sample = Datadog::Core::Utils::Time.as_utc_epoch_ns(Time.now) + + second_sample = samples_for_thread(samples, t1, expected_size: 2).last + + expect(second_sample.values.fetch(:"wall-time")) + .to be(per_thread_context.dig(t1, :wall_time_at_previous_sample_ns) - @gvl_waiting_at) + expect(second_sample.labels).to include( + state: "waiting for gvl", + end_timestamp_ns: be_between(time_before_sample, time_after_sample), + ) + end + + context "cpu-time behavior on Linux" do + before do + skip "Test only runs on Linux" unless PlatformHelpers.linux? + + apply_delta_to_cpu_time_at_previous_sample_ns(t1, -12345) # Rewind back cpu-clock since previous sample + end + + it "assigns all the cpu-time to the sample before Waiting for GVL started" do + sample + + first_sample, second_sample = samples_for_thread(samples, t1, expected_size: 2) + + expect(first_sample.values.fetch(:"cpu-time")).to be 12345 + expect(second_sample.values.fetch(:"cpu-time")).to be 0 + end + end + end + + context "when thread is Waiting for GVL" do + before do + skip_if_gvl_profiling_not_supported(self) + + sample # trigger context creation + on_gvl_waiting(t1) + sample # trigger creation of sample representing the period before Waiting for GVL + recorder.serialize! # flush previous samples + end + + def sample_and_check(expected_state:) + monotonic_time_before_sample = per_thread_context.dig(t1, :wall_time_at_previous_sample_ns) + time_before_sample = Datadog::Core::Utils::Time.as_utc_epoch_ns(Time.now) + monotonic_time_sanity_check = Datadog::Core::Utils::Time.get_time(:nanosecond) + + sample + + time_after_sample = Datadog::Core::Utils::Time.as_utc_epoch_ns(Time.now) + monotonic_time_after_sample = per_thread_context.dig(t1, :wall_time_at_previous_sample_ns) + + expect(monotonic_time_after_sample).to be >= monotonic_time_sanity_check + + latest_sample = sample_for_thread(samples_from_pprof(recorder.serialize!), t1) + + expect(latest_sample.values.fetch(:"wall-time")) + .to be(monotonic_time_after_sample - monotonic_time_before_sample) + expect(latest_sample.labels).to include( + state: expected_state, + end_timestamp_ns: be_between(time_before_sample, time_after_sample), + ) + + latest_sample + end + + it "records a new Waiting for GVL sample on every subsequent sample" do + 3.times { sample_and_check(expected_state: "waiting for gvl") } + end + + it "does not change the gvl_waiting_at" do + value_before = gvl_waiting_at_for(t1) + + sample + + expect(gvl_waiting_at_for(t1)).to be value_before + expect(gvl_waiting_at_for(t1)).to be > 0 + end + + context "cpu-time behavior on Linux" do + before do + skip "Test only runs on Linux" unless PlatformHelpers.linux? + + apply_delta_to_cpu_time_at_previous_sample_ns(t1, -12345) # Rewind back cpu-clock since previous sample + end + + it "does not assign any cpu-time to the Waiting for GVL samples" do + 3.times do + latest_sample = sample_and_check(expected_state: "waiting for gvl") + + expect(latest_sample.values.fetch(:"cpu-time")).to be 0 + end + end + end + + context "when thread is ready to run again" do + before { on_gvl_running(t1) } + + context "when Waiting for GVL duration >= the threshold" do + let(:waiting_for_gvl_threshold_ns) { 0 } + + it "records a last Waiting for GVL sample" do + sample_and_check(expected_state: "waiting for gvl") + end + + it "resets the gvl_waiting_at to GVL_WAITING_ENABLED_EMPTY" do + expect(gvl_waiting_at_for(t1)).to be < 0 + + expect { sample }.to change { gvl_waiting_at_for(t1) } + .from(gvl_waiting_at_for(t1)) + .to(gvl_waiting_enabled_empty_magic_value) + end + + it "does not record a new Waiting for GVL sample afterwards" do + sample # last Waiting for GVL sample + recorder.serialize! # flush previous samples + + 3.times { sample_and_check(expected_state: "sleeping") } + end + + context "cpu-time behavior on Linux" do + before do + skip "Test only runs on Linux" unless PlatformHelpers.linux? + end + + it "assigns all the cpu-time to samples only after Waiting for GVL ends" do + apply_delta_to_cpu_time_at_previous_sample_ns(t1, -12345) # Rewind back cpu-clock since previous sample + + sample # last Waiting for GVL sample + + latest_sample = sample_for_thread(samples_from_pprof(recorder.serialize!), t1) + expect(latest_sample.values.fetch(:"cpu-time")).to be 0 + + latest_sample = sample_and_check(expected_state: "had cpu") + expect(latest_sample.values.fetch(:"cpu-time")).to be 12345 + end + end + end + + context "when Waiting for GVL duration < the threshold" do + let(:waiting_for_gvl_threshold_ns) { 1_000_000_000 } + + it "records a regular sample" do + expect(gvl_waiting_at_for(t1)).to eq gvl_waiting_enabled_empty_magic_value + + # This is a rare situation (but can still happen) -- the thread was Waiting for GVL on the previous sample, + # but the overall duration of the Waiting for GVL was below the threshold. This means that on_gvl_running + # clears the Waiting for GVL state, and the next sample is immediately back to being a regular sample. + # + # Because the state has been cleared immediately, the next sample is a regular one. We effectively ignore + # a small time period that was still Waiting for GVL as a means to reduce overhead. + + sample_and_check(expected_state: "sleeping") + end + end + end + end end end end - describe '#on_gc_start' do - context 'if a thread has not been sampled before' do + describe "#on_gc_start" do + context "if a thread has not been sampled before" do it "does not record anything in the caller thread's context" do on_gc_start expect(per_thread_context.keys).to_not include(Thread.current) end - it 'increments the gc_samples_missed_due_to_missing_context stat' do + it "increments the gc_samples_missed_due_to_missing_context stat" do expect { on_gc_start }.to change { stats.fetch(:gc_samples_missed_due_to_missing_context) }.from(0).to(1) end end - context 'after the first sample' do + context "after the first sample" do before { sample } it "records the wall-time when garbage collection started in the caller thread's context" do @@ -768,27 +1220,26 @@ def self.otel_sdk_available? wall_time_after_on_gc_start_ns = Datadog::Core::Utils::Time.get_time(:nanosecond) expect(per_thread_context.fetch(Thread.current)).to include( - :'gc_tracking.wall_time_at_start_ns' => - be_between(wall_time_before_on_gc_start_ns, wall_time_after_on_gc_start_ns) + "gc_tracking.wall_time_at_start_ns": be_between(wall_time_before_on_gc_start_ns, wall_time_after_on_gc_start_ns) ) end - context 'cpu-time behavior' do - context 'when not on Linux' do + context "cpu-time behavior" do + context "when not on Linux" do before do - skip 'The fallback behavior only applies when not on Linux' if PlatformHelpers.linux? + skip "The fallback behavior only applies when not on Linux" if PlatformHelpers.linux? end it "records the cpu-time when garbage collection started in the caller thread's context as zero" do on_gc_start - expect(per_thread_context.fetch(Thread.current)).to include(:'gc_tracking.cpu_time_at_start_ns' => 0) + expect(per_thread_context.fetch(Thread.current)).to include("gc_tracking.cpu_time_at_start_ns": 0) end end - context 'on Linux' do + context "on Linux" do before do - skip 'Test only runs on Linux' unless PlatformHelpers.linux? + skip "Test only runs on Linux" unless PlatformHelpers.linux? end it "records the cpu-time when garbage collection started in the caller thread's context" do @@ -797,15 +1248,15 @@ def self.otel_sdk_available? cpu_time_at_previous_sample_ns = per_thread_context.fetch(Thread.current).fetch(:cpu_time_at_previous_sample_ns) expect(per_thread_context.fetch(Thread.current)) - .to include(:'gc_tracking.cpu_time_at_start_ns' => (be > cpu_time_at_previous_sample_ns)) + .to include("gc_tracking.cpu_time_at_start_ns": (be > cpu_time_at_previous_sample_ns)) end end end end end - describe '#on_gc_finish' do - context 'when thread has not been sampled before' do + describe "#on_gc_finish" do + context "when thread has not been sampled before" do it "does not record anything in the caller thread's context" do on_gc_start @@ -813,23 +1264,23 @@ def self.otel_sdk_available? end end - context 'when thread has been sampled before' do + context "when thread has been sampled before" do before { sample } - context 'when on_gc_start was not called before' do + context "when on_gc_start was not called before" do # See comment in the actual implementation on when/why this can happen - it 'does not change the wall_time_at_previous_gc_ns' do + it "does not change the wall_time_at_previous_gc_ns" do on_gc_finish expect(gc_tracking.fetch(:wall_time_at_previous_gc_ns)).to be invalid_time end end - context 'when on_gc_start was previously called' do + context "when on_gc_start was previously called" do before { on_gc_start } - it 'records the wall-time when garbage collection finished in the gc_tracking' do + it "records the wall-time when garbage collection finished in the gc_tracking" do wall_time_before_on_gc_finish_ns = Datadog::Core::Utils::Time.get_time(:nanosecond) on_gc_finish wall_time_after_on_gc_finish_ns = Datadog::Core::Utils::Time.get_time(:nanosecond) @@ -838,17 +1289,17 @@ def self.otel_sdk_available? .to be_between(wall_time_before_on_gc_finish_ns, wall_time_after_on_gc_finish_ns) end - it 'resets the gc tracking fields back to invalid_time' do + it "resets the gc tracking fields back to invalid_time" do on_gc_finish expect(per_thread_context.fetch(Thread.current)).to include( - :'gc_tracking.cpu_time_at_start_ns' => invalid_time, - :'gc_tracking.wall_time_at_start_ns' => invalid_time, + "gc_tracking.cpu_time_at_start_ns": invalid_time, + "gc_tracking.wall_time_at_start_ns": invalid_time, ) end - it 'records the wall-time time spent between calls to on_gc_start and on_gc_finish' do - wall_time_at_start_ns = per_thread_context.fetch(Thread.current).fetch(:'gc_tracking.wall_time_at_start_ns') + it "records the wall-time time spent between calls to on_gc_start and on_gc_finish" do + wall_time_at_start_ns = per_thread_context.fetch(Thread.current).fetch(:"gc_tracking.wall_time_at_start_ns") wall_time_before_on_gc_finish_ns = Datadog::Core::Utils::Time.get_time(:nanosecond) on_gc_finish @@ -857,31 +1308,31 @@ def self.otel_sdk_available? .to be >= (wall_time_before_on_gc_finish_ns - wall_time_at_start_ns) end - context 'cpu-time behavior' do - context 'when not on Linux' do + context "cpu-time behavior" do + context "when not on Linux" do before do - skip 'The fallback behavior only applies when not on Linux' if PlatformHelpers.linux? + skip "The fallback behavior only applies when not on Linux" if PlatformHelpers.linux? end - it 'records the accumulated_cpu_time_ns as zero' do + it "records the accumulated_cpu_time_ns as zero" do on_gc_finish expect(gc_tracking.fetch(:accumulated_cpu_time_ns)).to be 0 end end - context 'on Linux' do + context "on Linux" do before do - skip 'Test only runs on Linux' unless PlatformHelpers.linux? + skip "Test only runs on Linux" unless PlatformHelpers.linux? end - it 'records the cpu-time spent between calls to on_gc_start and on_gc_finish' do + it "records the cpu-time spent between calls to on_gc_start and on_gc_finish" do on_gc_finish expect(gc_tracking.fetch(:accumulated_cpu_time_ns)).to be > 0 end - it 'advances the cpu_time_at_previous_sample_ns for the sampled thread by the time spent in GC' do + it "advances the cpu_time_at_previous_sample_ns for the sampled thread by the time spent in GC" do cpu_time_at_previous_sample_ns_before = per_thread_context.fetch(Thread.current).fetch(:cpu_time_at_previous_sample_ns) @@ -895,7 +1346,7 @@ def self.otel_sdk_available? end end - context 'when going through multiple cycles of on_gc_start/on_gc_finish without sample_after_gc getting called' do + context "when going through multiple cycles of on_gc_start/on_gc_finish without sample_after_gc getting called" do let(:context_tracking) { [] } before do @@ -907,7 +1358,7 @@ def self.otel_sdk_available? end end - it 'accumulates the cpu-time and wall-time from the multiple GCs' do + it "accumulates the cpu-time and wall-time from the multiple GCs" do all_accumulated_wall_time = context_tracking.map { |it| it.fetch(:accumulated_wall_time_ns) } expect(all_accumulated_wall_time).to eq all_accumulated_wall_time.sort @@ -919,7 +1370,7 @@ def self.otel_sdk_available? expect(all_accumulated_cpu_time.first).to be < all_accumulated_cpu_time.last if all_accumulated_cpu_time.first > 0 end - it 'updates the wall_time_at_previous_gc_ns with the latest one' do + it "updates the wall_time_at_previous_gc_ns with the latest one" do all_wall_time_at_previous_gc_ns = context_tracking.map { |it| it.fetch(:wall_time_at_previous_gc_ns) } expect(all_wall_time_at_previous_gc_ns.last).to be all_wall_time_at_previous_gc_ns.max @@ -928,17 +1379,17 @@ def self.otel_sdk_available? end end - describe '#sample_after_gc' do + describe "#sample_after_gc" do before { sample } - context 'when called before on_gc_start/on_gc_finish' do + context "when called before on_gc_start/on_gc_finish" do it do expect { sample_after_gc }.to raise_error(RuntimeError, /Unexpected call to sample_after_gc/) end end - context 'when there is gc information to record' do - let(:gc_sample) { samples.find { |it| it.labels.fetch(:'thread name') == 'Garbage Collection' } } + context "when there is gc information to record" do + let(:gc_sample) { samples.find { |it| it.labels.fetch(:"thread name") == "Garbage Collection" } } before do on_gc_start @@ -947,7 +1398,7 @@ def self.otel_sdk_available? @time_after = Datadog::Core::Utils::Time.as_utc_epoch_ns(Time.now) end - context 'when called more than once in a row' do + context "when called more than once in a row" do it do sample_after_gc @@ -955,11 +1406,11 @@ def self.otel_sdk_available? end end - it 'increments the gc_samples counter' do + it "increments the gc_samples counter" do expect { sample_after_gc }.to change { stats.fetch(:gc_samples) }.from(0).to(1) end - it 'sets the wall_time_at_last_flushed_gc_event_ns from the wall_time_at_previous_gc_ns' do + it "sets the wall_time_at_last_flushed_gc_event_ns from the wall_time_at_previous_gc_ns" do wall_time_at_previous_gc_ns = gc_tracking.fetch(:wall_time_at_previous_gc_ns) sample_after_gc @@ -967,49 +1418,49 @@ def self.otel_sdk_available? expect(gc_tracking.fetch(:wall_time_at_last_flushed_gc_event_ns)).to be wall_time_at_previous_gc_ns end - it 'resets the wall_time_at_previous_gc_ns to invalid_time' do + it "resets the wall_time_at_previous_gc_ns to invalid_time" do sample_after_gc expect(gc_tracking.fetch(:wall_time_at_previous_gc_ns)).to be invalid_time end - it 'creates a Garbage Collection sample' do + it "creates a Garbage Collection sample" do sample_after_gc - expect(gc_sample.values.fetch(:'cpu-samples')).to be 1 + expect(gc_sample.values.fetch(:"cpu-samples")).to be 1 expect(gc_sample.labels).to match a_hash_including( - :state => 'had cpu', - :'thread id' => 'GC', - :'thread name' => 'Garbage Collection', - :event => 'gc', - :'gc cause' => an_instance_of(String), - :'gc type' => an_instance_of(String), + state: "had cpu", + "thread id": "GC", + "thread name": "Garbage Collection", + event: "gc", + "gc cause": an_instance_of(String), + "gc type": an_instance_of(String), ) - expect(gc_sample.locations.first.path).to eq 'Garbage Collection' + expect(gc_sample.locations.first.path).to eq "Garbage Collection" end - it 'creates a Garbage Collection sample using the accumulated_cpu_time_ns and accumulated_wall_time_ns' do + it "creates a Garbage Collection sample using the accumulated_cpu_time_ns and accumulated_wall_time_ns" do accumulated_cpu_time_ns = gc_tracking.fetch(:accumulated_cpu_time_ns) accumulated_wall_time_ns = gc_tracking.fetch(:accumulated_wall_time_ns) sample_after_gc expect(gc_sample.values).to match a_hash_including( - :'cpu-time' => accumulated_cpu_time_ns, - :'wall-time' => accumulated_wall_time_ns, + "cpu-time": accumulated_cpu_time_ns, + "wall-time": accumulated_wall_time_ns, ) end - it 'does not include the timeline timestamp' do + it "does not include the timeline timestamp" do sample_after_gc expect(gc_sample.labels.keys).to_not include(:end_timestamp_ns) end - context 'when timeline is enabled' do + context "when timeline is enabled" do let(:timeline_enabled) { true } - it 'creates a Garbage Collection sample using the accumulated_wall_time_ns as the timeline duration' do + it "creates a Garbage Collection sample using the accumulated_wall_time_ns as the timeline duration" do accumulated_wall_time_ns = gc_tracking.fetch(:accumulated_wall_time_ns) sample_after_gc @@ -1017,8 +1468,8 @@ def self.otel_sdk_available? expect(gc_sample.values.fetch(:timeline)).to be accumulated_wall_time_ns end - it 'creates a Garbage Collection sample using the timestamp set by on_gc_finish, converted to epoch ns' do - sample_after_gc + it "creates a Garbage Collection sample using the timestamp set by on_gc_finish, converted to epoch ns" do + sample_after_gc(reset_monotonic_to_system_state: true) expect(gc_sample.labels.fetch(:end_timestamp_ns)).to be_between(@time_before, @time_after) end @@ -1026,54 +1477,54 @@ def self.otel_sdk_available? end end - describe '#sample_allocation' do + describe "#sample_allocation" do let(:single_sample) do expect(samples.size).to be 1 samples.first end - it 'samples the caller thread' do + it "samples the caller thread" do sample_allocation(weight: 123) - expect(object_id_from(single_sample.labels.fetch(:'thread id'))).to be Thread.current.object_id + expect(object_id_from(single_sample.labels.fetch(:"thread id"))).to be Thread.current.object_id end - it 'tags the sample with the provided weight' do + it "tags the sample with the provided weight" do sample_allocation(weight: 123) - expect(single_sample.values).to include(:'alloc-samples' => 123) + expect(single_sample.values).to include("alloc-samples": 123) end - it 'tags the sample with the unscaled weight' do + it "tags the sample with the unscaled weight" do sample_allocation(weight: 123) - expect(single_sample.values).to include('alloc-samples-unscaled': 1) + expect(single_sample.values).to include("alloc-samples-unscaled": 1) end - it 'includes the thread names, if available' do + it "includes the thread names, if available" do thread_with_name = Thread.new do - Thread.current.name = 'thread_with_name' + Thread.current.name = "thread_with_name" sample_allocation(weight: 123) end.join sample_with_name = samples_for_thread(samples, thread_with_name).first - expect(sample_with_name.labels).to include(:'thread name' => 'thread_with_name') + expect(sample_with_name.labels).to include("thread name": "thread_with_name") end - describe 'code hotspots' do + describe "code hotspots" do # NOTE: To avoid duplicating all of the similar-but-slightly different tests from `#sample` (due to how # `#sample` includes every thread, but `#sample_allocation` includes only the caller thread), here is a simpler # test to make sure this works in the common case - context 'when there is an active trace on the sampled thread' do + context "when there is an active trace on the sampled thread" do let(:tracer) { Datadog::Tracing.send(:tracer) } let(:t1) do Thread.new(ready_queue) do |ready_queue| inside_t1 do - Datadog::Tracing.trace('profiler.test', type: 'web') do |_span, trace| - trace.resource = 'trace_resource' + Datadog::Tracing.trace("profiler.test", type: "web") do |_span, trace| + trace.resource = "trace_resource" - Datadog::Tracing.trace('profiler.test.inner') do |inner_span| + Datadog::Tracing.trace("profiler.test.inner") do |inner_span| @t1_span_id = inner_span.id @t1_local_root_span_id = trace.send(:root_span).id sample_allocation(weight: 456) @@ -1089,18 +1540,18 @@ def self.otel_sdk_available? it 'gathers the "local root span id", "span id" and "trace endpoint"' do expect(single_sample.labels).to include( - :'local root span id' => @t1_local_root_span_id.to_i, - :'span id' => @t1_span_id.to_i, - :'trace endpoint' => 'trace_resource', + "local root span id": @t1_local_root_span_id.to_i, + "span id": @t1_span_id.to_i, + "trace endpoint": "trace_resource", ) end end end - context 'when timeline is enabled' do + context "when timeline is enabled" do let(:timeline_enabled) { true } - it 'does not include end_timestamp_ns labels in GC samples' do + it "does not include end_timestamp_ns labels in GC samples" do sample_allocation(weight: 123) expect(single_sample.labels.keys).to_not include(:end_timestamp_ns) @@ -1108,160 +1559,337 @@ def self.otel_sdk_available? end [ - { expected_type: :T_OBJECT, object: Object.new, klass: 'Object' }, - { expected_type: :T_CLASS, object: Object, klass: 'Class' }, - { expected_type: :T_MODULE, object: Kernel, klass: 'Module' }, - { expected_type: :T_FLOAT, object: 1.0, klass: 'Float' }, - { expected_type: :T_STRING, object: 'Hello!', klass: 'String' }, - { expected_type: :T_REGEXP, object: /Hello/, klass: 'Regexp' }, - { expected_type: :T_ARRAY, object: [], klass: 'Array' }, - { expected_type: :T_HASH, object: {}, klass: 'Hash' }, - { expected_type: :T_BIGNUM, object: 2**256, klass: 'Integer' }, + {expected_type: :T_OBJECT, object: Object.new, klass: "Object"}, + {expected_type: :T_CLASS, object: Object, klass: "Class"}, + {expected_type: :T_MODULE, object: Kernel, klass: "Module"}, + {expected_type: :T_FLOAT, object: 1.0, klass: "Float"}, + {expected_type: :T_STRING, object: "Hello!", klass: "String"}, + {expected_type: :T_REGEXP, object: /Hello/, klass: "Regexp"}, + {expected_type: :T_ARRAY, object: [], klass: "Array"}, + {expected_type: :T_HASH, object: {}, klass: "Hash"}, + {expected_type: :T_BIGNUM, object: 2**256, klass: "Integer"}, # ThreadContext is a T_DATA; we create here a dummy instance just as an example - { expected_type: :T_DATA, object: described_class.allocate, klass: 'Datadog::Profiling::Collectors::ThreadContext' }, - { expected_type: :T_MATCH, object: 'a'.match(Regexp.new('a')), klass: 'MatchData' }, - { expected_type: :T_COMPLEX, object: Complex(1), klass: 'Complex' }, - { expected_type: :T_RATIONAL, object: 1/2r, klass: 'Rational' }, - { expected_type: :T_NIL, object: nil, klass: 'NilClass' }, - { expected_type: :T_TRUE, object: true, klass: 'TrueClass' }, - { expected_type: :T_FALSE, object: false, klass: 'FalseClass' }, - { expected_type: :T_SYMBOL, object: :hello, klass: 'Symbol' }, - { expected_type: :T_FIXNUM, object: 1, klass: 'Integer' }, + {expected_type: :T_DATA, object: described_class.allocate, klass: "Datadog::Profiling::Collectors::ThreadContext"}, + {expected_type: :T_MATCH, object: "a".match(Regexp.new("a")), klass: "MatchData"}, + {expected_type: :T_COMPLEX, object: Complex(1), klass: "Complex"}, + {expected_type: :T_RATIONAL, object: 1/2r, klass: "Rational"}, + {expected_type: :T_NIL, object: nil, klass: "NilClass"}, + {expected_type: :T_TRUE, object: true, klass: "TrueClass"}, + {expected_type: :T_FALSE, object: false, klass: "FalseClass"}, + {expected_type: :T_SYMBOL, object: :hello, klass: "Symbol"}, + {expected_type: :T_FIXNUM, object: 1, klass: "Integer"}, ].each do |type| expected_type = type.fetch(:expected_type) object = type.fetch(:object) klass = type.fetch(:klass) context "when sampling a #{expected_type}" do - it 'includes the correct ruby vm type for the passed object' do + it "includes the correct ruby vm type for the passed object" do sample_allocation(weight: 123, new_object: object) - expect(single_sample.labels.fetch(:'ruby vm type')).to eq expected_type.to_s + expect(single_sample.labels.fetch(:"ruby vm type")).to eq expected_type.to_s end - it 'includes the correct class for the passed object' do + it "includes the correct class for the passed object" do sample_allocation(weight: 123, new_object: object) - expect(single_sample.labels.fetch(:'allocation class')).to eq klass - end - - context 'when allocation_type_enabled is false' do - let(:allocation_type_enabled) { false } - - it 'does not record the correct class for the passed object' do - sample_allocation(weight: 123, new_object: object) - - expect(single_sample.labels).to_not include(:'allocation class' => anything) - end + expect(single_sample.labels.fetch(:"allocation class")).to eq klass end end end - context 'when sampling a T_FILE' do - it 'includes the correct ruby vm type for the passed object' do + context "when sampling a T_FILE" do + it "includes the correct ruby vm type for the passed object" do File.open(__FILE__) do |file| sample_allocation(weight: 123, new_object: file) end - expect(single_sample.labels.fetch(:'ruby vm type')).to eq 'T_FILE' + expect(single_sample.labels.fetch(:"ruby vm type")).to eq "T_FILE" end - it 'includes the correct class for the passed object' do + it "includes the correct class for the passed object" do File.open(__FILE__) do |file| sample_allocation(weight: 123, new_object: file) end - expect(single_sample.labels.fetch(:'allocation class')).to eq 'File' + expect(single_sample.labels.fetch(:"allocation class")).to eq "File" + end + end + + context "when sampling a Struct" do + before do + stub_const("ThreadContextSpec::TestStruct", Struct.new(:a)) + end + + it "includes the correct ruby vm type for the passed object" do + sample_allocation(weight: 123, new_object: ThreadContextSpec::TestStruct.new) + + expect(single_sample.labels.fetch(:"ruby vm type")).to eq "T_STRUCT" + end + + it "includes the correct class for the passed object" do + sample_allocation(weight: 123, new_object: ThreadContextSpec::TestStruct.new) + + expect(single_sample.labels.fetch(:"allocation class")).to eq "ThreadContextSpec::TestStruct" + end + end + end + + describe "#sample_skipped_allocation_samples" do + let(:single_sample) do + expect(samples.size).to be 1 + samples.first + end + before { sample_skipped_allocation_samples(123) } + + it "records the number of skipped allocations" do + expect(single_sample.values).to include("alloc-samples": 123) + end + + it 'attributes the skipped samples to a "Skipped Samples" thread' do + expect(single_sample.labels).to include("thread id": "SS", "thread name": "Skipped Samples") + end + + it 'attributes the skipped samples to a "(Skipped Samples)" allocation class' do + expect(single_sample.labels).to include("allocation class": "(Skipped Samples)") + end + + it 'includes a placeholder stack attributed to "Skipped Samples"' do + expect(single_sample.locations.size).to be 1 + expect(single_sample.locations.first.path).to eq "Skipped Samples" + end + end + + describe "#on_gvl_waiting" do + before { skip_if_gvl_profiling_not_supported(self) } + + context "if thread has not been sampled before" do + it "does not record anything in the internal_thread_specific value" do + on_gvl_waiting(t1) + + expect(gvl_waiting_at_for(t1)).to be 0 end + end + + context "after the first sample" do + before { sample } - context 'when allocation_type_enabled is false' do - let(:allocation_type_enabled) { false } + it "records the wall-time when gvl waiting started in the thread's internal_thread_specific value" do + wall_time_before_on_gvl_waiting_ns = Datadog::Core::Utils::Time.get_time(:nanosecond) + on_gvl_waiting(t1) + wall_time_after_on_gvl_waiting_ns = Datadog::Core::Utils::Time.get_time(:nanosecond) - it 'does not record the correct class for the passed object' do - File.open(__FILE__) do |file| - sample_allocation(weight: 123, new_object: file) + expect(per_thread_context.fetch(t1)).to include( + gvl_waiting_at: be_between(wall_time_before_on_gvl_waiting_ns, wall_time_after_on_gvl_waiting_ns) + ) + end + end + end + + describe "#on_gvl_running" do + before { skip_if_gvl_profiling_not_supported(self) } + + context "if thread has not been sampled before" do + it "does not record anything in the internal_thread_specific value" do + on_gvl_running(t1) + + expect(gvl_waiting_at_for(t1)).to be 0 + end + end + + context "when the internal_thread_specific value is GVL_WAITING_ENABLED_EMPTY" do + before do + sample + expect(gvl_waiting_at_for(t1)).to eq gvl_waiting_enabled_empty_magic_value + end + + it do + expect { on_gvl_running(t1) }.to_not(change { gvl_waiting_at_for(t1) }) + end + + it "does not flag that a sample is needed" do + expect(on_gvl_running(t1)).to be false + end + end + + context "when the thread was Waiting on GVL" do + before do + sample + on_gvl_waiting(t1) + @gvl_waiting_at = gvl_waiting_at_for(t1) + expect(@gvl_waiting_at).to be > 0 + end + + context "when Waiting for GVL duration >= the threshold" do + let(:waiting_for_gvl_threshold_ns) { 0 } + + it "flips the value of gvl_waiting_at to negative" do + expect { on_gvl_running(t1) } + .to change { gvl_waiting_at_for(t1) } + .from(@gvl_waiting_at) + .to(-@gvl_waiting_at) + end + + it "flags that a sample is needed" do + expect(on_gvl_running(t1)).to be true + end + + context "when called several times in a row" do + before { on_gvl_running(t1) } + + it "flags that a sample is needed" do + expect(on_gvl_running(t1)).to be true end - expect(single_sample.labels).to_not include(:'allocation class' => anything) + it "keeps the value of gvl_waiting_at as negative" do + on_gvl_running(t1) + + expect(gvl_waiting_at_for(t1)).to be(-@gvl_waiting_at) + end + end + end + + context "when Waiting for GVL duration < the threshold" do + let(:waiting_for_gvl_threshold_ns) { 1_000_000_000 } + + it "resets the value of gvl_waiting_at back to GVL_WAITING_ENABLED_EMPTY" do + expect { on_gvl_running(t1) } + .to change { gvl_waiting_at_for(t1) } + .from(@gvl_waiting_at) + .to(gvl_waiting_enabled_empty_magic_value) + end + + it "flags that a sample is not needed" do + expect(on_gvl_running(t1)).to be false end end end + end + + describe "#sample_after_gvl_running" do + before { skip_if_gvl_profiling_not_supported(self) } + + let(:timeline_enabled) { true } - context 'when sampling a Struct' do + context "when thread is not at the end of a Waiting for GVL period" do before do - stub_const('ThreadContextSpec::TestStruct', Struct.new(:a)) + expect(gvl_waiting_at_for(t1)).to be 0 end - it 'includes the correct ruby vm type for the passed object' do - sample_allocation(weight: 123, new_object: ThreadContextSpec::TestStruct.new) + it do + expect(sample_after_gvl_running(t1)).to be false + end + + it "does not sample the thread" do + sample_after_gvl_running(t1) + + expect(samples).to be_empty + end + end + + # @ivoanjo: The behavior here is expected to be (in terms of wall-time accounting and timestamps) exactly the same + # as for #sample. That's because both call the same underlying `update_metrics_and_sample` method to do the work. + # + # See the big comment next to the definition of `thread_context_collector_sample_after_gvl_running_with_thread` + # for why we need a separate `sample_after_gvl_running`. + # + # Thus, I chose to not repeat the extensive Waiting for GVL specs we already have in #sample, and do a smaller pass. + context "when thread is at the end of a Waiting for GVL period" do + let(:waiting_for_gvl_threshold_ns) { 0 } - expect(single_sample.labels.fetch(:'ruby vm type')).to eq 'T_STRUCT' + before do + sample # trigger context creation + on_gvl_waiting(t1) + + sample if record_start + + on_gvl_running(t1) + recorder.serialize! # flush samples + + expect(gvl_waiting_at_for(t1)).to be < 0 end - it 'includes the correct class for the passed object' do - sample_allocation(weight: 123, new_object: ThreadContextSpec::TestStruct.new) + context "when a start was not yet recorded" do + let(:record_start) { false } + + it do + expect(sample_after_gvl_running(t1)).to be true + end + + it "records a sample to represent the time prior to Waiting for GVL, and another to represent the waiting" do + sample_after_gvl_running(t1) - expect(single_sample.labels.fetch(:'allocation class')).to eq 'ThreadContextSpec::TestStruct' + expect(samples.size).to be 2 + + expect(samples.first.labels).to include(state: "sleeping") + expect(samples.last.labels).to include(state: "waiting for gvl") + end end - context 'when allocation_type_enabled is false' do - let(:allocation_type_enabled) { false } + context "when a start was already recorded" do + let(:record_start) { true } - it 'does not record the correct class for the passed object' do - sample_allocation(weight: 123, new_object: ThreadContextSpec::TestStruct.new) + it do + expect(sample_after_gvl_running(t1)).to be true + end + + it "records a sample to represent the Waiting for GVL" do + sample_after_gvl_running(t1) + + expect(samples.size).to be 1 - expect(single_sample.labels).to_not include(:'allocation class' => anything) + expect(samples.first.labels).to include(state: "waiting for gvl") end end end end - describe '#thread_list' do + describe "#thread_list" do it "returns the same as Ruby's Thread.list" do expect(thread_list).to eq Thread.list end end - describe '#per_thread_context' do - context 'before sampling' do + describe "#per_thread_context" do + context "before sampling" do it do expect(per_thread_context).to be_empty end end - context 'after sampling' do + context "after sampling" do before do @wall_time_before_sample_ns = Datadog::Core::Utils::Time.get_time(:nanosecond) sample @wall_time_after_sample_ns = Datadog::Core::Utils::Time.get_time(:nanosecond) end - it 'contains all the sampled threads' do + it "contains all the sampled threads" do expect(per_thread_context.keys).to include(Thread.main, t1, t2, t3) end - describe ':thread_id' do - it 'contains the object ids of all sampled threads' do + describe ":thread_id" do + it "contains the object ids of all sampled threads" do per_thread_context.each do |thread, context| expect(object_id_from(context.fetch(:thread_id))).to eq thread.object_id end end - context 'on Ruby >= 3.1' do - before { skip 'Behavior does not apply to current Ruby version' if RUBY_VERSION < '3.1.' } + context "on Ruby >= 3.1" do + before { skip "Behavior does not apply to current Ruby version" if RUBY_VERSION < "3.1." } # Thread#native_thread_id was added on 3.1 - it 'contains the native thread ids of all sampled threads' do + it "contains the native thread ids of all sampled threads" do per_thread_context.each do |thread, context| expect(context.fetch(:thread_id).split.first).to eq thread.native_thread_id.to_s end end end - context 'on Ruby < 3.1' do - before { skip 'Behavior does not apply to current Ruby version' if RUBY_VERSION >= '3.1.' } + context "on Ruby < 3.1" do + before { skip "Behavior does not apply to current Ruby version" if RUBY_VERSION >= "3.1." } - it 'contains a fallback native thread id' do + it "contains a fallback native thread id" do per_thread_context.each do |_thread, context| expect(Integer(context.fetch(:thread_id).split.first)).to be > 0 end @@ -1269,37 +1897,37 @@ def self.otel_sdk_available? end end - it 'sets the wall_time_at_previous_sample_ns to the current wall clock value' do + it "sets the wall_time_at_previous_sample_ns to the current wall clock value" do expect(per_thread_context.values).to all( include(wall_time_at_previous_sample_ns: be_between(@wall_time_before_sample_ns, @wall_time_after_sample_ns)) ) end - context 'cpu time behavior' do - context 'when not on Linux' do + context "cpu time behavior" do + context "when not on Linux" do before do - skip 'The fallback behavior only applies when not on Linux' if PlatformHelpers.linux? + skip "The fallback behavior only applies when not on Linux" if PlatformHelpers.linux? end - it 'sets the cpu_time_at_previous_sample_ns to zero' do + it "sets the cpu_time_at_previous_sample_ns to zero" do expect(per_thread_context.values).to all( include(cpu_time_at_previous_sample_ns: 0) ) end - it 'marks the thread_cpu_time_ids as not valid' do + it "marks the thread_cpu_time_ids as not valid" do expect(per_thread_context.values).to all( include(thread_cpu_time_id_valid?: false) ) end end - context 'on Linux' do + context "on Linux" do before do - skip 'Test only runs on Linux' unless PlatformHelpers.linux? + skip "Test only runs on Linux" unless PlatformHelpers.linux? end - it 'sets the cpu_time_at_previous_sample_ns to the current cpu clock value' do + it "sets the cpu_time_at_previous_sample_ns to the current cpu clock value" do # It's somewhat difficult to validate the actual value since this is an operating system-specific value # which should only be assessed in relation to other values for the same thread, not in absolute expect(per_thread_context.values).to all( @@ -1307,7 +1935,7 @@ def self.otel_sdk_available? ) end - it 'returns a bigger value for each sample' do + it "returns a bigger value for each sample" do sample_values = [] 3.times do @@ -1317,11 +1945,11 @@ def self.otel_sdk_available? per_thread_context[Thread.main].fetch(:cpu_time_at_previous_sample_ns) end - expect(sample_values.uniq.size).to be(3), 'Every sample is expected to have a differ cpu time value' - expect(sample_values).to eq(sample_values.sort), 'Samples are expected to be in ascending order' + expect(sample_values.uniq.size).to be(3), "Every sample is expected to have a differ cpu time value" + expect(sample_values).to eq(sample_values.sort), "Samples are expected to be in ascending order" end - it 'marks the thread_cpu_time_ids as valid' do + it "marks the thread_cpu_time_ids as valid" do expect(per_thread_context.values).to all( include(thread_cpu_time_id_valid?: true) ) @@ -1329,15 +1957,15 @@ def self.otel_sdk_available? end end - describe ':thread_invoke_location' do - it 'is empty for the main thread' do + describe ":thread_invoke_location" do + it "is empty for the main thread" do expect(per_thread_context.fetch(Thread.main).fetch(:thread_invoke_location)).to be_empty end # NOTE: As of this writing, the dd-trace-rb spec_helper.rb includes a monkey patch to Thread creation that we use # to track specs that leak threads. This means that the invoke_location of every thread will point at the # spec_helper in our test suite. Just in case you're looking at the output and being a bit confused :) - it 'contains the file and line for the started threads' do + it "contains the file and line for the started threads" do [t1, t2, t3].each do |thread| invoke_location = per_thread_context.fetch(thread).fetch(:thread_invoke_location) @@ -1346,7 +1974,7 @@ def self.otel_sdk_available? end end - it 'contains a fallback for threads started in native code' do + it "contains a fallback for threads started in native code" do native_thread = described_class::Testing._native_new_empty_thread sample @@ -1355,10 +1983,10 @@ def self.otel_sdk_available? native_thread.join invoke_location = per_thread_context.fetch(native_thread).fetch(:thread_invoke_location) - expect(invoke_location).to eq '(Unnamed thread from native code)' + expect(invoke_location).to eq "(Unnamed thread from native code)" end - context 'when the `logging` gem has monkey patched thread creation' do + context "when the `logging` gem has monkey patched thread creation" do # rubocop:disable Style/GlobalVars before do load("#{__dir__}/helper/lib/logging/diagnostic_context.rb") @@ -1378,20 +2006,42 @@ def self.otel_sdk_available? # # To simulate this on our test suite without having to bring in the `logging` gem (and monkey patch our # threads), a helper was created that has a matching partial path. - it 'contains a placeholder only' do + it "contains a placeholder only" do sample invoke_location = per_thread_context.fetch($simulated_logging_gem_monkey_patched_thread).fetch(:thread_invoke_location) - expect(invoke_location).to eq '(Unnamed thread)' + expect(invoke_location).to eq "(Unnamed thread)" end # rubocop:enable Style/GlobalVars end end + + describe ":gvl_waiting_at" do + context "on supported Rubies" do + before { skip_if_gvl_profiling_not_supported(self) } + + it "is initialized to GVL_WAITING_ENABLED_EMPTY (INTPTR_MAX)" do + expect(per_thread_context.values).to all( + include(gvl_waiting_at: gvl_waiting_enabled_empty_magic_value) + ) + end + end + + context "on legacy Rubies" do + before { skip "Behavior does not apply to current Ruby version" if RUBY_VERSION >= "3.2." } + + it "is not set" do + per_thread_context.each do |_thread, context| + expect(context.key?(:gvl_waiting_at)).to be false + end + end + end + end end - context 'after sampling multiple times' do - it 'contains only the threads still alive' do + context "after sampling multiple times" do + it "contains only the threads still alive" do sample # All alive threads still in there @@ -1411,18 +2061,18 @@ def self.otel_sdk_available? end end - describe '#reset_after_fork' do + describe "#reset_after_fork" do subject(:reset_after_fork) { cpu_and_wall_time_collector.reset_after_fork } before do sample end - it 'clears the per_thread_context' do + it "clears the per_thread_context" do expect { reset_after_fork }.to change { per_thread_context.empty? }.from(false).to(true) end - it 'clears the stats' do + it "clears the stats" do # Simulate a GC sample, so the gc_samples stat will go to 1 on_gc_start on_gc_finish @@ -1431,7 +2081,7 @@ def self.otel_sdk_available? expect { reset_after_fork }.to change { stats.fetch(:gc_samples) }.from(1).to(0) end - it 'resets the stack recorder' do + it "resets the stack recorder" do expect(recorder).to receive(:reset_after_fork) reset_after_fork diff --git a/spec/datadog/profiling/component_spec.rb b/spec/datadog/profiling/component_spec.rb index 8ae27da4794..8ff82a44e9a 100644 --- a/spec/datadog/profiling/component_spec.rb +++ b/spec/datadog/profiling/component_spec.rb @@ -1,4 +1,4 @@ -require 'datadog/profiling/spec_helper' +require "datadog/profiling/spec_helper" RSpec.describe Datadog::Profiling::Component do let(:settings) { Datadog::Core::Configuration::Settings.new } @@ -14,36 +14,40 @@ end end - describe '.build_profiler_component' do + describe ".build_profiler_component" do let(:tracer) { instance_double(Datadog::Tracing::Tracer) } subject(:build_profiler_component) do - described_class.build_profiler_component(settings: settings, agent_settings: agent_settings, optional_tracer: tracer) + described_class.build_profiler_component( + settings: settings, + agent_settings: agent_settings, + optional_tracer: tracer + ) end - context 'when profiling is not supported' do + context "when profiling is not supported" do before { allow(Datadog::Profiling).to receive(:supported?).and_return(false) } - it { is_expected.to eq [nil, { profiling_enabled: false }] } + it { is_expected.to eq [nil, {profiling_enabled: false}] } end - context 'by default' do - it 'does not build a profiler' do - is_expected.to eq [nil, { profiling_enabled: false }] + context "by default" do + it "does not build a profiler" do + is_expected.to eq [nil, {profiling_enabled: false}] end end - context 'with :enabled false' do + context "with :enabled false" do before do settings.profiling.enabled = false end - it 'does not build a profiler' do - is_expected.to eq [nil, { profiling_enabled: false }] + it "does not build a profiler" do + is_expected.to eq [nil, {profiling_enabled: false}] end end - context 'with :enabled true' do + context "with :enabled true" do before do skip_if_profiling_not_supported(self) @@ -51,21 +55,22 @@ allow(profiler_setup_task).to receive(:run) end - it 'builds a profiler instance' do - expect(build_profiler_component).to match([instance_of(Datadog::Profiling::Profiler), { profiling_enabled: true }]) + it "builds a profiler instance" do + expect(build_profiler_component).to match([instance_of(Datadog::Profiling::Profiler), {profiling_enabled: true}]) end - context 'when using the new CPU Profiling 2.0 profiler' do - it 'initializes a ThreadContext collector' do + context "when using the new CPU Profiling 2.0 profiler" do + it "initializes a ThreadContext collector" do allow(Datadog::Profiling::Collectors::CpuAndWallTimeWorker).to receive(:new) - dummy_stack_recorder = instance_double(Datadog::Profiling::StackRecorder, 'dummy_stack_recorder') + dummy_stack_recorder = instance_double(Datadog::Profiling::StackRecorder, "dummy_stack_recorder") allow(Datadog::Profiling::StackRecorder).to receive(:new).and_return(dummy_stack_recorder) expect(settings.profiling.advanced).to receive(:max_frames).and_return(:max_frames_config) expect(settings.profiling.advanced) - .to receive(:timeline_enabled).and_return(:timeline_enabled_config) + .to receive(:timeline_enabled).at_least(:once).and_return(:timeline_enabled_config) expect(settings.profiling.advanced.endpoint.collection) .to receive(:enabled).and_return(:endpoint_collection_enabled_config) + expect(settings.profiling.advanced).to receive(:waiting_for_gvl_threshold_ns).and_return(:threshold_ns_config) expect(Datadog::Profiling::Collectors::ThreadContext).to receive(:new).with( recorder: dummy_stack_recorder, @@ -73,17 +78,46 @@ tracer: tracer, endpoint_collection_enabled: :endpoint_collection_enabled_config, timeline_enabled: :timeline_enabled_config, + waiting_for_gvl_threshold_ns: :threshold_ns_config, + otel_context_enabled: false, ) build_profiler_component end - it 'initializes a CpuAndWallTimeWorker collector' do + context "when otel_context_enabled is set to 'both'" do + before { settings.profiling.advanced.preview_otel_context_enabled = "both" } + + it "initializes a ThreadContext collector with otel_context_enabled: :both" do + expect(Datadog::Profiling::Collectors::ThreadContext).to receive(:new) + .with(hash_including(otel_context_enabled: :both)) + .and_call_original + + build_profiler_component + end + end + + context "when otel_context_enabled is set to 'only'" do + before { settings.profiling.advanced.preview_otel_context_enabled = "only" } + + it "initializes a ThreadContext collector with otel_context_enabled: :only" do + expect(Datadog::Profiling::Collectors::ThreadContext).to receive(:new) + .with(hash_including(otel_context_enabled: :only)) + .and_call_original + + build_profiler_component + end + end + + it "initializes a CpuAndWallTimeWorker collector" do expect(described_class).to receive(:no_signals_workaround_enabled?).and_return(:no_signals_result) expect(settings.profiling.advanced).to receive(:overhead_target_percentage) .and_return(:overhead_target_percentage_config) expect(described_class).to receive(:valid_overhead_target) .with(:overhead_target_percentage_config).and_return(:overhead_target_percentage_config) + expect(settings.profiling.advanced) + .to receive(:allocation_counting_enabled).and_return(:allocation_counting_enabled_config) + expect(described_class).to receive(:enable_gvl_profiling?).and_return(:gvl_profiling_result) expect(Datadog::Profiling::Collectors::CpuAndWallTimeWorker).to receive(:new).with( gc_profiling_enabled: anything, @@ -91,22 +125,24 @@ thread_context_collector: instance_of(Datadog::Profiling::Collectors::ThreadContext), dynamic_sampling_rate_overhead_target_percentage: :overhead_target_percentage_config, allocation_profiling_enabled: false, + allocation_counting_enabled: :allocation_counting_enabled_config, + gvl_profiling_enabled: :gvl_profiling_result, ) build_profiler_component end - context 'when gc_enabled is true' do + context "when gc_enabled is true" do before do settings.profiling.advanced.gc_enabled = true - stub_const('RUBY_VERSION', testing_version) + stub_const("RUBY_VERSION", testing_version) end - ['2.7.0', '3.1.4', '3.2.3', '3.3.0'].each do |fixed_ruby| + ["2.7.0", "3.1.4", "3.2.3", "3.3.0"].each do |fixed_ruby| context "on a Ruby version not affected by https://bugs.ruby-lang.org/issues/18464 (#{fixed_ruby})" do let(:testing_version) { fixed_ruby } - it 'initializes a CpuAndWallTimeWorker collector with gc_profiling_enabled set to true' do + it "initializes a CpuAndWallTimeWorker collector with gc_profiling_enabled set to true" do expect(Datadog::Profiling::Collectors::CpuAndWallTimeWorker).to receive(:new).with hash_including( gc_profiling_enabled: true, ) @@ -118,11 +154,11 @@ end end - ['3.0.0', '3.1.0', '3.1.3'].each do |broken_ractors_ruby| + ["3.0.0", "3.1.0", "3.1.3"].each do |broken_ractors_ruby| context "on a Ruby version affected by https://bugs.ruby-lang.org/issues/18464 (#{broken_ractors_ruby})" do let(:testing_version) { broken_ractors_ruby } - it 'initializes a CpuAndWallTimeWorker collector with gc_profiling_enabled set to false and warns' do + it "initializes a CpuAndWallTimeWorker collector with gc_profiling_enabled set to false and warns" do expect(Datadog::Profiling::Collectors::CpuAndWallTimeWorker).to receive(:new).with hash_including( gc_profiling_enabled: false, ) @@ -134,10 +170,10 @@ end end - context 'on Ruby 3' do - let(:testing_version) { '3.3.0' } + context "on Ruby 3" do + let(:testing_version) { "3.3.0" } - it 'emits a debug log about Ractors interfering with GC profiling' do + it "emits a debug log about Ractors interfering with GC profiling" do expect(Datadog.logger) .to receive(:debug).with(/using Ractors may result in GC profiling unexpectedly stopping/) @@ -146,10 +182,10 @@ end end - context 'when gc_enabled is false' do + context "when gc_enabled is false" do before { settings.profiling.advanced.gc_enabled = false } - it 'initializes a CpuAndWallTimeWorker collector with gc_profiling_enabled set to false' do + it "initializes a CpuAndWallTimeWorker collector with gc_profiling_enabled set to false" do expect(Datadog::Profiling::Collectors::CpuAndWallTimeWorker).to receive(:new).with hash_including( gc_profiling_enabled: false, ) @@ -158,17 +194,17 @@ end end - context 'when allocation profiling is enabled' do + context "when allocation profiling is enabled" do before do settings.profiling.allocation_enabled = true settings.profiling.advanced.gc_enabled = false # Disable this to avoid any additional warnings coming from it - stub_const('RUBY_VERSION', testing_version) + stub_const("RUBY_VERSION", testing_version) end - context 'on Ruby 2.x' do - let(:testing_version) { '2.5.0' } + context "on Ruby 2.x" do + let(:testing_version) { "2.5.0" } - it 'initializes CpuAndWallTimeWorker and StackRecorder with allocation sampling support' do + it "initializes CpuAndWallTimeWorker and StackRecorder with allocation sampling support" do expect(Datadog::Profiling::Collectors::CpuAndWallTimeWorker).to receive(:new).with hash_including( allocation_profiling_enabled: true, ) @@ -183,11 +219,11 @@ end end - ['3.2.0', '3.2.1', '3.2.2'].each do |broken_ruby| + ["3.2.0", "3.2.1", "3.2.2"].each do |broken_ruby| context "on a Ruby 3 version affected by https://bugs.ruby-lang.org/issues/19482 (#{broken_ruby})" do let(:testing_version) { broken_ruby } - it 'initializes a CpuAndWallTimeWorker and StackRecorder with allocation sampling force-disabled and warns' do + it "initializes a CpuAndWallTimeWorker and StackRecorder with allocation sampling force-disabled and warns" do expect(Datadog::Profiling::Collectors::CpuAndWallTimeWorker).to receive(:new).with hash_including( allocation_profiling_enabled: false, ) @@ -203,11 +239,11 @@ end end - ['3.0.0', '3.1.0', '3.1.3'].each do |broken_ractors_ruby| + ["3.0.0", "3.1.0", "3.1.3"].each do |broken_ractors_ruby| context "on a Ruby 3 version affected by https://bugs.ruby-lang.org/issues/18464 (#{broken_ractors_ruby})" do let(:testing_version) { broken_ractors_ruby } - it 'initializes CpuAndWallTimeWorker and StackRecorder with allocation sampling support and warns' do + it "initializes CpuAndWallTimeWorker and StackRecorder with allocation sampling support and warns" do expect(Datadog::Profiling::Collectors::CpuAndWallTimeWorker).to receive(:new).with hash_including( allocation_profiling_enabled: true, ) @@ -223,10 +259,10 @@ end end - ['3.1.4', '3.2.3', '3.3.0'].each do |fixed_ruby| + ["3.1.4", "3.2.3", "3.3.0"].each do |fixed_ruby| context "on a Ruby 3 version where https://bugs.ruby-lang.org/issues/18464 is fixed (#{fixed_ruby})" do let(:testing_version) { fixed_ruby } - it 'initializes CpuAndWallTimeWorker and StackRecorder with allocation sampling support and warns' do + it "initializes CpuAndWallTimeWorker and StackRecorder with allocation sampling support and warns" do expect(Datadog::Profiling::Collectors::CpuAndWallTimeWorker).to receive(:new).with hash_including( allocation_profiling_enabled: true, ) @@ -243,12 +279,12 @@ end end - context 'when allocation profiling is disabled' do + context "when allocation profiling is disabled" do before do settings.profiling.allocation_enabled = false end - it 'initializes CpuAndWallTimeWorker and StackRecorder without allocation sampling support' do + it "initializes CpuAndWallTimeWorker and StackRecorder without allocation sampling support" do expect(Datadog::Profiling::Collectors::CpuAndWallTimeWorker).to receive(:new).with hash_including( allocation_profiling_enabled: false, ) @@ -260,20 +296,20 @@ end end - context 'when heap profiling is enabled' do + context "when heap profiling is enabled" do # Universally supported ruby version for allocation profiling by default - let(:testing_version) { '3.3.0' } + let(:testing_version) { "3.3.0" } before do settings.profiling.advanced.experimental_heap_enabled = true settings.profiling.advanced.gc_enabled = false # Disable this to avoid any additional warnings coming from it - stub_const('RUBY_VERSION', testing_version) + stub_const("RUBY_VERSION", testing_version) end - context 'on a Ruby older than 2.7' do - let(:testing_version) { '2.6' } + context "on a Ruby older than 2.7" do + let(:testing_version) { "2.6" } - it 'initializes StackRecorder without heap sampling support and warns' do + it "initializes StackRecorder without heap sampling support and warns" do expect(Datadog::Profiling::StackRecorder).to receive(:new) .with(hash_including(heap_samples_enabled: false, heap_size_enabled: false)) .and_call_original @@ -284,22 +320,22 @@ end end - context 'and allocation profiling disabled' do + context "and allocation profiling disabled" do before do settings.profiling.allocation_enabled = false end - it 'raises an ArgumentError during component initialization' do + it "raises an ArgumentError during component initialization" do expect { build_profiler_component }.to raise_error(ArgumentError, /requires allocation profiling/) end end - context 'and allocation profiling enabled and supported' do + context "and allocation profiling enabled and supported" do before do settings.profiling.allocation_enabled = true end - it 'initializes StackRecorder with heap sampling support and warns' do + it "initializes StackRecorder with heap sampling support and warns" do expect(Datadog::Profiling::StackRecorder).to receive(:new) .with(hash_including(heap_samples_enabled: true, heap_size_enabled: true)) .and_call_original @@ -312,12 +348,12 @@ build_profiler_component end - context 'but heap size profiling is disabled' do + context "but heap size profiling is disabled" do before do settings.profiling.advanced.experimental_heap_size_enabled = false end - it 'initializes StackRecorder without heap size profiling support' do + it "initializes StackRecorder without heap size profiling support" do expect(Datadog::Profiling::StackRecorder).to receive(:new) .with(hash_including(heap_samples_enabled: true, heap_size_enabled: false)) .and_call_original @@ -330,10 +366,10 @@ end end - context 'on a Ruby older than 3.1' do - let(:testing_version) { '2.7' } + context "on a Ruby older than 3.1" do + let(:testing_version) { "2.7" } - it 'initializes StackRecorder with heap sampling support but shows warning and debug messages' do + it "initializes StackRecorder with heap sampling support but shows warning and debug messages" do expect(Datadog::Profiling::StackRecorder).to receive(:new) .with(hash_including(heap_samples_enabled: true)) .and_call_original @@ -349,12 +385,12 @@ end end - context 'when heap profiling is disabled' do + context "when heap profiling is disabled" do before do settings.profiling.advanced.experimental_heap_enabled = false end - it 'initializes StackRecorder without heap sampling support' do + it "initializes StackRecorder without heap sampling support" do expect(Datadog::Profiling::StackRecorder).to receive(:new) .with(hash_including(heap_samples_enabled: false, heap_size_enabled: false)) .and_call_original @@ -363,10 +399,10 @@ end end - context 'when timeline is enabled' do + context "when timeline is enabled" do before { settings.profiling.advanced.timeline_enabled = true } - it 'sets up the StackRecorder with timeline_enabled: true' do + it "sets up the StackRecorder with timeline_enabled: true" do expect(Datadog::Profiling::StackRecorder) .to receive(:new).with(hash_including(timeline_enabled: true)).and_call_original @@ -374,10 +410,10 @@ end end - context 'when timeline is disabled' do + context "when timeline is disabled" do before { settings.profiling.advanced.timeline_enabled = false } - it 'sets up the StackRecorder with timeline_enabled: false' do + it "sets up the StackRecorder with timeline_enabled: false" do expect(Datadog::Profiling::StackRecorder) .to receive(:new).with(hash_including(timeline_enabled: false)).and_call_original @@ -385,30 +421,51 @@ end end - it 'sets up the Profiler with the CpuAndWallTimeWorker collector' do + context "when heap_clean_after_gc_enabled is enabled" do + before { settings.profiling.advanced.heap_clean_after_gc_enabled = true } + + it "sets up the StackRecorder with heap_clean_after_gc_enabled: true" do + expect(Datadog::Profiling::StackRecorder) + .to receive(:new).with(hash_including(heap_clean_after_gc_enabled: true)).and_call_original + + build_profiler_component + end + end + + context "when heap_clean_after_gc_enabled is disabled" do + before { settings.profiling.advanced.heap_clean_after_gc_enabled = false } + + it "sets up the StackRecorder with heap_clean_after_gc_enabled: false" do + expect(Datadog::Profiling::StackRecorder) + .to receive(:new).with(hash_including(heap_clean_after_gc_enabled: false)).and_call_original + + build_profiler_component + end + end + + it "sets up the Profiler with the CpuAndWallTimeWorker collector" do expect(Datadog::Profiling::Profiler).to receive(:new).with( worker: instance_of(Datadog::Profiling::Collectors::CpuAndWallTimeWorker), - scheduler: anything, - optional_crashtracker: anything, + scheduler: anything ) build_profiler_component end - it 'sets up the Exporter with the StackRecorder' do + it "sets up the Exporter with the StackRecorder" do expect(Datadog::Profiling::Exporter) .to receive(:new).with(hash_including(pprof_recorder: instance_of(Datadog::Profiling::StackRecorder))) build_profiler_component end - it 'sets up the Exporter internal_metadata with relevant settings' do + it "sets up the Exporter internal_metadata with relevant settings" do allow(Datadog::Profiling::Collectors::ThreadContext).to receive(:new) allow(Datadog::Profiling::Collectors::CpuAndWallTimeWorker).to receive(:new) allow(Datadog::Profiling::StackRecorder).to receive(:new) expect(described_class).to receive(:no_signals_workaround_enabled?).and_return(:no_signals_result) - expect(settings.profiling.advanced).to receive(:timeline_enabled).and_return(:timeline_result) + expect(settings.profiling.advanced).to receive(:timeline_enabled).at_least(:once).and_return(:timeline_result) expect(settings.profiling.advanced).to receive(:experimental_heap_sample_rate).and_return(456) expect(Datadog::Profiling::Exporter).to receive(:new).with( hash_including( @@ -423,10 +480,10 @@ build_profiler_component end - context 'when on Linux' do - before { stub_const('RUBY_PLATFORM', 'some-linux-based-platform') } + context "when on Linux" do + before { stub_const("RUBY_PLATFORM", "some-linux-based-platform") } - it 'sets up the StackRecorder with cpu_time_enabled: true' do + it "sets up the StackRecorder with cpu_time_enabled: true" do expect(Datadog::Profiling::StackRecorder) .to receive(:new).with(hash_including(cpu_time_enabled: true)).and_call_original @@ -434,10 +491,10 @@ end end - context 'when not on Linux' do - before { stub_const('RUBY_PLATFORM', 'some-other-os') } + context "when not on Linux" do + before { stub_const("RUBY_PLATFORM", "some-other-os") } - it 'sets up the StackRecorder with cpu_time_enabled: false' do + it "sets up the StackRecorder with cpu_time_enabled: false" do expect(Datadog::Profiling::StackRecorder) .to receive(:new).with(hash_including(cpu_time_enabled: false)).and_call_original @@ -446,13 +503,13 @@ end end - it 'runs the setup task to set up any needed extensions for profiling' do + it "runs the setup task to set up any needed extensions for profiling" do expect(profiler_setup_task).to receive(:run) build_profiler_component end - it 'builds an HttpTransport with the current settings' do + it "builds an HttpTransport with the current settings" do expect(Datadog::Profiling::HttpTransport).to receive(:new).with( agent_settings: agent_settings, site: settings.site, @@ -463,7 +520,7 @@ build_profiler_component end - it 'creates a scheduler with an HttpTransport' do + it "creates a scheduler with an HttpTransport" do expect(Datadog::Profiling::Scheduler).to receive(:new) do |transport:, **_| expect(transport).to be_a_kind_of(Datadog::Profiling::HttpTransport) end @@ -471,27 +528,27 @@ build_profiler_component end - context 'when upload_period_seconds is below 60 seconds' do + context "when upload_period_seconds is below 60 seconds" do before { settings.profiling.advanced.upload_period_seconds = 59 } - it 'ignores this setting and creates a scheduler with an interval of 60 seconds' do + it "ignores this setting and creates a scheduler with an interval of 60 seconds" do expect(Datadog::Profiling::Scheduler).to receive(:new).with(a_hash_including(interval: 60)) build_profiler_component end end - context 'when upload_period_seconds is over 60 seconds' do + context "when upload_period_seconds is over 60 seconds" do before { settings.profiling.advanced.upload_period_seconds = 61 } - it 'creates a scheduler with the given interval' do + it "creates a scheduler with the given interval" do expect(Datadog::Profiling::Scheduler).to receive(:new).with(a_hash_including(interval: 61)) build_profiler_component end end - it 'initializes the exporter with a code provenance collector' do + it "initializes the exporter with a code provenance collector" do expect(Datadog::Profiling::Exporter).to receive(:new) do |code_provenance_collector:, **_| expect(code_provenance_collector).to be_a_kind_of(Datadog::Profiling::Collectors::CodeProvenance) end @@ -499,10 +556,10 @@ build_profiler_component end - context 'when code provenance is disabled' do + context "when code provenance is disabled" do before { settings.profiling.advanced.code_provenance_enabled = false } - it 'initializes the exporter with a nil code provenance collector' do + it "initializes the exporter with a nil code provenance collector" do expect(Datadog::Profiling::Exporter).to receive(:new) do |code_provenance_collector:, **_| expect(code_provenance_collector).to be nil end @@ -511,20 +568,20 @@ end end - context 'when a custom transport is provided' do - let(:custom_transport) { double('Custom transport') } + context "when a custom transport is provided" do + let(:custom_transport) { double("Custom transport") } before do settings.profiling.exporter.transport = custom_transport end - it 'does not initialize an HttpTransport' do + it "does not initialize an HttpTransport" do expect(Datadog::Profiling::HttpTransport).to_not receive(:new) build_profiler_component end - it 'sets up the scheduler to use the custom transport' do + it "sets up the scheduler to use the custom transport" do expect(Datadog::Profiling::Scheduler).to receive(:new) do |transport:, **_| expect(transport).to be custom_transport end @@ -533,105 +590,115 @@ end end - context 'when crash tracking is disabled' do - before { settings.profiling.advanced.experimental_crash_tracking_enabled = false } - - it 'does not initialize the crash tracker' do - expect(Datadog::Profiling::Crashtracker).to_not receive(:new) + describe "dir interruption workaround" do + let(:no_signals_workaround_enabled) { false } - build_profiler_component + before do + allow(described_class).to receive(:no_signals_workaround_enabled?).and_return(no_signals_workaround_enabled) end - end - context 'when crash tracking is enabled' do - before { settings.profiling.advanced.experimental_crash_tracking_enabled = true } + context "on Ruby >= 3.4" do + before { skip "Behavior does not apply to current Ruby version" if RUBY_VERSION < "3.4." } - it 'initializes the crash tracker' do - expect(Datadog::Profiling::Crashtracker).to receive(:new).with( - exporter_configuration: array_including(:agent), - tags: hash_including('runtime' => 'ruby'), - upload_timeout_seconds: settings.profiling.upload.timeout_seconds, - ) + it "is never applied" do + expect(Datadog::Profiling::Ext::DirMonkeyPatches).to_not receive(:apply!) - build_profiler_component + build_profiler_component + end end - context 'when a custom transport is provided' do - let(:custom_transport) { double('Custom transport') } - - before do - settings.profiling.exporter.transport = custom_transport - allow(Datadog.logger).to receive(:warn) - end + context "on Ruby < 3.4" do + before { skip "Behavior does not apply to current Ruby version" if RUBY_VERSION >= "3.4." } - it 'warns that crash tracking will not be enabled' do - expect(Datadog.logger).to receive(:warn).with(/Cannot enable profiling crash tracking/) + it "is applied by default" do + expect(Datadog::Profiling::Ext::DirMonkeyPatches).to receive(:apply!) build_profiler_component end + end - it 'does not initialize the crash tracker' do - expect(Datadog::Profiling::Crashtracker).to_not receive(:new) + context "when the no signals workaround is enabled" do + let(:no_signals_workaround_enabled) { true } + + it "is not applied" do + expect(Datadog::Profiling::Ext::DirMonkeyPatches).to_not receive(:apply!) build_profiler_component end end - it 'initializes the profiler instance with the crash tracker' do - expect(Datadog::Profiling::Profiler).to receive(:new).with( - worker: anything, - scheduler: anything, - optional_crashtracker: instance_of(Datadog::Profiling::Crashtracker), - ) + context "when the dir interruption workaround is disabled via configuration" do + before { settings.profiling.advanced.dir_interruption_workaround_enabled = false } - build_profiler_component + it "is not applied" do + expect(Datadog::Profiling::Ext::DirMonkeyPatches).to_not receive(:apply!) + + build_profiler_component + end end end - describe 'dir interruption workaround' do - let(:no_signals_workaround_enabled) { false } - + context "when GVL profiling is requested" do before do - expect(described_class).to receive(:no_signals_workaround_enabled?).and_return(no_signals_workaround_enabled) + settings.profiling.advanced.preview_gvl_enabled = true + # This triggers a warning in some Rubies so it's easier for testing to disable it + settings.profiling.advanced.gc_enabled = false end - it 'is enabled by default' do - expect(Datadog::Profiling::Ext::DirMonkeyPatches).to receive(:apply!) + context "on Ruby < 3.2" do + before { skip "Behavior does not apply to current Ruby version" if RUBY_VERSION >= "3.2." } - build_profiler_component - end + it "does not enable GVL profiling" do + expect(Datadog::Profiling::Collectors::CpuAndWallTimeWorker) + .to receive(:new).with(hash_including(gvl_profiling_enabled: false)) - context 'when the no signals workaround is enabled' do - let(:no_signals_workaround_enabled) { true } + build_profiler_component + end - it 'is not applied' do - expect(Datadog::Profiling::Ext::DirMonkeyPatches).to_not receive(:apply!) + it "logs a warning" do + expect(Datadog.logger).to receive(:warn).with(/GVL profiling is currently not supported/) build_profiler_component end end - context 'when the dir interruption workaround is disabled via configuration' do - before { settings.profiling.advanced.dir_interruption_workaround_enabled = false } + context "on Ruby >= 3.2" do + before { skip "Behavior does not apply to current Ruby version" if RUBY_VERSION < "3.2." } - it 'is not applied' do - expect(Datadog::Profiling::Ext::DirMonkeyPatches).to_not receive(:apply!) + context "when timeline is enabled" do + before { settings.profiling.advanced.timeline_enabled = true } - build_profiler_component + it "enables GVL profiling" do + expect(Datadog::Profiling::Collectors::CpuAndWallTimeWorker) + .to receive(:new).with(hash_including(gvl_profiling_enabled: true)) + + build_profiler_component + end + end + + context "when timeline is disabled" do + before { settings.profiling.advanced.timeline_enabled = false } + + it "does not enable GVL profiling" do + expect(Datadog::Profiling::Collectors::CpuAndWallTimeWorker) + .to receive(:new).with(hash_including(gvl_profiling_enabled: false)) + + build_profiler_component + end end end end end end - describe '.valid_overhead_target' do + describe ".valid_overhead_target" do subject(:valid_overhead_target) { described_class.send(:valid_overhead_target, overhead_target_percentage) } [0, 20.1].each do |invalid_value| let(:overhead_target_percentage) { invalid_value } context "when overhead_target_percentage is invalid value (#{invalid_value})" do - it 'logs an error' do + it "logs an error" do expect(Datadog.logger).to receive(:error).with( /Ignoring invalid value for profiling overhead_target_percentage/ ) @@ -639,7 +706,7 @@ valid_overhead_target end - it 'falls back to the default value' do + it "falls back to the default value" do allow(Datadog.logger).to receive(:error) expect(valid_overhead_target).to eq 2.0 @@ -647,21 +714,21 @@ end end - context 'when overhead_target_percentage is valid' do + context "when overhead_target_percentage is valid" do let(:overhead_target_percentage) { 1.5 } - it 'returns the value' do + it "returns the value" do expect(valid_overhead_target).to eq 1.5 end end end - describe '.no_signals_workaround_enabled?' do + describe ".no_signals_workaround_enabled?" do subject(:no_signals_workaround_enabled?) { described_class.send(:no_signals_workaround_enabled?, settings) } before { skip_if_profiling_not_supported(self) } - context 'when no_signals_workaround_enabled is false' do + context "when no_signals_workaround_enabled is false" do before do settings.profiling.advanced.no_signals_workaround_enabled = false allow(Datadog.logger).to receive(:warn) @@ -669,10 +736,10 @@ it { is_expected.to be false } - context 'on Ruby 2.5 and below' do - before { skip 'Behavior does not apply to current Ruby version' if RUBY_VERSION >= '2.6.' } + context "on Ruby 2.5 and below" do + before { skip "Behavior does not apply to current Ruby version" if RUBY_VERSION >= "2.6." } - it 'logs a warning message mentioning that this is is not recommended' do + it "logs a warning message mentioning that this is is not recommended" do expect(Datadog.logger).to receive(:warn).with( /workaround has been disabled via configuration.*This is not recommended/ ) @@ -681,10 +748,10 @@ end end - context 'on Ruby 2.6 and above' do - before { skip 'Behavior does not apply to current Ruby version' if RUBY_VERSION < '2.6.' } + context "on Ruby 2.6 and above" do + before { skip "Behavior does not apply to current Ruby version" if RUBY_VERSION < "2.6." } - it 'logs a warning message mentioning that the no signals mode has been disabled' do + it "logs a warning message mentioning that the no signals mode has been disabled" do expect(Datadog.logger).to receive(:warn).with('Profiling "no signals" workaround disabled via configuration') no_signals_workaround_enabled? @@ -692,7 +759,7 @@ end end - context 'when no_signals_workaround_enabled is true' do + context "when no_signals_workaround_enabled is true" do before do settings.profiling.advanced.no_signals_workaround_enabled = true allow(Datadog.logger).to receive(:warn) @@ -700,82 +767,82 @@ it { is_expected.to be true } - it 'logs a warning message mentioning that this setting is active' do + it "logs a warning message mentioning that this setting is active" do expect(Datadog.logger).to receive(:warn).with(/Profiling "no signals" workaround enabled via configuration/) no_signals_workaround_enabled? end end - shared_examples 'no_signals_workaround_enabled :auto behavior' do - context 'on Ruby 2.5 and below' do - before { skip 'Behavior does not apply to current Ruby version' if RUBY_VERSION >= '2.6.' } + shared_examples "no_signals_workaround_enabled :auto behavior" do + context "on Ruby 2.5 and below" do + before { skip "Behavior does not apply to current Ruby version" if RUBY_VERSION >= "2.6." } it { is_expected.to be true } end - context 'on Ruby 2.6 and above' do - before { skip 'Behavior does not apply to current Ruby version' if RUBY_VERSION < '2.6.' } + context "on Ruby 2.6 and above" do + before { skip "Behavior does not apply to current Ruby version" if RUBY_VERSION < "2.6." } - context 'when mysql2 gem is available' do - include_context('loaded gems', mysql2: Gem::Version.new('0.5.5'), rugged: nil) + context "when mysql2 gem is available" do + include_context("loaded gems", mysql2: Gem::Version.new("0.5.5"), rugged: nil) before do allow(Datadog.logger).to receive(:warn) allow(Datadog.logger).to receive(:debug) end - context 'when skip_mysql2_check is enabled' do + context "when skip_mysql2_check is enabled" do before { settings.profiling.advanced.skip_mysql2_check = true } it { is_expected.to be true } - it 'logs a warning message mentioning that the no signals workaround is going to be used' do + it "logs a warning message mentioning that the no signals workaround is going to be used" do expect(Datadog.logger).to receive(:warn).with(/Enabling the profiling "no signals" workaround/) no_signals_workaround_enabled? end end - context 'when there is an issue requiring mysql2' do - before { allow(described_class).to receive(:require).and_raise(LoadError.new('Simulated require failure')) } + context "when there is an issue requiring mysql2" do + before { allow(described_class).to receive(:require).and_raise(LoadError.new("Simulated require failure")) } it { is_expected.to be true } - it 'logs that probing mysql2 failed' do + it "logs that probing mysql2 failed" do expect(Datadog.logger).to receive(:warn).with(/Failed to probe `mysql2` gem information/) no_signals_workaround_enabled? end end - context 'when mysql2 is required successfully' do - before { allow(described_class).to receive(:require).with('mysql2') } + context "when mysql2 is required successfully" do + before { allow(described_class).to receive(:require).with("mysql2") } - it 'logs a debug message stating mysql2 will be required' do + it "logs a debug message stating mysql2 will be required" do expect(Datadog.logger).to receive(:debug).with(/Requiring `mysql2` to check/) no_signals_workaround_enabled? end - context 'when mysql2 gem does not provide the info method' do + context "when mysql2 gem does not provide the info method" do before do - stub_const('Mysql2::Client', double('Fake Mysql2::Client')) + stub_const("Mysql2::Client", double("Fake Mysql2::Client")) end it { is_expected.to be true } end - context 'when an error is raised while probing the mysql2 gem' do + context "when an error is raised while probing the mysql2 gem" do before do - fake_client = double('Fake Mysql2::Client') - stub_const('Mysql2::Client', fake_client) - expect(fake_client).to receive(:info).and_raise(ArgumentError.new('Simulated call failure')) + fake_client = double("Fake Mysql2::Client") + stub_const("Mysql2::Client", fake_client) + expect(fake_client).to receive(:info).and_raise(ArgumentError.new("Simulated call failure")) end it { is_expected.to be true } - it 'logs a warning including the error details' do + it "logs a warning including the error details" do expect(Datadog.logger).to receive(:warn).with(/Failed to probe `mysql2` gem information/) no_signals_workaround_enabled? @@ -785,73 +852,73 @@ # See comments on looks_like_mariadb? for details on how this matching works context "when mysql2 gem is linked to mariadb's version of libmysqlclient" do before do - fake_client = double('Fake Mysql2::Client') - stub_const('Mysql2::Client', fake_client) - expect(fake_client).to receive(:info).and_return({ version: '4.9.99', header_version: '10.0.0' }) + fake_client = double("Fake Mysql2::Client") + stub_const("Mysql2::Client", fake_client) + expect(fake_client).to receive(:info).and_return({version: "4.9.99", header_version: "10.0.0"}) end it { is_expected.to be false } - it 'does not log any warning message' do + it "does not log any warning message" do expect(Datadog.logger).to_not receive(:warn) no_signals_workaround_enabled? end end - context 'when mysql2 gem is using a version of libmysqlclient < 8.0.0' do + context "when mysql2 gem is using a version of libmysqlclient < 8.0.0" do before do - fake_client = double('Fake Mysql2::Client') - stub_const('Mysql2::Client', fake_client) - expect(fake_client).to receive(:info).and_return({ version: '7.9.9' }) + fake_client = double("Fake Mysql2::Client") + stub_const("Mysql2::Client", fake_client) + expect(fake_client).to receive(:info).and_return({version: "7.9.9"}) end it { is_expected.to be true } - it 'logs a warning message mentioning that the no signals workaround is going to be used' do + it "logs a warning message mentioning that the no signals workaround is going to be used" do expect(Datadog.logger).to receive(:warn).with(/Enabling the profiling "no signals" workaround/) no_signals_workaround_enabled? end end - context 'when mysql2 gem is using a version of libmysqlclient >= 8.0.0' do + context "when mysql2 gem is using a version of libmysqlclient >= 8.0.0" do before do - fake_client = double('Fake Mysql2::Client') - stub_const('Mysql2::Client', fake_client) - expect(fake_client).to receive(:info).and_return({ version: '8.0.0' }) + fake_client = double("Fake Mysql2::Client") + stub_const("Mysql2::Client", fake_client) + expect(fake_client).to receive(:info).and_return({version: "8.0.0"}) end it { is_expected.to be false } - it 'does not log any warning message' do + it "does not log any warning message" do expect(Datadog.logger).to_not receive(:warn) no_signals_workaround_enabled? end end - context 'when mysql2-aurora gem is loaded and libmysqlclient < 8.0.0' do + context "when mysql2-aurora gem is loaded and libmysqlclient < 8.0.0" do before do - fake_original_client = double('Fake original Mysql2::Client') - stub_const('Mysql2::Aurora::ORIGINAL_CLIENT_CLASS', fake_original_client) - expect(fake_original_client).to receive(:info).and_return({ version: '7.9.9' }) + fake_original_client = double("Fake original Mysql2::Client") + stub_const("Mysql2::Aurora::ORIGINAL_CLIENT_CLASS", fake_original_client) + expect(fake_original_client).to receive(:info).and_return({version: "7.9.9"}) - client_replaced_by_aurora = double('Fake Aurora Mysql2::Client') - stub_const('Mysql2::Client', client_replaced_by_aurora) + client_replaced_by_aurora = double("Fake Aurora Mysql2::Client") + stub_const("Mysql2::Client", client_replaced_by_aurora) end it { is_expected.to be true } end - context 'when mysql2-aurora gem is loaded and libmysqlclient >= 8.0.0' do + context "when mysql2-aurora gem is loaded and libmysqlclient >= 8.0.0" do before do - fake_original_client = double('Fake original Mysql2::Client') - stub_const('Mysql2::Aurora::ORIGINAL_CLIENT_CLASS', fake_original_client) - expect(fake_original_client).to receive(:info).and_return({ version: '8.0.0' }) + fake_original_client = double("Fake original Mysql2::Client") + stub_const("Mysql2::Aurora::ORIGINAL_CLIENT_CLASS", fake_original_client) + expect(fake_original_client).to receive(:info).and_return({version: "8.0.0"}) - client_replaced_by_aurora = double('Fake Aurora Mysql2::Client') - stub_const('Mysql2::Client', client_replaced_by_aurora) + client_replaced_by_aurora = double("Fake Aurora Mysql2::Client") + stub_const("Mysql2::Client", client_replaced_by_aurora) end it { is_expected.to be false } @@ -859,52 +926,52 @@ end end - context 'when rugged gem is available' do - include_context('loaded gems', rugged: Gem::Version.new('1.6.3'), mysql2: nil) + context "when rugged gem is available" do + include_context("loaded gems", rugged: Gem::Version.new("1.6.3"), mysql2: nil) before { allow(Datadog.logger).to receive(:warn) } it { is_expected.to be true } - it 'logs a warning message mentioning that the no signals workaround is going to be used' do + it "logs a warning message mentioning that the no signals workaround is going to be used" do expect(Datadog.logger).to receive(:warn).with(/Enabling the profiling "no signals" workaround/) no_signals_workaround_enabled? end end - context 'when running inside the passenger web server, even when gem is not available' do - include_context('loaded gems', passenger: nil, rugged: nil, mysql2: nil) + context "when running inside the passenger web server, even when gem is not available" do + include_context("loaded gems", passenger: nil, rugged: nil, mysql2: nil) before do - stub_const('::PhusionPassenger', Module.new) + stub_const("::PhusionPassenger", Module.new) allow(Datadog.logger).to receive(:warn) end it { is_expected.to be true } - it 'logs a warning message mentioning that the no signals workaround is going to be used' do + it "logs a warning message mentioning that the no signals workaround is going to be used" do expect(Datadog.logger).to receive(:warn).with(/Enabling the profiling "no signals" workaround/) no_signals_workaround_enabled? end end - context 'when passenger gem is available' do - context 'on passenger >= 6.0.19' do - include_context('loaded gems', passenger: Gem::Version.new('6.0.19'), rugged: nil, mysql2: nil) + context "when passenger gem is available" do + context "on passenger >= 6.0.19" do + include_context("loaded gems", passenger: Gem::Version.new("6.0.19"), rugged: nil, mysql2: nil) it { is_expected.to be false } end - context 'on passenger < 6.0.19' do - include_context('loaded gems', passenger: Gem::Version.new('6.0.18'), rugged: nil, mysql2: nil) + context "on passenger < 6.0.19" do + include_context("loaded gems", passenger: Gem::Version.new("6.0.18"), rugged: nil, mysql2: nil) before { allow(Datadog.logger).to receive(:warn) } it { is_expected.to be true } - it 'logs a warning message mentioning that the no signals workaround is going to be used' do + it "logs a warning message mentioning that the no signals workaround is going to be used" do expect(Datadog.logger).to receive(:warn).with(/Enabling the profiling "no signals" workaround/) no_signals_workaround_enabled? @@ -912,22 +979,22 @@ end end - context 'when passenger gem is not available, but PhusionPassenger::VERSION_STRING is available' do - context 'on passenger >= 6.0.19' do - before { stub_const('PhusionPassenger::VERSION_STRING', '6.0.19') } + context "when passenger gem is not available, but PhusionPassenger::VERSION_STRING is available" do + context "on passenger >= 6.0.19" do + before { stub_const("PhusionPassenger::VERSION_STRING", "6.0.19") } it { is_expected.to be false } end - context 'on passenger < 6.0.19' do + context "on passenger < 6.0.19" do before do - stub_const('PhusionPassenger::VERSION_STRING', '6.0.18') + stub_const("PhusionPassenger::VERSION_STRING", "6.0.18") allow(Datadog.logger).to receive(:warn) end it { is_expected.to be true } - it 'logs a warning message mentioning that the no signals workaround is going to be used' do + it "logs a warning message mentioning that the no signals workaround is going to be used" do expect(Datadog.logger).to receive(:warn).with(/Enabling the profiling "no signals" workaround/) no_signals_workaround_enabled? @@ -935,33 +1002,33 @@ end end - context 'when mysql2 / rugged gems + passenger are not available' do - include_context('loaded gems', passenger: nil, mysql2: nil, rugged: nil) + context "when mysql2 / rugged gems + passenger are not available" do + include_context("loaded gems", passenger: nil, mysql2: nil, rugged: nil) it { is_expected.to be false } end end end - context 'when no_signals_workaround_enabled is :auto' do + context "when no_signals_workaround_enabled is :auto" do before { settings.profiling.advanced.no_signals_workaround_enabled = :auto } - include_examples 'no_signals_workaround_enabled :auto behavior' + include_examples "no_signals_workaround_enabled :auto behavior" end - context 'when no_signals_workaround_enabled is an invalid value' do + context "when no_signals_workaround_enabled is an invalid value" do before do - settings.profiling.advanced.no_signals_workaround_enabled = 'invalid value' + settings.profiling.advanced.no_signals_workaround_enabled = "invalid value" allow(Datadog.logger).to receive(:error) end - it 'logs an error message mentioning that the invalid value will be ignored' do + it "logs an error message mentioning that the invalid value will be ignored" do expect(Datadog.logger).to receive(:error).with(/Ignoring invalid value/) no_signals_workaround_enabled? end - include_examples 'no_signals_workaround_enabled :auto behavior' + include_examples "no_signals_workaround_enabled :auto behavior" end end end diff --git a/spec/datadog/profiling/crashtracker_spec.rb b/spec/datadog/profiling/crashtracker_spec.rb deleted file mode 100644 index 32030fa4180..00000000000 --- a/spec/datadog/profiling/crashtracker_spec.rb +++ /dev/null @@ -1,221 +0,0 @@ -require 'datadog/profiling/spec_helper' -require 'datadog/profiling/crashtracker' - -require 'webrick' -require 'fiddle' - -RSpec.describe Datadog::Profiling::Crashtracker do - before do - skip_if_profiling_not_supported(self) - - # No crash tracker process should still be running at the start of each testcase - wait_for { `pgrep -f libdatadog-crashtracking-receiver` }.to be_empty - end - - after do - # No crash tracker process should still be running at the end of each testcase - wait_for { `pgrep -f libdatadog-crashtracking-receiver` }.to be_empty - end - - let(:exporter_configuration) { [:agent, 'http://localhost:6006'] } - - let(:crashtracker_options) do - { - exporter_configuration: exporter_configuration, - tags: { 'tag1' => 'value1', 'tag2' => 'value2' }, - upload_timeout_seconds: 123, - } - end - - subject(:crashtracker) { described_class.new(**crashtracker_options) } - - describe '#start' do - subject(:start) { crashtracker.start } - - context 'when _native_start_or_update_on_fork raises an exception' do - it 'logs the exception' do - expect(described_class).to receive(:_native_start_or_update_on_fork) { raise 'Test failure' } - expect(Datadog.logger).to receive(:error).with(/Failed to start crash tracking: Test failure/) - - start - end - end - - context 'when path_to_crashtracking_receiver_binary is nil' do - subject(:crashtracker) { described_class.new(**crashtracker_options, path_to_crashtracking_receiver_binary: nil) } - - it 'logs a warning' do - expect(Datadog.logger).to receive(:warn).with(/no path_to_crashtracking_receiver_binary was found/) - - start - end - end - - context 'when ld_library_path is nil' do - subject(:crashtracker) { described_class.new(**crashtracker_options, ld_library_path: nil) } - - it 'logs a warning' do - expect(Datadog.logger).to receive(:warn).with(/no ld_library_path was found/) - - start - end - end - - it 'starts the crash tracker' do - start - - wait_for { `pgrep -f libdatadog-crashtracking-receiver` }.to_not be_empty - - crashtracker.stop - end - - context 'when calling start multiple times in a row' do - it 'only starts the crash tracker once' do - 3.times { crashtracker.start } - - wait_for { `pgrep -f libdatadog-crashtracking-receiver`.lines.size }.to be 1 - - crashtracker.stop - end - end - - context 'when upload_timeout_seconds is not an Integer' do - let(:crashtracker_options) { { **super(), upload_timeout_seconds: 12.34 } } - - it 'converts it to an Integer before calling _native_start_or_update_on_fork' do - expect(described_class) - .to receive(:_native_start_or_update_on_fork).with(hash_including(upload_timeout_seconds: 12)) - - start - end - end - end - - describe '#reset_after_fork' do - subject(:reset_after_fork) { crashtracker.reset_after_fork } - - context 'when called in a fork' do - before { crashtracker.start } - after { crashtracker.stop } - - it 'starts a second crash tracker for the fork' do - expect_in_fork do - wait_for { `pgrep -f libdatadog-crashtracking-receiver`.lines.size }.to be 1 - - crashtracker.reset_after_fork - - wait_for { `pgrep -f libdatadog-crashtracking-receiver`.lines.size }.to be 2 - - crashtracker.stop - - wait_for { `pgrep -f libdatadog-crashtracking-receiver`.lines.size }.to be 1 - end - end - end - end - - describe '#stop' do - subject(:stop) { crashtracker.stop } - - context 'when _native_stop_crashtracker raises an exception' do - it 'logs the exception' do - expect(described_class).to receive(:_native_stop) { raise 'Test failure' } - expect(Datadog.logger).to receive(:error).with(/Failed to stop crash tracking: Test failure/) - - stop - end - end - - it 'stops the crash tracker' do - crashtracker.start - - stop - - wait_for { `pgrep -f libdatadog-crashtracking-receiver` }.to be_empty - end - end - - context 'integration testing' do - shared_context 'HTTP server' do - let(:server) do - WEBrick::HTTPServer.new( - Port: 0, - Logger: log, - AccessLog: access_log, - StartCallback: -> { init_signal.push(1) } - ) - end - let(:hostname) { '127.0.0.1' } - let(:log) { WEBrick::Log.new(StringIO.new, WEBrick::Log::WARN) } - let(:access_log_buffer) { StringIO.new } - let(:access_log) { [[access_log_buffer, WEBrick::AccessLog::COMBINED_LOG_FORMAT]] } - let(:server_proc) do - proc do |req, res| - messages << req.tap { req.body } # Read body, store message before socket closes. - res.body = '{}' - end - end - let(:init_signal) { Queue.new } - - let(:messages) { [] } - - before do - server.mount_proc('/', &server_proc) - @server_thread = Thread.new { server.start } - init_signal.pop - end - - after do - unless RSpec.current_example.skipped? - # When the test is skipped, server has not been initialized and @server_thread would be nil; thus we only - # want to touch them when the test actually run, otherwise we would cause the server to start (incorrectly) - # and join to be called on a nil @server_thread - server.shutdown - @server_thread.join - end - end - end - - include_context 'HTTP server' - - let(:request) { messages.first } - let(:port) { server[:Port] } - - let(:exporter_configuration) { [:agent, "http://#{hostname}:#{port}"] } - - [:fiddle, :signal].each do |trigger| - it "reports crashes via http when app crashes with #{trigger}" do - fork_expectations = proc do |status:, stdout:, stderr:| - expect(Signal.signame(status.termsig)).to eq('SEGV').or eq('ABRT') - expect(stderr).to include('[BUG] Segmentation fault') - end - - expect_in_fork(fork_expectations: fork_expectations) do - crashtracker.start - - if trigger == :fiddle - Fiddle.free(42) - else - Process.kill('SEGV', Process.pid) - end - end - - crash_report = JSON.parse(request.body, symbolize_names: true)[:payload].first - - expect(crash_report[:stack_trace]).to_not be_empty - expect(crash_report[:tags]).to include('signum:11', 'signame:SIGSEGV') - - crash_report_message = JSON.parse(crash_report[:message], symbolize_names: true) - - expect(crash_report_message[:metadata]).to include( - profiling_library_name: 'dd-trace-rb', - profiling_library_version: Datadog::VERSION::STRING, - family: 'ruby', - tags: ['tag1:value1', 'tag2:value2'], - ) - expect(crash_report_message[:files][:'/proc/self/maps']).to_not be_empty - expect(crash_report_message[:os_info]).to_not be_empty - end - end - end -end diff --git a/spec/datadog/profiling/exporter_spec.rb b/spec/datadog/profiling/exporter_spec.rb index c23491eb486..9e9ee93f69c 100644 --- a/spec/datadog/profiling/exporter_spec.rb +++ b/spec/datadog/profiling/exporter_spec.rb @@ -1,8 +1,8 @@ -require 'datadog/profiling/spec_helper' +require "datadog/profiling/spec_helper" -require 'datadog/profiling/exporter' -require 'datadog/profiling/collectors/code_provenance' -require 'datadog/core/logger' +require "datadog/profiling/exporter" +require "datadog/profiling/collectors/code_provenance" +require "datadog/core/logger" RSpec.describe Datadog::Profiling::Exporter do before { skip_if_profiling_not_supported(self) } @@ -20,9 +20,9 @@ let(:start) { Time.now } let(:finish) { start + 60 } - let(:pprof_data) { 'dummy pprof data' } - let(:profile_stats) { { stat1: 1, stat2: 'a string', stat3: true } } - let(:code_provenance_data) { 'dummy code provenance data' } + let(:pprof_data) { "dummy pprof data" } + let(:profile_stats) { {stat1: 1, stat2: "a string", stat3: true} } + let(:code_provenance_data) { "dummy code provenance data" } let(:pprof_recorder_serialize) { [start, finish, pprof_data, profile_stats] } let(:pprof_recorder) do instance_double(Datadog::Profiling::StackRecorder, serialize: pprof_recorder_serialize, stats: recorder_stats) @@ -30,15 +30,15 @@ let(:worker) do # TODO: Change this to a direct reference when we drop support for old Rubies which currently error if we try # to `require 'profiling/collectors/cpu_and_wall_time_worker'` - instance_double('Datadog::Profiling::Collectors::CpuAndWallTimeWorker', stats_and_reset_not_thread_safe: worker_stats) + instance_double("Datadog::Profiling::Collectors::CpuAndWallTimeWorker", stats_and_reset_not_thread_safe: worker_stats) end let(:code_provenance_collector) do collector = instance_double(Datadog::Profiling::Collectors::CodeProvenance, generate_json: code_provenance_data) allow(collector).to receive(:refresh).and_return(collector) collector end - let(:internal_metadata) { { no_signals_workaround_enabled: no_signals_workaround_enabled } } - let(:info) { { profiler: { running_under_test: true } } } + let(:internal_metadata) { {no_signals_workaround_enabled: no_signals_workaround_enabled} } + let(:info) { {profiler: {running_under_test: true}} } let(:info_collector) { instance_double(Datadog::Profiling::Collectors::Info, info: info) } let(:no_signals_workaround_enabled) { false } let(:logger) { Datadog.logger } @@ -56,16 +56,16 @@ } end - describe '#flush' do + describe "#flush" do subject(:flush) { exporter.flush } - it 'returns a flush containing the data from the recorders' do + it "returns a flush containing the data from the recorders" do expect(flush).to have_attributes( start: start, finish: finish, - pprof_file_name: 'rubyprofile.pprof', - code_provenance_file_name: 'code-provenance.json', - tags_as_array: array_including(%w[language ruby], ['process_id', Process.pid.to_s]), + pprof_file_name: "rubyprofile.pprof", + code_provenance_file_name: "code-provenance.json", + tags_as_array: array_including(%w[language ruby], ["process_id", Process.pid.to_s]), ) expect(flush.pprof_data).to eq pprof_data expect(flush.code_provenance_data).to eq code_provenance_data @@ -82,48 +82,48 @@ expect(JSON.parse(flush.info_json, symbolize_names: true)).to eq(info) end - context 'when pprof recorder has no data' do + context "when pprof recorder has no data" do let(:pprof_recorder_serialize) { nil } it { is_expected.to be nil } end - context 'when no code provenance collector was provided' do + context "when no code provenance collector was provided" do let(:code_provenance_collector) { nil } - it 'returns a flush with nil code_provenance_data' do + it "returns a flush with nil code_provenance_data" do expect(flush.code_provenance_data).to be nil end end - context 'when duration of profile is below 1s' do + context "when duration of profile is below 1s" do let(:finish) { start + 0.99 } before { allow(logger).to receive(:debug) } it { is_expected.to be nil } - it 'logs a debug message' do + it "logs a debug message" do expect(logger).to receive(:debug).with(/Skipped exporting/) flush end end - context 'when duration of profile is 1s or above' do + context "when duration of profile is 1s or above" do let(:finish) { start + 1 } it { is_expected.to_not be nil } end - context 'when no_signals_workaround_enabled is true' do + context "when no_signals_workaround_enabled is true" do let(:no_signals_workaround_enabled) { true } it { is_expected.to have_attributes(internal_metadata_json: a_string_matching('"no_signals_workaround_enabled":true')) } end - context 'when no_signals_workaround_enabled is false' do + context "when no_signals_workaround_enabled is false" do let(:no_signals_workaround_enabled) { false } it { is_expected.to have_attributes(internal_metadata_json: a_string_matching('"no_signals_workaround_enabled":false')) @@ -131,24 +131,24 @@ end end - describe '#reset_after_fork' do + describe "#reset_after_fork" do let(:dummy_current_time) { Time.new(2022) } let(:time_provider) { class_double(Time, now: dummy_current_time) } - let(:options) { { **super(), time_provider: class_double(Time, now: dummy_current_time) } } + let(:options) { {**super(), time_provider: class_double(Time, now: dummy_current_time)} } subject(:reset_after_fork) { exporter.reset_after_fork } it { is_expected.to be nil } - it 'sets the last_flush_finish_at to be the current time' do + it "sets the last_flush_finish_at to be the current time" do expect { reset_after_fork }.to change { exporter.send(:last_flush_finish_at) }.from(nil).to(dummy_current_time) end end - describe '#can_flush?' do + describe "#can_flush?" do let(:time_provider) { class_double(Time) } let(:created_at) { start - 60 } - let(:options) { { **super(), time_provider: time_provider } } + let(:options) { {**super(), time_provider: time_provider} } subject(:can_flush?) { exporter.can_flush? } @@ -157,30 +157,30 @@ exporter end - context 'when exporter has flushed before' do + context "when exporter has flushed before" do before { exporter.flush } - context 'when less than 1s has elapsed since last flush' do + context "when less than 1s has elapsed since last flush" do before { expect(time_provider).to receive(:now).and_return(finish + 0.99).once } it { is_expected.to be false } end - context 'when 1s or more has elapsed since last flush' do + context "when 1s or more has elapsed since last flush" do before { expect(time_provider).to receive(:now).and_return(finish + 1).once } it { is_expected.to be true } end end - context 'when exporter has never flushed' do - context 'when less than 1s has elapsed since exporter was created' do + context "when exporter has never flushed" do + context "when less than 1s has elapsed since exporter was created" do before { expect(time_provider).to receive(:now).and_return(created_at + 0.99).once } it { is_expected.to be false } end - context 'when 1s or more has elapsed since exporter was created' do + context "when 1s or more has elapsed since exporter was created" do before { expect(time_provider).to receive(:now).and_return(created_at + 1).once } it { is_expected.to be true } diff --git a/spec/datadog/profiling/ext/dir_monkey_patches_spec.rb b/spec/datadog/profiling/ext/dir_monkey_patches_spec.rb index 4af8c55f73c..7696c1031bd 100644 --- a/spec/datadog/profiling/ext/dir_monkey_patches_spec.rb +++ b/spec/datadog/profiling/ext/dir_monkey_patches_spec.rb @@ -1,7 +1,7 @@ -require 'datadog/profiling/spec_helper' +require "datadog/profiling/spec_helper" -require 'datadog/profiling/collectors/cpu_and_wall_time_worker' -require 'datadog/profiling/ext/dir_monkey_patches' +require "datadog/profiling/collectors/cpu_and_wall_time_worker" +require "datadog/profiling/ext/dir_monkey_patches" # NOTE: Specs in this file are written so as to not leave the DirMonkeyPatches loaded into the Ruby VM after this # test executes. They do this by only applying these monkey patches in a separate process. @@ -9,9 +9,9 @@ before do skip_if_profiling_not_supported(self) - File.open("#{temporary_directory}/file1", 'w') { |f| f.write('file1') } - File.open("#{temporary_directory}/file2", 'w') { |f| f.write('file2') } - File.open("#{temporary_directory}/file3", 'w') { |f| f.write('file3') } + File.write("#{temporary_directory}/file1", "file1") + File.write("#{temporary_directory}/file2", "file2") + File.write("#{temporary_directory}/file3", "file3") expect(Datadog::Profiling::Collectors::CpuAndWallTimeWorker).to_not receive(:_native_hold_signals) expect(Datadog::Profiling::Collectors::CpuAndWallTimeWorker).to_not receive(:_native_resume_signals) @@ -22,51 +22,49 @@ let(:expected_hold_resume_calls_count) { 1 } after do - begin - FileUtils.remove_dir(temporary_directory) - rescue Errno::ENOENT => _e - # Do nothing, it's ok - end + FileUtils.remove_dir(temporary_directory) + rescue Errno::ENOENT => _e + # Do nothing, it's ok end - describe 'DirClassMonkeyPatches' do - describe '.[]' do - it 'matches the ruby behavior without monkey patching' do + describe "DirClassMonkeyPatches" do + describe ".[]" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do - expect(Dir['*1', '*2', base: temporary_directory]).to contain_exactly('file1', 'file2') + expect(Dir["*1", "*2", base: temporary_directory]).to contain_exactly("file1", "file2") end end end - describe '.children' do - it 'matches the ruby behavior without monkey patching' do + describe ".children" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do - result = Dir.children(temporary_directory, encoding: 'US-ASCII').sort + result = Dir.children(temporary_directory, encoding: "US-ASCII").sort expect(result.first.encoding).to be Encoding::US_ASCII - expect(result.first).to eq 'file1' + expect(result.first).to eq "file1" end end end - describe '.each_child' do + describe ".each_child" do let(:expected_hold_resume_calls_count) { 1 + temporary_files_count } - context 'with a block' do - it 'matches the ruby behavior without monkey patching' do + context "with a block" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do files = [] - Dir.each_child(temporary_directory, encoding: 'UTF-8') { |it| files << it } + Dir.each_child(temporary_directory, encoding: "UTF-8") { |it| files << it } - expect(files).to contain_exactly('file1', 'file2', 'file3') + expect(files).to contain_exactly("file1", "file2", "file3") end end - it 'allows signals to arrive inside the user block' do + it "allows signals to arrive inside the user block" do test_with_monkey_patch do ran_assertion = false - Dir.each_child(temporary_directory, encoding: 'UTF-8') do + Dir.each_child(temporary_directory, encoding: "UTF-8") do expect_sigprof_to_be(:unblocked) ran_assertion = true end @@ -76,50 +74,50 @@ end end - context 'without a block' do - it 'matches the ruby behavior without monkey patching' do + context "without a block" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do - expect(Dir.each_child(temporary_directory, encoding: 'UTF-8').to_a).to include('file1', 'file2', 'file3') + expect(Dir.each_child(temporary_directory, encoding: "UTF-8").to_a).to include("file1", "file2", "file3") end end end end - describe '.empty?' do - it 'matches the ruby behavior without monkey patching' do + describe ".empty?" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do expect(Dir.empty?(temporary_directory)).to be false end end end - describe '.entries' do - it 'matches the ruby behavior without monkey patching' do + describe ".entries" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do - expect(Dir.entries(temporary_directory)).to contain_exactly('.', '..', 'file1', 'file2', 'file3') + expect(Dir.entries(temporary_directory)).to contain_exactly(".", "..", "file1", "file2", "file3") end end end - describe '.foreach' do - let(:expected_hold_resume_calls_count) { 1 + temporary_files_count + ['.', '..'].size } + describe ".foreach" do + let(:expected_hold_resume_calls_count) { 1 + temporary_files_count + [".", ".."].size } - context 'with a block' do - it 'matches the ruby behavior without monkey patching' do + context "with a block" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do files = [] - Dir.foreach(temporary_directory, encoding: 'UTF-8') { |it| files << it } + Dir.foreach(temporary_directory, encoding: "UTF-8") { |it| files << it } - expect(files).to contain_exactly('file1', 'file2', 'file3', '.', '..') + expect(files).to contain_exactly("file1", "file2", "file3", ".", "..") end end - it 'allows signals to arrive inside the user block' do + it "allows signals to arrive inside the user block" do test_with_monkey_patch do ran_assertion = false - Dir.foreach(temporary_directory, encoding: 'UTF-8') do + Dir.foreach(temporary_directory, encoding: "UTF-8") do expect_sigprof_to_be(:unblocked) ran_assertion = true end @@ -129,41 +127,41 @@ end end - context 'without a block' do - it 'matches the ruby behavior without monkey patching' do + context "without a block" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do - expect(Dir.foreach(temporary_directory, encoding: 'UTF-8').to_a) - .to include('file1', 'file2', 'file3', '.', '..') + expect(Dir.foreach(temporary_directory, encoding: "UTF-8").to_a) + .to include("file1", "file2", "file3", ".", "..") end end end end - describe '.glob' do + describe ".glob" do before do - File.open("#{temporary_directory}/.hidden_file1", 'w') { |f| f.write('.hidden_file1') } + File.write("#{temporary_directory}/.hidden_file1", ".hidden_file1") end - let(:expected_files_result) { ['.hidden_file1', 'file1', 'file2'] } + let(:expected_files_result) { [".hidden_file1", "file1", "file2"] } - context 'with a block' do + context "with a block" do let(:expected_hold_resume_calls_count) { 1 + expected_files_result.size } - it 'matches the ruby behavior without monkey patching' do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do files = [] - Dir.glob(['*1', '*2'], base: temporary_directory, flags: File::FNM_DOTMATCH) { |it| files << it } + Dir.glob(["*1", "*2"], base: temporary_directory, flags: File::FNM_DOTMATCH) { |it| files << it } expect(files).to contain_exactly(*expected_files_result) end end - it 'allows signals to arrive inside the user block' do + it "allows signals to arrive inside the user block" do test_with_monkey_patch do ran_assertion = false - Dir.glob(['*1', '*2'], base: temporary_directory, flags: File::FNM_DOTMATCH) do + Dir.glob(["*1", "*2"], base: temporary_directory, flags: File::FNM_DOTMATCH) do expect_sigprof_to_be(:unblocked) ran_assertion = true end @@ -173,7 +171,7 @@ end end - context 'without a block' do + context "without a block" do # You may be wondering why this one has a call count of 1 when for instance .foreach and each_child have a call # count of > 1. The difference is the "without a block" versions of those calls **return an enumerator** and # the enumerator then just calls the block version when executed. @@ -182,42 +180,42 @@ # does not get turned into a "with a block" call. let(:expected_hold_resume_calls_count) { 1 } - it 'matches the ruby behavior without monkey patching' do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do - expect(Dir.glob(['*1', '*2'], base: temporary_directory, flags: File::FNM_DOTMATCH)) + expect(Dir.glob(["*1", "*2"], base: temporary_directory, flags: File::FNM_DOTMATCH)) .to contain_exactly(*expected_files_result) end end end end - describe '.home' do - it 'matches the ruby behavior without monkey patching' do + describe ".home" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do - expect(Dir.home).to start_with('/') + expect(Dir.home).to start_with("/") end end end end - describe 'DirInstanceMonkeyPatches' do + describe "DirInstanceMonkeyPatches" do let(:dir) { Dir.new(temporary_directory) } - describe '#each' do - let(:expected_hold_resume_calls_count) { 1 + temporary_files_count + ['.', '..'].size } + describe "#each" do + let(:expected_hold_resume_calls_count) { 1 + temporary_files_count + [".", ".."].size } - context 'with a block' do - it 'matches the ruby behavior without monkey patching' do + context "with a block" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do files = [] dir.each { |it| files << it } - expect(files).to contain_exactly('file1', 'file2', 'file3', '.', '..') + expect(files).to contain_exactly("file1", "file2", "file3", ".", "..") end end - it 'allows signals to arrive inside the user block' do + it "allows signals to arrive inside the user block" do test_with_monkey_patch do ran_assertion = false @@ -231,32 +229,32 @@ end end - context 'without a block' do - it 'matches the ruby behavior without monkey patching' do + context "without a block" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do - expect(dir.each.to_a).to contain_exactly('file1', 'file2', 'file3', '.', '..') + expect(dir.each.to_a).to contain_exactly("file1", "file2", "file3", ".", "..") end end end end - describe '#each_child' do - before { skip('API not available on Ruby 2.5') if RUBY_VERSION.start_with?('2.5.') } + describe "#each_child" do + before { skip("API not available on Ruby 2.5") if RUBY_VERSION.start_with?("2.5.") } let(:expected_hold_resume_calls_count) { 1 + temporary_files_count } - context 'with a block' do - it 'matches the ruby behavior without monkey patching' do + context "with a block" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do files = [] dir.each_child { |it| files << it } - expect(files).to contain_exactly('file1', 'file2', 'file3') + expect(files).to contain_exactly("file1", "file2", "file3") end end - it 'allows signals to arrive inside the user block' do + it "allows signals to arrive inside the user block" do test_with_monkey_patch do ran_assertion = false @@ -270,35 +268,35 @@ end end - context 'without a block' do - it 'matches the ruby behavior without monkey patching' do + context "without a block" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do - expect(dir.each_child.to_a).to include('file1', 'file2', 'file3') + expect(dir.each_child.to_a).to include("file1", "file2", "file3") end end end end - describe '#children' do - before { skip('API not available on Ruby 2.5') if RUBY_VERSION.start_with?('2.5.') } + describe "#children" do + before { skip("API not available on Ruby 2.5") if RUBY_VERSION.start_with?("2.5.") } - it 'matches the ruby behavior without monkey patching' do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do - expect(dir.children).to contain_exactly('file1', 'file2', 'file3') + expect(dir.children).to contain_exactly("file1", "file2", "file3") end end end - describe '#tell' do - it 'matches the ruby behavior without monkey patching' do + describe "#tell" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do expect(dir.tell).to be_a_kind_of(Integer) end end end - describe '#pos' do - it 'matches the ruby behavior without monkey patching' do + describe "#pos" do + it "matches the ruby behavior without monkey patching" do test_with_and_without_monkey_patch do expect(dir.pos).to be_a_kind_of(Integer) end diff --git a/spec/datadog/profiling/ext/forking_spec.rb b/spec/datadog/profiling/ext/forking_spec.rb deleted file mode 100644 index 85d024d85e3..00000000000 --- a/spec/datadog/profiling/ext/forking_spec.rb +++ /dev/null @@ -1,272 +0,0 @@ -require 'datadog/profiling/spec_helper' - -require 'datadog/profiling/ext/forking' - -RSpec.describe Datadog::Profiling::Ext::Forking do - before { skip_if_profiling_not_supported(self) } - - describe '::apply!' do - subject(:apply!) { described_class.apply! } - - let(:toplevel_receiver) { TOPLEVEL_BINDING.receiver } - - context 'when forking is supported' do - around do |example| - # NOTE: Do not move this to a before, since we also want to skip the around as well - skip 'Forking not supported' unless described_class.supported? - - if ::Process.singleton_class.ancestors.include?(Datadog::Profiling::Ext::Forking::Kernel) - skip 'Unclean Process class state.' - end - - unmodified_process_class = ::Process.dup - unmodified_kernel_class = ::Kernel.dup - - example.run - - # Clean up classes - Object.send(:remove_const, :Process) - Object.const_set('Process', unmodified_process_class) - - Object.send(:remove_const, :Kernel) - Object.const_set('Kernel', unmodified_kernel_class) - - # Check for leaks (make sure test is properly cleaned up) - expect(::Process <= described_class::Kernel).to be nil - expect(::Process <= described_class::ProcessDaemonPatch).to be nil - expect(::Kernel <= described_class::Kernel).to be nil - # Can't assert this because top level can't be reverted; can't guarantee pristine state. - # expect(toplevel_receiver.class.ancestors.include?(described_class::Kernel)).to be false - - expect(::Process.method(:fork).source_location).to be nil - expect(::Kernel.method(:fork).source_location).to be nil - expect(::Process.method(:daemon).source_location).to be nil - # Can't assert this because top level can't be reverted; can't guarantee pristine state. - # expect(toplevel_receiver.method(:fork).source_location).to be nil - end - - it 'applies the Kernel patch' do - # NOTE: There's no way to undo a modification of the TOPLEVEL_BINDING. - # The results of this will carry over into other tests... - # Just assert that the receiver was patched instead. - # Unfortunately means we can't test if "fork" works in main Object. - - apply! - - expect(::Process.ancestors).to include(described_class::Kernel) - expect(::Process.ancestors).to include(described_class::ProcessDaemonPatch) - expect(::Kernel.ancestors).to include(described_class::Kernel) - expect(toplevel_receiver.class.ancestors).to include(described_class::Kernel) - - expect(::Process.method(:fork).source_location.first).to match(%r{.*datadog/profiling/ext/forking.rb}) - expect(::Process.method(:daemon).source_location.first).to match(%r{.*datadog/profiling/ext/forking.rb}) - expect(::Kernel.method(:fork).source_location.first).to match(%r{.*datadog/profiling/ext/forking.rb}) - expect(toplevel_receiver.method(:fork).source_location.first).to match(%r{.*datadog/profiling/ext/forking.rb}) - end - end - - context 'when forking is not supported' do - before do - allow(described_class) - .to receive(:supported?) - .and_return(false) - end - - it 'skips the Kernel patch' do - is_expected.to be false - end - end - end - - describe Datadog::Profiling::Ext::Forking::Kernel do - before { skip 'Forking not supported' unless Datadog::Profiling::Ext::Forking.supported? } - - shared_context 'fork class' do - def new_fork_class - Class.new.tap do |c| - c.singleton_class.class_eval do - prepend Datadog::Profiling::Ext::Forking::Kernel - - def fork(&block) - Kernel.fork(&block) - end - end - end - end - - subject(:fork_class) { new_fork_class } - - let(:fork_result) { :fork_result } - - before do - # Stub out actual forking, return mock result. - # This also makes callback order deterministic. - allow(Kernel).to receive(:fork) do |*_args, &b| - b.call unless b.nil? - fork_result - end - end - end - - shared_context 'at_fork callbacks' do - let(:child) { double('child') } - - before do - fork_class.at_fork(:child) { child.call } - end - - after do - described_class.datadog_at_fork_blocks.clear - end - end - - context 'when applied to a class with forking' do - include_context 'fork class' - - it do - is_expected.to respond_to(:fork) - is_expected.to respond_to(:at_fork) - end - - describe '#fork' do - context 'when a block is not provided' do - include_context 'at_fork callbacks' - - subject(:fork) { fork_class.fork } - - context 'and returns from the parent context' do - # By setting the fork result = integer, we're - # simulating #fork running in the parent process. - let(:fork_result) { rand(100) } - - it do - expect(child).to_not receive(:call) - - is_expected.to be fork_result - end - end - - context 'and returns from the child context' do - # By setting the fork result = nil, we're - # simulating #fork running in the child process. - let(:fork_result) { nil } - - it do - expect(child).to receive(:call) - - is_expected.to be nil - end - end - end - - context 'when a block is provided' do - subject(:fork) { fork_class.fork(&block) } - - let(:block) { proc {} } - - context 'when no callbacks are configured' do - it 'passes through to original #fork' do - expect { |b| fork_class.fork(&b) }.to yield_control - is_expected.to be fork_result - end - end - - context 'when callbacks are configured' do - include_context 'at_fork callbacks' - - it 'invokes all the callbacks in order' do - expect(child).to receive(:call) - - is_expected.to be fork_result - end - end - end - end - - describe '#at_fork' do - include_context 'at_fork callbacks' - - let(:callback) { double('callback') } - let(:block) { proc { callback.call } } - - context 'given a stage' do - subject(:at_fork) do - fork_class.at_fork(stage, &block) - end - - context ':child' do - let(:stage) { :child } - - it 'adds a child callback' do - at_fork - - expect(child).to receive(:call).ordered - expect(callback).to receive(:call).ordered - - fork_class.fork {} - end - end - end - end - end - - context 'when applied to multiple classes with forking' do - include_context 'fork class' - - let(:other_fork_class) { new_fork_class } - - context 'and #at_fork is called in one' do - include_context 'at_fork callbacks' - - it 'applies the callback to the original class' do - expect(child).to receive(:call) - - fork_class.fork {} - end - - it 'applies the callback to the other class' do - expect(child).to receive(:call) - - other_fork_class.fork {} - end - end - end - end - - describe Datadog::Profiling::Ext::Forking::ProcessDaemonPatch do - let(:process_module) { Module.new { def self.daemon(nochdir = nil, noclose = nil); end } } - let(:child_callback) { double('child', call: true) } - - before do - allow(process_module).to receive(:daemon) - - process_module.singleton_class.prepend(Datadog::Profiling::Ext::Forking::Kernel) - process_module.singleton_class.prepend(described_class) - - process_module.at_fork(:child) { child_callback.call } - end - - after do - Datadog::Profiling::Ext::Forking::Kernel.datadog_at_fork_blocks.clear - end - - it 'calls the child at_fork callbacks after calling Process.daemon' do - expect(process_module).to receive(:daemon).ordered - expect(child_callback).to receive(:call).ordered - - process_module.daemon - end - - it 'passes any arguments to Process.daemon' do - expect(process_module).to receive(:daemon).with(true, true) - - process_module.daemon(true, true) - end - - it 'returns the result of calling Process.daemon' do - expect(process_module).to receive(:daemon).and_return(:process_daemon_result) - - expect(process_module.daemon).to be :process_daemon_result - end - end -end diff --git a/spec/datadog/profiling/flush_spec.rb b/spec/datadog/profiling/flush_spec.rb index 7b82013cad0..419a796fd91 100644 --- a/spec/datadog/profiling/flush_spec.rb +++ b/spec/datadog/profiling/flush_spec.rb @@ -1,23 +1,23 @@ -require 'datadog/profiling/flush' +require "datadog/profiling/flush" RSpec.describe Datadog::Profiling::Flush do - describe '.new' do - let(:start) { instance_double(Time, 'start time') } - let(:finish) { instance_double(Time, 'finish time') } - let(:pprof_file_name) { 'the_pprof_file_name.pprof' } - let(:pprof_data) { 'the_pprof_data' } - let(:code_provenance_file_name) { 'the_code_provenance_file_name.json' } - let(:code_provenance_data) { 'the_code_provenance_data' } + describe ".new" do + let(:start) { instance_double(Time, "start time") } + let(:finish) { instance_double(Time, "finish time") } + let(:pprof_file_name) { "the_pprof_file_name.pprof" } + let(:pprof_data) { "the_pprof_data" } + let(:code_provenance_file_name) { "the_code_provenance_file_name.json" } + let(:code_provenance_data) { "the_code_provenance_data" } let(:tags_as_array) { [%w[tag_a value_a], %w[tag_b value_b]] } - let(:internal_metadata) { { no_signals_workaround_enabled: false } } + let(:internal_metadata) { {no_signals_workaround_enabled: false} } let(:info_json) do JSON.fast_generate( { application: { - start_time: '2024-01-24T11:17:22Z' + start_time: "2024-01-24T11:17:22Z" }, runtime: { - engine: 'ruby' + engine: "ruby" }, } ) diff --git a/spec/datadog/profiling/http_transport_spec.rb b/spec/datadog/profiling/http_transport_spec.rb index bc900a3dec1..d6189d58bac 100644 --- a/spec/datadog/profiling/http_transport_spec.rb +++ b/spec/datadog/profiling/http_transport_spec.rb @@ -1,11 +1,11 @@ -require 'datadog/profiling/spec_helper' +require "datadog/profiling/spec_helper" -require 'datadog/profiling/http_transport' -require 'datadog/profiling' +require "datadog/profiling/http_transport" +require "datadog/profiling" -require 'json' -require 'socket' -require 'webrick' +require "json" +require "socket" +require "webrick" # Design note for this class's specs: from the Ruby code side, we're treating the `_native_` methods as an API # between the Ruby code and the native methods, and thus in this class we have a bunch of tests to make sure the @@ -38,8 +38,8 @@ let(:adapter) { Datadog::Core::Configuration::Ext::Agent::HTTP::ADAPTER } let(:uds_path) { nil } let(:ssl) { false } - let(:hostname) { '192.168.0.1' } - let(:port) { '12345' } + let(:hostname) { "192.168.0.1" } + let(:port) { "12345" } let(:site) { nil } let(:api_key) { nil } let(:upload_timeout_seconds) { 10 } @@ -53,27 +53,27 @@ code_provenance_file_name: code_provenance_file_name, code_provenance_data: code_provenance_data, tags_as_array: tags_as_array, - internal_metadata: { no_signals_workaround_enabled: true }, + internal_metadata: {no_signals_workaround_enabled: true}, info_json: info_json, ) end - let(:start_timestamp) { '2022-02-07T15:59:53.987654321Z' } - let(:end_timestamp) { '2023-11-11T16:00:00.123456789Z' } - let(:start) { Time.iso8601(start_timestamp) } + let(:start_timestamp) { "2022-02-07T15:59:53.987654321Z" } + let(:end_timestamp) { "2023-11-11T16:00:00.123456789Z" } + let(:start) { Time.iso8601(start_timestamp) } let(:finish) { Time.iso8601(end_timestamp) } - let(:pprof_file_name) { 'the_pprof_file_name.pprof' } - let(:pprof_data) { 'the_pprof_data' } - let(:code_provenance_file_name) { 'the_code_provenance_file_name.json' } - let(:code_provenance_data) { 'the_code_provenance_data' } + let(:pprof_file_name) { "the_pprof_file_name.pprof" } + let(:pprof_data) { "the_pprof_data" } + let(:code_provenance_file_name) { "the_code_provenance_file_name.json" } + let(:code_provenance_data) { "the_code_provenance_data" } let(:tags_as_array) { [%w[tag_a value_a], %w[tag_b value_b]] } let(:info_json) do JSON.fast_generate( { application: { - start_time: '2024-01-24T11:17:22Z' + start_time: "2024-01-24T11:17:22Z" }, runtime: { - engine: 'ruby' + engine: "ruby" }, } ) @@ -81,47 +81,47 @@ # Like above but with string keys (JSON parsing unsymbolizes keys by default) let(:info_string_keys) do { - 'application' => { - 'start_time' => '2024-01-24T11:17:22Z' + "application" => { + "start_time" => "2024-01-24T11:17:22Z" }, - 'runtime' => { - 'engine' => 'ruby' + "runtime" => { + "engine" => "ruby" }, } end - describe '#initialize' do - context 'when agent_settings are provided' do - it 'picks the :agent working mode for the exporter' do + describe "#initialize" do + context "when agent_settings are provided" do + it "picks the :agent working mode for the exporter" do expect(described_class) .to receive(:_native_validate_exporter) - .with([:agent, 'http://192.168.0.1:12345/']) + .with([:agent, "http://192.168.0.1:12345/"]) .and_return([:ok, nil]) http_transport end - context 'when ssl is enabled' do + context "when ssl is enabled" do let(:ssl) { true } - it 'picks the :agent working mode with https reporting' do + it "picks the :agent working mode with https reporting" do expect(described_class) .to receive(:_native_validate_exporter) - .with([:agent, 'https://192.168.0.1:12345/']) + .with([:agent, "https://192.168.0.1:12345/"]) .and_return([:ok, nil]) http_transport end end - context 'when agent_settings requests a unix domain socket' do + context "when agent_settings requests a unix domain socket" do let(:adapter) { Datadog::Core::Transport::Ext::UnixSocket::ADAPTER } - let(:uds_path) { '/var/run/datadog/apm.socket' } + let(:uds_path) { "/var/run/datadog/apm.socket" } - it 'picks the :agent working mode with unix domain stocket reporting' do + it "picks the :agent working mode with unix domain stocket reporting" do expect(described_class) .to receive(:_native_validate_exporter) - .with([:agent, 'unix:///var/run/datadog/apm.socket']) + .with([:agent, "unix:///var/run/datadog/apm.socket"]) .and_return([:ok, nil]) http_transport @@ -129,27 +129,27 @@ end end - context 'when additionally site and api_key are provided' do - let(:site) { 'test.datadoghq.com' } + context "when additionally site and api_key are provided" do + let(:site) { "test.datadoghq.com" } let(:api_key) { SecureRandom.uuid } - it 'ignores them and picks the :agent working mode using the agent_settings' do + it "ignores them and picks the :agent working mode using the agent_settings" do expect(described_class) .to receive(:_native_validate_exporter) - .with([:agent, 'http://192.168.0.1:12345/']) + .with([:agent, "http://192.168.0.1:12345/"]) .and_return([:ok, nil]) http_transport end - context 'when agentless mode is allowed' do + context "when agentless mode is allowed" do around do |example| - ClimateControl.modify('DD_PROFILING_AGENTLESS' => 'true') do + ClimateControl.modify("DD_PROFILING_AGENTLESS" => "true") do example.run end end - it 'picks the :agentless working mode with the given site and api key' do + it "picks the :agentless working mode with the given site and api key" do expect(described_class) .to receive(:_native_validate_exporter) .with([:agentless, site, api_key]) @@ -160,8 +160,8 @@ end end - context 'when an invalid configuration is provided' do - let(:hostname) { 'this:is:not:a:valid:hostname!!!!' } + context "when an invalid configuration is provided" do + let(:hostname) { "this:is:not:a:valid:hostname!!!!" } it do expect { http_transport }.to raise_error(ArgumentError, /Failed to initialize transport/) @@ -169,10 +169,10 @@ end end - describe '#export' do + describe "#export" do subject(:export) { http_transport.export(flush) } - it 'calls the native export method with the data from the flush' do + it "calls the native export method with the data from the flush" do # Manually converted from the lets above :) upload_timeout_milliseconds = 10_000 start_timespec_seconds = 1644249593 @@ -203,13 +203,13 @@ export end - context 'when successful' do + context "when successful" do before do expect(described_class).to receive(:_native_do_export).and_return([:ok, 200]) end - it 'logs a debug message' do - expect(Datadog.logger).to receive(:debug).with('Successfully reported profiling data') + it "logs a debug message" do + expect(Datadog.logger).to receive(:debug).with("Successfully reported profiling data") export end @@ -217,17 +217,25 @@ it { is_expected.to be true } end - context 'when failed' do - context 'with a http status code' do + context "when failed" do + context "with a http status code" do before do expect(described_class).to receive(:_native_do_export).and_return([:ok, 500]) allow(Datadog.logger).to receive(:error) end - it 'logs an error message' do + it "logs an error message" do expect(Datadog.logger).to receive(:error).with( - 'Failed to report profiling data ({:agent=>"http://192.168.0.1:12345/"}): ' \ - 'server returned unexpected HTTP 500 status code' + "Failed to report profiling data (agent: http://192.168.0.1:12345/): " \ + "server returned unexpected HTTP 500 status code" + ) + + export + end + + it "sends a telemetry log" do + expect(Datadog::Core::Telemetry::Logger).to receive(:error).with( + "Failed to report profiling data: unexpected HTTP 500 status code" ) export @@ -236,57 +244,40 @@ it { is_expected.to be false } end - context 'with a failure without an http status code' do + context "with a failure without an http status code" do before do - expect(described_class).to receive(:_native_do_export).and_return([:error, 'Some error message']) + expect(described_class).to receive(:_native_do_export).and_return([:error, "Some error message"]) allow(Datadog.logger).to receive(:error) end - it 'logs an error message' do + it "logs an error message" do expect(Datadog.logger).to receive(:error) - .with('Failed to report profiling data ({:agent=>"http://192.168.0.1:12345/"}): Some error message') + .with("Failed to report profiling data (agent: http://192.168.0.1:12345/): Some error message") export end - it { is_expected.to be false } - end - end - end - - describe '#config_without_api_key' do - subject(:config_without_api_key) { http_transport.send(:config_without_api_key) } - - context 'when using agentless mode' do - let(:site) { 'test.datadoghq.com' } - let(:api_key) { SecureRandom.uuid } + it "sends a telemetry log" do + expect(Datadog::Core::Telemetry::Logger).to receive(:error).with( + "Failed to report profiling data" + ) - around do |example| - ClimateControl.modify('DD_PROFILING_AGENTLESS' => 'true') do - example.run + export end - end - it 'returns the mode and site, but not the api key' do - is_expected.to eq(agentless: 'test.datadoghq.com') - end - end - - context 'when using agent mode' do - it 'returns the mode the agent url' do - is_expected.to eq(agent: 'http://192.168.0.1:12345/') + it { is_expected.to be false } end end end - describe '#exporter_configuration' do - it 'returns the current exporter configuration' do - expect(http_transport.exporter_configuration).to eq [:agent, 'http://192.168.0.1:12345/'] + describe "#exporter_configuration" do + it "returns the current exporter configuration" do + expect(http_transport.exporter_configuration).to eq [:agent, "http://192.168.0.1:12345/"] end end - context 'integration testing' do - shared_context 'HTTP server' do + context "integration testing" do + shared_context "HTTP server" do let(:server) do WEBrick::HTTPServer.new( Port: 0, @@ -295,14 +286,14 @@ StartCallback: -> { init_signal.push(1) } ) end - let(:hostname) { '127.0.0.1' } + let(:hostname) { "127.0.0.1" } let(:log) { WEBrick::Log.new($stderr, WEBrick::Log::WARN) } let(:access_log_buffer) { StringIO.new } let(:access_log) { [[access_log_buffer, WEBrick::AccessLog::COMBINED_LOG_FORMAT]] } let(:server_proc) do proc do |req, res| messages << req.tap { req.body } # Read body, store message before socket closes. - res.body = '{}' + res.body = "{}" end end let(:init_signal) { Queue.new } @@ -310,7 +301,7 @@ let(:messages) { [] } before do - server.mount_proc('/', &server_proc) + server.mount_proc("/", &server_proc) @server_thread = Thread.new { server.start } init_signal.pop end @@ -326,49 +317,49 @@ end end - include_context 'HTTP server' + include_context "HTTP server" let(:request) { messages.first } - let(:hostname) { '127.0.0.1' } + let(:hostname) { "127.0.0.1" } let(:port) { server[:Port] } - shared_examples 'correctly reports profiling data' do - it 'correctly reports profiling data' do + shared_examples "correctly reports profiling data" do + it "correctly reports profiling data" do success = http_transport.export(flush) expect(success).to be true expect(request.header).to include( - 'content-type' => [%r{^multipart/form-data; boundary=(.+)}], - 'dd-evp-origin' => ['dd-trace-rb'], - 'dd-evp-origin-version' => [Datadog::VERSION::STRING], + "content-type" => [%r{^multipart/form-data; boundary=(.+)}], + "dd-evp-origin" => ["dd-trace-rb"], + "dd-evp-origin-version" => [Datadog::VERSION::STRING], ) # check body - boundary = request['content-type'][%r{^multipart/form-data; boundary=(.+)}, 1] + boundary = request["content-type"][%r{^multipart/form-data; boundary=(.+)}, 1] body = WEBrick::HTTPUtils.parse_form_data(StringIO.new(request.body), boundary) - event_data = JSON.parse(body.fetch('event')) + event_data = JSON.parse(body.fetch("event")) expect(event_data).to match( - 'attachments' => contain_exactly(pprof_file_name, code_provenance_file_name), - 'tags_profiler' => 'tag_a:value_a,tag_b:value_b', - 'start' => start_timestamp, - 'end' => end_timestamp, - 'family' => 'ruby', - 'version' => '4', - 'endpoint_counts' => nil, - 'internal' => { 'no_signals_workaround_enabled' => true }, - 'info' => info_string_keys, + "attachments" => contain_exactly(pprof_file_name, code_provenance_file_name), + "tags_profiler" => "tag_a:value_a,tag_b:value_b", + "start" => start_timestamp, + "end" => end_timestamp, + "family" => "ruby", + "version" => "4", + "endpoint_counts" => nil, + "internal" => {"no_signals_workaround_enabled" => true}, + "info" => info_string_keys, ) end - it 'reports the payload as lz4-compressed files, that get automatically compressed by libdatadog' do + it "reports the payload as lz4-compressed files, that get automatically compressed by libdatadog" do success = http_transport.export(flush) expect(success).to be true - boundary = request['content-type'][%r{^multipart/form-data; boundary=(.+)}, 1] + boundary = request["content-type"][%r{^multipart/form-data; boundary=(.+)}, 1] body = WEBrick::HTTPUtils.parse_form_data(StringIO.new(request.body), boundary) # The pprof data is compressed in the datadog serializer, nothing to do @@ -378,44 +369,44 @@ end end - include_examples 'correctly reports profiling data' + include_examples "correctly reports profiling data" - it 'exports data via http to the agent url' do + it "exports data via http to the agent url" do http_transport.export(flush) expect(request.request_uri.to_s).to eq "http://127.0.0.1:#{port}/profiling/v1/input" end - context 'when code provenance data is not available' do + context "when code provenance data is not available" do let(:code_provenance_data) { nil } - it 'correctly reports profiling data but does not include code provenance' do + it "correctly reports profiling data but does not include code provenance" do success = http_transport.export(flush) expect(success).to be true # check body - boundary = request['content-type'][%r{^multipart/form-data; boundary=(.+)}, 1] + boundary = request["content-type"][%r{^multipart/form-data; boundary=(.+)}, 1] body = WEBrick::HTTPUtils.parse_form_data(StringIO.new(request.body), boundary) - event_data = JSON.parse(body.fetch('event')) + event_data = JSON.parse(body.fetch("event")) expect(event_data).to eq( - 'attachments' => [pprof_file_name], - 'tags_profiler' => 'tag_a:value_a,tag_b:value_b', - 'start' => start_timestamp, - 'end' => end_timestamp, - 'family' => 'ruby', - 'version' => '4', - 'endpoint_counts' => nil, - 'internal' => { 'no_signals_workaround_enabled' => true }, - 'info' => info_string_keys, + "attachments" => [pprof_file_name], + "tags_profiler" => "tag_a:value_a,tag_b:value_b", + "start" => start_timestamp, + "end" => end_timestamp, + "family" => "ruby", + "version" => "4", + "endpoint_counts" => nil, + "internal" => {"no_signals_workaround_enabled" => true}, + "info" => info_string_keys, ) expect(body[code_provenance_file_name]).to be nil end end - context 'via unix domain socket' do + context "via unix domain socket" do let(:temporary_directory) { Dir.mktmpdir } let(:socket_path) { "#{temporary_directory}/rspec_unix_domain_socket" } let(:unix_domain_socket) { UNIXServer.new(socket_path) } # Closing the socket is handled by webrick @@ -433,87 +424,85 @@ let(:uds_path) { socket_path } after do - begin - FileUtils.remove_entry(temporary_directory) - rescue Errno::ENOENT => _e - # Do nothing, it's ok - end + FileUtils.remove_entry(temporary_directory) + rescue Errno::ENOENT => _e + # Do nothing, it's ok end - include_examples 'correctly reports profiling data' + include_examples "correctly reports profiling data" end - context 'when agent is down' do + context "when agent is down" do before do server.shutdown @server_thread.join end - it 'logs an error' do + it "logs an error" do expect(Datadog.logger).to receive(:error).with(/error trying to connect/) http_transport.export(flush) end end - context 'when request times out' do + context "when request times out" do let(:upload_timeout_seconds) { 0.001 } let(:server_proc) { proc { sleep 0.05 } } - it 'logs an error' do + it "logs an error" do expect(Datadog.logger).to receive(:error).with(/timed out/) http_transport.export(flush) end end - context 'when server returns a 4xx failure' do + context "when server returns a 4xx failure" do let(:server_proc) { proc { |_req, res| res.status = 418 } } - it 'logs an error' do + it "logs an error" do expect(Datadog.logger).to receive(:error).with(/unexpected HTTP 418/) http_transport.export(flush) end end - context 'when server returns a 5xx failure' do + context "when server returns a 5xx failure" do let(:server_proc) { proc { |_req, res| res.status = 503 } } - it 'logs an error' do + it "logs an error" do expect(Datadog.logger).to receive(:error).with(/unexpected HTTP 503/) http_transport.export(flush) end end - context 'when tags contains invalid tags' do + context "when tags contains invalid tags" do let(:tags_as_array) { [%w[:invalid invalid:], %w[valid1 valid1], %w[valid2 valid2]] } before do allow(Datadog.logger).to receive(:warn) end - it 'reports using the valid tags and ignores the invalid tags' do + it "reports using the valid tags and ignores the invalid tags" do success = http_transport.export(flush) expect(success).to be true - boundary = request['content-type'][%r{^multipart/form-data; boundary=(.+)}, 1] + boundary = request["content-type"][%r{^multipart/form-data; boundary=(.+)}, 1] body = WEBrick::HTTPUtils.parse_form_data(StringIO.new(request.body), boundary) - event_data = JSON.parse(body.fetch('event')) + event_data = JSON.parse(body.fetch("event")) - expect(event_data['tags_profiler']).to eq 'valid1:valid1,valid2:valid2' + expect(event_data["tags_profiler"]).to eq "valid1:valid1,valid2:valid2" end - it 'logs a warning' do - expect(Datadog.logger).to receive(:warn).with(/Failed to add tag to profiling request/) + it "logs a warning" do + expect(Datadog.logger).to receive(:warn).with(/Failed to convert tag/) http_transport.export(flush) end end - describe 'cancellation behavior' do + describe "cancellation behavior" do let!(:request_received_queue) { Queue.new } let!(:request_finish_queue) { Queue.new } @@ -534,11 +523,11 @@ # nothing we could do on the Ruby VM side will interrupt it. # If it is correctly implemented, then the `exporter_thread.kill` will cause # `ddog_ProfileExporter_send` to return immediately and this test will quickly finish. - it 'can be interrupted' do + it "can be interrupted" do exporter_thread = Thread.new { http_transport.export(flush) } request_received_queue.pop - expect(exporter_thread.status).to eq 'sleep' + expect(exporter_thread.status).to eq "sleep" exporter_thread.kill exporter_thread.join diff --git a/spec/datadog/profiling/load_native_extension_spec.rb b/spec/datadog/profiling/load_native_extension_spec.rb index 7c131021e05..51873b1241d 100644 --- a/spec/datadog/profiling/load_native_extension_spec.rb +++ b/spec/datadog/profiling/load_native_extension_spec.rb @@ -1,32 +1,32 @@ -require 'spec_helper' -require 'datadog/profiling/spec_helper' +require "spec_helper" +require "datadog/profiling/spec_helper" -RSpec.describe 'Datadog::Profiling load_native_extension' do +RSpec.describe "Datadog::Profiling load_native_extension" do before { skip_if_profiling_not_supported(self) } subject(:load_native_extension) do load "#{__dir__}/../../../lib/datadog/profiling/load_native_extension.rb" end - context 'when native extension can be found inside lib' do - it 'loads the native extension from lib/' do + context "when native extension can be found inside lib" do + it "loads the native extension from lib/" do expect(Datadog::Profiling::Loader).to receive(:_native_load) do |full_file_path| absolute_path = File.absolute_path(full_file_path) - expect(absolute_path).to include('lib/datadog_profiling_native_extension') + expect(absolute_path).to include("lib/datadog_profiling_native_extension") end load_native_extension end end - context 'when native extension cannot be found inside lib' do - let(:extension_dir) { Gem.loaded_specs['datadog'].extension_dir } + context "when native extension cannot be found inside lib" do + let(:extension_dir) { Gem.loaded_specs["datadog"].extension_dir } before do expect(File).to receive(:exist?) do |full_file_path| absolute_path = File.absolute_path(full_file_path) - if absolute_path.include?('lib/datadog_profiling_native_extension') + if absolute_path.include?("lib/datadog_profiling_native_extension") false elsif absolute_path.include?(extension_dir) true @@ -36,7 +36,7 @@ end.twice end - it 'loads the native extension from the extension dir' do + it "loads the native extension from the extension dir" do expect(Datadog::Profiling::Loader).to receive(:_native_load) do |full_file_path| absolute_path = File.absolute_path(full_file_path) expect(absolute_path).to include(extension_dir) @@ -46,24 +46,24 @@ end end - context 'when native extension cannot be found on either directory' do + context "when native extension cannot be found on either directory" do before do expect(File).to receive(:exist?).twice.and_return(false) end - it 'tries to load the native extension from lib/' do + it "tries to load the native extension from lib/" do expect(Datadog::Profiling::Loader).to receive(:_native_load) do |full_file_path| absolute_path = File.absolute_path(full_file_path) - expect(absolute_path).to include('lib/datadog_profiling_native_extension') + expect(absolute_path).to include("lib/datadog_profiling_native_extension") end load_native_extension end end - context 'when the loader reports an error' do - it 'raises an exception' do - expect(Datadog::Profiling::Loader).to receive(:_native_load).and_return([:error, 'some error']) + context "when the loader reports an error" do + it "raises an exception" do + expect(Datadog::Profiling::Loader).to receive(:_native_load).and_return([:error, "some error"]) expect do load_native_extension diff --git a/spec/datadog/profiling/native_extension_helpers_spec.rb b/spec/datadog/profiling/native_extension_helpers_spec.rb index c80cfc6f83b..0cd8a76edf6 100644 --- a/spec/datadog/profiling/native_extension_helpers_spec.rb +++ b/spec/datadog/profiling/native_extension_helpers_spec.rb @@ -1,56 +1,65 @@ -require 'ext/datadog_profiling_native_extension/native_extension_helpers' -require 'libdatadog' -require 'datadog/profiling/spec_helper' +require "ext/datadog_profiling_native_extension/native_extension_helpers" +require "ext/libdatadog_extconf_helpers" +require "libdatadog" +require "datadog/profiling/spec_helper" -RSpec.describe Datadog::Profiling::NativeExtensionHelpers do - describe '.libdatadog_folder_relative_to_native_lib_folder' do - context 'when libdatadog is available' do +# TODO: This should be extracted out once the test suite setup is updated to build libdatadog_api separate from profiling +RSpec.describe Datadog::LibdatadogExtconfHelpers do + describe ".libdatadog_folder_relative_to_native_lib_folder" do + let(:extension_folder) { "#{__dir__}/../../../ext/datadog_profiling_native_extension/." } + + context "when libdatadog is available" do before do skip_if_profiling_not_supported(self) - if PlatformHelpers.mac? && Libdatadog.pkgconfig_folder.nil? && ENV['LIBDATADOG_VENDOR_OVERRIDE'].nil? - raise 'You have a libdatadog setup without macOS support. Did you forget to set LIBDATADOG_VENDOR_OVERRIDE?' + if PlatformHelpers.mac? && Libdatadog.pkgconfig_folder.nil? && ENV["LIBDATADOG_VENDOR_OVERRIDE"].nil? + raise "You have a libdatadog setup without macOS support. Did you forget to set LIBDATADOG_VENDOR_OVERRIDE?" end end - it 'returns a relative path to libdatadog folder from the gem lib folder' do - relative_path = described_class.libdatadog_folder_relative_to_native_lib_folder + it "returns a relative path to libdatadog folder from the gem lib folder" do + relative_path = described_class.libdatadog_folder_relative_to_native_lib_folder(current_folder: extension_folder) - libdatadog_extension = RbConfig::CONFIG['SOEXT'] || raise('Missing SOEXT for current platform') + libdatadog_extension = RbConfig::CONFIG["SOEXT"] || raise("Missing SOEXT for current platform") - gem_lib_folder = "#{Gem.loaded_specs['datadog'].gem_dir}/lib" + gem_lib_folder = "#{Gem.loaded_specs["datadog"].gem_dir}/lib" full_libdatadog_path = "#{gem_lib_folder}/#{relative_path}/libdatadog_profiling.#{libdatadog_extension}" - expect(relative_path).to start_with('../') + expect(relative_path).to start_with("../") expect(File.exist?(full_libdatadog_path)) .to be(true), "Libdatadog not available in expected path: #{full_libdatadog_path.inspect}" end end - context 'when libdatadog is unsupported' do + context "when libdatadog is unsupported" do it do - expect(described_class.libdatadog_folder_relative_to_native_lib_folder(libdatadog_pkgconfig_folder: nil)).to be nil + expect( + described_class.libdatadog_folder_relative_to_native_lib_folder( + current_folder: extension_folder, + libdatadog_pkgconfig_folder: nil + ) + ).to be nil end end end - describe '.libdatadog_folder_relative_to_ruby_extensions_folders' do - context 'when libdatadog is available' do + describe ".libdatadog_folder_relative_to_ruby_extensions_folders" do + context "when libdatadog is available" do before do skip_if_profiling_not_supported(self) - if PlatformHelpers.mac? && Libdatadog.pkgconfig_folder.nil? && ENV['LIBDATADOG_VENDOR_OVERRIDE'].nil? - raise 'You have a libdatadog setup without macOS support. Did you forget to set LIBDATADOG_VENDOR_OVERRIDE?' + if PlatformHelpers.mac? && Libdatadog.pkgconfig_folder.nil? && ENV["LIBDATADOG_VENDOR_OVERRIDE"].nil? + raise "You have a libdatadog setup without macOS support. Did you forget to set LIBDATADOG_VENDOR_OVERRIDE?" end end - it 'returns a relative path to libdatadog folder from the ruby extensions folders' do + it "returns a relative path to libdatadog folder from the ruby extensions folders" do extensions_relative, bundler_extensions_relative = described_class.libdatadog_folder_relative_to_ruby_extensions_folders - libdatadog_extension = RbConfig::CONFIG['SOEXT'] || raise('Missing SOEXT for current platform') + libdatadog_extension = RbConfig::CONFIG["SOEXT"] || raise("Missing SOEXT for current platform") libdatadog = "libdatadog_profiling.#{libdatadog_extension}" - expect(extensions_relative).to start_with('../') - expect(bundler_extensions_relative).to start_with('../') + expect(extensions_relative).to start_with("../") + expect(bundler_extensions_relative).to start_with("../") extensions_full = "#{Gem.dir}/extensions/platform/extension_api_version/datadog_version/#{extensions_relative}/#{libdatadog}" @@ -65,7 +74,7 @@ end end - context 'when libdatadog is unsupported' do + context "when libdatadog is unsupported" do it do expect( described_class.libdatadog_folder_relative_to_ruby_extensions_folders(libdatadog_pkgconfig_folder: nil) @@ -74,223 +83,223 @@ end end - describe '::LIBDATADOG_VERSION' do - it 'must match the version restriction set on the gemspec' do + describe "::LIBDATADOG_VERSION" do + it "must match the version restriction set on the gemspec" do # This test is expected to break when the libdatadog version on the .gemspec is updated but we forget to update - # the version on the `native_extension_helpers.rb` file. Kindly keep them in sync! :) + # the version on the `libdatadog_extconf_helpers.rb` file. Kindly keep them in sync! :) expect(described_class::LIBDATADOG_VERSION).to eq( - Gem.loaded_specs['datadog'].dependencies.find { |dependency| dependency.name == 'libdatadog' }.requirement.to_s + Gem.loaded_specs["datadog"].dependencies.find { |dependency| dependency.name == "libdatadog" }.requirement.to_s ) end end + + describe ".pkg_config_missing?" do + subject(:pkg_config_missing) { described_class.pkg_config_missing?(command: command) } + + before do + skip_if_profiling_not_supported(self) + end + + context "when command is not available" do + let(:command) { nil } + + it { is_expected.to be true } + end + + # This spec is semi-realistic, because it actually calls into the pkg-config external process. + # + # We know pkg-config must be available on the machine running the tests because otherwise profiling would not be + # supported (and thus `skip_if_profiling_not_supported` would've been triggered). + # + # We could also mock the entire interaction, but this seemed like a simple enough way to go. + context "when command is available" do + before do + # This helper is designed to be called from extconf.rb, which requires mkmf, which defines xsystem. + # When executed in RSpec, mkmf is not required, so we replace it with the regular system call. + without_partial_double_verification do + expect(described_class).to receive(:xsystem) { |*args| system(*args) } + end + end + + context "and pkg-config can successfully be called" do + let(:command) { "pkg-config" } + + it { is_expected.to be false } + end + + context "and pkg-config cannot be called" do + let(:command) { "does-not-exist" } + + it { is_expected.to be true } + end + end + end end RSpec.describe Datadog::Profiling::NativeExtensionHelpers::Supported do - describe '.supported?' do + describe ".supported?" do subject(:supported?) { described_class.supported? } - context 'when there is an unsupported_reason' do - before { allow(described_class).to receive(:unsupported_reason).and_return('Unsupported, sorry :(') } + context "when there is an unsupported_reason" do + before { allow(described_class).to receive(:unsupported_reason).and_return("Unsupported, sorry :(") } it { is_expected.to be false } end - context 'when there is no unsupported_reason' do + context "when there is no unsupported_reason" do before { allow(described_class).to receive(:unsupported_reason).and_return(nil) } it { is_expected.to be true } end end - describe '.unsupported_reason' do + describe ".unsupported_reason" do subject(:unsupported_reason) do reason = described_class.unsupported_reason - reason.fetch(:reason).join("\n") if reason + reason&.fetch(:reason)&.join("\n") end before do allow(RbConfig::CONFIG).to receive(:[]).and_call_original end - context 'when disabled via the DD_PROFILING_NO_EXTENSION environment variable' do - around { |example| ClimateControl.modify('DD_PROFILING_NO_EXTENSION' => 'true') { example.run } } + context "when disabled via the DD_PROFILING_NO_EXTENSION environment variable" do + around { |example| ClimateControl.modify("DD_PROFILING_NO_EXTENSION" => "true") { example.run } } - it { is_expected.to include 'DD_PROFILING_NO_EXTENSION' } + it { is_expected.to include "DD_PROFILING_NO_EXTENSION" } end - context 'when JRuby is used' do - before { stub_const('RUBY_ENGINE', 'jruby') } + context "when JRuby is used" do + before { stub_const("RUBY_ENGINE", "jruby") } - it { is_expected.to include 'JRuby' } + it { is_expected.to include "JRuby" } end - context 'when TruffleRuby is used' do - before { stub_const('RUBY_ENGINE', 'truffleruby') } + context "when TruffleRuby is used" do + before { stub_const("RUBY_ENGINE", "truffleruby") } - it { is_expected.to include 'TruffleRuby' } + it { is_expected.to include "TruffleRuby" } end - context 'when not on JRuby or TruffleRuby' do - before { stub_const('RUBY_ENGINE', 'ruby') } + context "when not on JRuby or TruffleRuby" do + before { stub_const("RUBY_ENGINE", "ruby") } - context 'when on Windows' do + context "when on Windows" do before { expect(Gem).to receive(:win_platform?).and_return(true) } - it { is_expected.to include 'Windows' } + it { is_expected.to include "Windows" } end - context 'when on macOS' do - around { |example| ClimateControl.modify('DD_PROFILING_MACOS_TESTING' => nil) { example.run } } + context "when on macOS" do + around { |example| ClimateControl.modify("DD_PROFILING_MACOS_TESTING" => nil) { example.run } } - before { stub_const('RUBY_PLATFORM', 'x86_64-darwin19') } + before { stub_const("RUBY_PLATFORM", "x86_64-darwin19") } - it { is_expected.to include 'macOS' } + it { is_expected.to include "macOS" } end - context 'when not on Linux' do - before { stub_const('RUBY_PLATFORM', 'sparc-opensolaris') } + context "when not on Linux" do + before { stub_const("RUBY_PLATFORM", "sparc-opensolaris") } - it { is_expected.to include 'operating system is not supported' } + it { is_expected.to include "operating system is not supported" } end - context 'when on Linux or on macOS with testing override enabled' do + context "when on Linux or on macOS with testing override enabled" do before { expect(Gem).to receive(:win_platform?).and_return(false) } - context 'when not on amd64 or arm64' do - before { stub_const('RUBY_PLATFORM', 'mipsel-linux') } + context "when not on amd64 or arm64" do + before { stub_const("RUBY_PLATFORM", "mipsel-linux") } - it { is_expected.to include 'architecture is not supported' } + it { is_expected.to include "architecture is not supported" } end - shared_examples 'supported ruby validation' do - before { stub_const('RUBY_VERSION', '2.5.0') } + shared_examples "supported ruby validation" do + before { stub_const("RUBY_VERSION", "2.5.0") } - shared_examples 'libdatadog available' do - context 'when libdatadog fails to activate' do + shared_examples "libdatadog available" do + context "when libdatadog fails to activate" do before do - expect(described_class) - .to receive(:gem).with('libdatadog', Datadog::Profiling::NativeExtensionHelpers::LIBDATADOG_VERSION) - .and_raise(LoadError.new('Simulated error activating gem')) + expect(Datadog::LibdatadogExtconfHelpers) + .to receive(:gem).with("libdatadog", Datadog::LibdatadogExtconfHelpers::LIBDATADOG_VERSION) + .and_raise(LoadError.new("Simulated error activating gem")) end - it { is_expected.to include 'exception during loading' } + it { is_expected.to include "exception during loading" } end - context 'when libdatadog successfully activates' do - include_examples 'libdatadog usable' + context "when libdatadog successfully activates" do + include_examples "libdatadog usable" end end - shared_examples 'libdatadog usable' do - context 'when libdatadog DOES NOT HAVE binaries for the current platform' do + shared_examples "libdatadog usable" do + context "when libdatadog DOES NOT HAVE binaries for the current platform" do before do expect(Libdatadog).to receive(:pkgconfig_folder).and_return(nil) expect(Libdatadog).to receive(:available_binaries).and_return(%w[fooarch-linux bararch-linux-musl]) end - it { is_expected.to include 'platform variant' } + it { is_expected.to include "platform variant" } end - context 'when libdatadog HAS BINARIES for the current platform' do - before { expect(Libdatadog).to receive(:pkgconfig_folder).and_return('/simulated/pkgconfig_folder') } + context "when libdatadog HAS BINARIES for the current platform" do + before { expect(Libdatadog).to receive(:pkgconfig_folder).and_return("/simulated/pkgconfig_folder") } - it('marks the native extension as supported') { is_expected.to be nil } + it("marks the native extension as supported") { is_expected.to be nil } end end - context 'on a Ruby version where we CAN NOT use the MJIT header' do - before { stub_const('Datadog::Profiling::NativeExtensionHelpers::CAN_USE_MJIT_HEADER', false) } + context "on a Ruby version where we CAN NOT use the MJIT header" do + before { stub_const("Datadog::Profiling::NativeExtensionHelpers::CAN_USE_MJIT_HEADER", false) } - include_examples 'libdatadog available' + include_examples "libdatadog available" end - context 'on a Ruby version where we CAN use the MJIT header' do - before { stub_const('Datadog::Profiling::NativeExtensionHelpers::CAN_USE_MJIT_HEADER', true) } + context "on a Ruby version where we CAN use the MJIT header" do + before { stub_const("Datadog::Profiling::NativeExtensionHelpers::CAN_USE_MJIT_HEADER", true) } - context 'but DOES NOT have MJIT support' do - before { expect(RbConfig::CONFIG).to receive(:[]).with('MJIT_SUPPORT').and_return('no') } + context "but DOES NOT have MJIT support" do + before { expect(RbConfig::CONFIG).to receive(:[]).with("MJIT_SUPPORT").and_return("no") } - it { is_expected.to include 'without JIT' } + it { is_expected.to include "without JIT" } end - context 'and DOES have MJIT support' do - before { expect(RbConfig::CONFIG).to receive(:[]).with('MJIT_SUPPORT').and_return('yes') } + context "and DOES have MJIT support" do + before { expect(RbConfig::CONFIG).to receive(:[]).with("MJIT_SUPPORT").and_return("yes") } - include_examples 'libdatadog available' + include_examples "libdatadog available" end end end - context 'when on amd64 (x86-64) linux' do - before { stub_const('RUBY_PLATFORM', 'x86_64-linux') } + context "when on amd64 (x86-64) linux" do + before { stub_const("RUBY_PLATFORM", "x86_64-linux") } - include_examples 'supported ruby validation' + include_examples "supported ruby validation" end - context 'when on arm64 (aarch64) linux' do - before { stub_const('RUBY_PLATFORM', 'aarch64-linux') } + context "when on arm64 (aarch64) linux" do + before { stub_const("RUBY_PLATFORM", "aarch64-linux") } - include_examples 'supported ruby validation' + include_examples "supported ruby validation" end - context 'when macOS testing override is enabled' do - around { |example| ClimateControl.modify('DD_PROFILING_MACOS_TESTING' => 'true') { example.run } } + context "when macOS testing override is enabled" do + around { |example| ClimateControl.modify("DD_PROFILING_MACOS_TESTING" => "true") { example.run } } - context 'when on amd64 (x86-64) macOS' do - before { stub_const('RUBY_PLATFORM', 'x86_64-darwin19') } + context "when on amd64 (x86-64) macOS" do + before { stub_const("RUBY_PLATFORM", "x86_64-darwin19") } - include_examples 'supported ruby validation' + include_examples "supported ruby validation" end - context 'when on arm64 macOS' do - before { stub_const('RUBY_PLATFORM', 'arm64-darwin21') } + context "when on arm64 macOS" do + before { stub_const("RUBY_PLATFORM", "arm64-darwin21") } - include_examples 'supported ruby validation' + include_examples "supported ruby validation" end end end end end - - describe '.pkg_config_missing?' do - subject(:pkg_config_missing) { described_class.pkg_config_missing?(command: command) } - - before do - skip_if_profiling_not_supported(self) - end - - context 'when command is not available' do - let(:command) { nil } - - it { is_expected.to be true } - end - - # This spec is semi-realistic, because it actually calls into the pkg-config external process. - # - # We know pkg-config must be available on the machine running the tests because otherwise profiling would not be - # supported (and thus `skip_if_profiling_not_supported` would've been triggered). - # - # We could also mock the entire interaction, but this seemed like a simple enough way to go. - context 'when command is available' do - before do - # This helper is designed to be called from extconf.rb, which requires mkmf, which defines xsystem. - # When executed in RSpec, mkmf is not required, so we replace it with the regular system call. - without_partial_double_verification do - expect(described_class).to receive(:xsystem) { |*args| system(*args) } - end - end - - context 'and pkg-config can successfully be called' do - let(:command) { 'pkg-config' } - - it { is_expected.to be false } - end - - context 'and pkg-config cannot be called' do - let(:command) { 'does-not-exist' } - - it { is_expected.to be true } - end - end - end end diff --git a/spec/datadog/profiling/native_extension_spec.rb b/spec/datadog/profiling/native_extension_spec.rb index 1cf75cdd5fd..f68ace2a796 100644 --- a/spec/datadog/profiling/native_extension_spec.rb +++ b/spec/datadog/profiling/native_extension_spec.rb @@ -1,88 +1,88 @@ -require 'datadog/profiling/spec_helper' -require 'datadog/profiling/native_extension' +require "datadog/profiling/spec_helper" +require "datadog/profiling/native_extension" RSpec.describe Datadog::Profiling::NativeExtension do before { skip_if_profiling_not_supported(self) } - describe '.working?' do + describe ".working?" do subject(:working?) { described_class.send(:working?) } it { is_expected.to be true } end - describe 'grab_gvl_and_raise' do - it 'raises the requested exception with the passed in message' do - expect { described_class::Testing._native_grab_gvl_and_raise(ZeroDivisionError, 'this is a test', nil, true) } - .to raise_exception(ZeroDivisionError, 'this is a test') + describe "grab_gvl_and_raise" do + it "raises the requested exception with the passed in message" do + expect { described_class::Testing._native_grab_gvl_and_raise(ZeroDivisionError, "this is a test", nil, true) } + .to raise_exception(ZeroDivisionError, "this is a test") end - it 'accepts printf-style string formatting' do - expect { described_class::Testing._native_grab_gvl_and_raise(ZeroDivisionError, 'divided zero by ', 42, true) } - .to raise_exception(ZeroDivisionError, 'divided zero by 42') + it "accepts printf-style string formatting" do + expect { described_class::Testing._native_grab_gvl_and_raise(ZeroDivisionError, "divided zero by ", 42, true) } + .to raise_exception(ZeroDivisionError, "divided zero by 42") end - it 'limits the exception message to 255 characters' do - big_message = 'a' * 500 + it "limits the exception message to 255 characters" do + big_message = "a" * 500 expect { described_class::Testing._native_grab_gvl_and_raise(ZeroDivisionError, big_message, nil, true) } .to raise_exception(ZeroDivisionError, /a{255}\z/) end - context 'when called without releasing the gvl' do - it 'raises a RuntimeError' do - expect { described_class::Testing._native_grab_gvl_and_raise(ZeroDivisionError, 'this is a test', nil, false) } + context "when called without releasing the gvl" do + it "raises a RuntimeError" do + expect { described_class::Testing._native_grab_gvl_and_raise(ZeroDivisionError, "this is a test", nil, false) } .to raise_exception(RuntimeError, /called by thread holding the global VM lock/) end end end - describe 'grab_gvl_and_raise_syserr' do - it 'raises an exception with the passed in message and errno' do + describe "grab_gvl_and_raise_syserr" do + it "raises an exception with the passed in message and errno" do expect do - described_class::Testing._native_grab_gvl_and_raise_syserr(Errno::EINTR::Errno, 'this is a test', nil, true) + described_class::Testing._native_grab_gvl_and_raise_syserr(Errno::EINTR::Errno, "this is a test", nil, true) end.to raise_exception(Errno::EINTR, "#{Errno::EINTR.exception.message} - this is a test") end - it 'accepts printf-style string formatting' do + it "accepts printf-style string formatting" do expect do - described_class::Testing._native_grab_gvl_and_raise_syserr(Errno::EINTR::Errno, 'divided zero by ', 42, true) + described_class::Testing._native_grab_gvl_and_raise_syserr(Errno::EINTR::Errno, "divided zero by ", 42, true) end.to raise_exception(Errno::EINTR, "#{Errno::EINTR.exception.message} - divided zero by 42") end - it 'limits the caller-provided exception message to 255 characters' do - big_message = 'a' * 500 + it "limits the caller-provided exception message to 255 characters" do + big_message = "a" * 500 expect do described_class::Testing._native_grab_gvl_and_raise_syserr(Errno::EINTR::Errno, big_message, nil, true) end.to raise_exception(Errno::EINTR, /.+a{255}\z/) end - context 'when called without releasing the gvl' do - it 'raises a RuntimeError' do + context "when called without releasing the gvl" do + it "raises a RuntimeError" do expect do - described_class::Testing._native_grab_gvl_and_raise_syserr(Errno::EINTR::Errno, 'this is a test', nil, false) + described_class::Testing._native_grab_gvl_and_raise_syserr(Errno::EINTR::Errno, "this is a test", nil, false) end.to raise_exception(RuntimeError, /called by thread holding the global VM lock/) end end end - describe 'ddtrace_rb_ractor_main_p' do + describe "ddtrace_rb_ractor_main_p" do subject(:ddtrace_rb_ractor_main_p) { described_class::Testing._native_ddtrace_rb_ractor_main_p } - context 'when Ruby has no support for Ractors' do - before { skip 'Behavior does not apply to current Ruby version' if RUBY_VERSION >= '3' } + context "when Ruby has no support for Ractors" do + before { skip "Behavior does not apply to current Ruby version" if RUBY_VERSION >= "3" } it { is_expected.to be true } end - context 'when Ruby has support for Ractors' do - before { skip 'Behavior does not apply to current Ruby version' if RUBY_VERSION < '3' } + context "when Ruby has support for Ractors" do + before { skip "Behavior does not apply to current Ruby version" if RUBY_VERSION < "3" } - context 'on the main Ractor' do + context "on the main Ractor" do it { is_expected.to be true } end - context 'on a background Ractor', :ractors => true do + context "on a background Ractor", ractors: true do # @ivoanjo: When we initially added this test, our test suite kept deadlocking in CI in a later test (not on # this one). # @@ -92,7 +92,7 @@ # I was able to see this even on both Linux with 3.0.3 and macOS with 3.0.4. Thus, I decided to skip this # spec on Ruby 3.0. We can always run it manually if we change something around this helper; and we have # coverage on 3.1+ anyway. - before { skip 'Ruby 3.0 Ractors are too buggy to run this spec' if RUBY_VERSION.start_with?('3.0.') } + before { skip "Ruby 3.0 Ractors are too buggy to run this spec" if RUBY_VERSION.start_with?("3.0.") } subject(:ddtrace_rb_ractor_main_p) do Ractor.new { Datadog::Profiling::NativeExtension::Testing._native_ddtrace_rb_ractor_main_p }.take @@ -103,16 +103,16 @@ end end - describe 'is_current_thread_holding_the_gvl' do + describe "is_current_thread_holding_the_gvl" do subject(:is_current_thread_holding_the_gvl) do Datadog::Profiling::NativeExtension::Testing._native_is_current_thread_holding_the_gvl end - context 'when current thread is holding the global VM lock' do + context "when current thread is holding the global VM lock" do it { is_expected.to be true } end - context 'when current thread is not holding the global VM lock' do + context "when current thread is not holding the global VM lock" do subject(:is_current_thread_holding_the_gvl) do Datadog::Profiling::NativeExtension::Testing._native_release_gvl_and_call_is_current_thread_holding_the_gvl end @@ -120,7 +120,7 @@ it { is_expected.to be false } end - describe 'correctness' do + describe "correctness", :memcheck_valgrind_skip do let(:ready_queue) { Queue.new } let(:background_thread) do Thread.new do @@ -148,7 +148,7 @@ # the background thread, we are guaranteed that the background thread does not have the GVL. # # @ivoanjo: It's a bit weird but I wanted test coverage for this. Improvements welcome ;) - it 'returns accurate results when compared to ruby_thread_has_gvl_p' do + it "returns accurate results when compared to ruby_thread_has_gvl_p" do background_thread ready_queue.pop @@ -159,24 +159,24 @@ end end - describe 'enforce_success' do - context 'when there is no error' do - it 'does nothing' do + describe "enforce_success" do + context "when there is no error" do + it "does nothing" do expect { described_class::Testing._native_enforce_success(0, true) }.to_not raise_error end end - context 'when there is an error' do + context "when there is an error" do let(:have_gvl) { true } - it 'raises an exception with the passed in errno' do + it "raises an exception with the passed in errno" do expect { described_class::Testing._native_enforce_success(Errno::EINTR::Errno, have_gvl) } .to raise_exception(Errno::EINTR, /#{Errno::EINTR.exception.message}.+profiling\.c/) end - context 'when called without the gvl' do + context "when called without the gvl" do let(:have_gvl) { false } - it 'raises an exception with the passed in errno' do + it "raises an exception with the passed in errno" do expect { described_class::Testing._native_enforce_success(Errno::EINTR::Errno, have_gvl) } .to raise_exception(Errno::EINTR, /#{Errno::EINTR.exception.message}.+profiling\.c/) end diff --git a/spec/datadog/profiling/pprof/pprof_pb.rb b/spec/datadog/profiling/pprof/pprof_pb.rb index 3c31ac57b3c..4e95e057393 100644 --- a/spec/datadog/profiling/pprof/pprof_pb.rb +++ b/spec/datadog/profiling/pprof/pprof_pb.rb @@ -3,41 +3,41 @@ # Pprof encoding is taken care of by libdatadog, but we use this in our specs to be able to decode profiles and # assert on them -require 'google/protobuf' +require "google/protobuf" Google::Protobuf::DescriptorPool.generated_pool.build do - add_message 'perftools.profiles.Profile' do - repeated :sample_type, :message, 1, 'perftools.profiles.ValueType' - repeated :sample, :message, 2, 'perftools.profiles.Sample' - repeated :mapping, :message, 3, 'perftools.profiles.Mapping' - repeated :location, :message, 4, 'perftools.profiles.Location' - repeated :function, :message, 5, 'perftools.profiles.Function' + add_message "perftools.profiles.Profile" do + repeated :sample_type, :message, 1, "perftools.profiles.ValueType" + repeated :sample, :message, 2, "perftools.profiles.Sample" + repeated :mapping, :message, 3, "perftools.profiles.Mapping" + repeated :location, :message, 4, "perftools.profiles.Location" + repeated :function, :message, 5, "perftools.profiles.Function" repeated :string_table, :string, 6 optional :drop_frames, :int64, 7 optional :keep_frames, :int64, 8 optional :time_nanos, :int64, 9 optional :duration_nanos, :int64, 10 - optional :period_type, :message, 11, 'perftools.profiles.ValueType' + optional :period_type, :message, 11, "perftools.profiles.ValueType" optional :period, :int64, 12 repeated :comment, :int64, 13 optional :default_sample_type, :int64, 14 end - add_message 'perftools.profiles.ValueType' do + add_message "perftools.profiles.ValueType" do optional :type, :int64, 1 optional :unit, :int64, 2 end - add_message 'perftools.profiles.Sample' do + add_message "perftools.profiles.Sample" do repeated :location_id, :uint64, 1 repeated :value, :int64, 2 - repeated :label, :message, 3, 'perftools.profiles.Label' + repeated :label, :message, 3, "perftools.profiles.Label" end - add_message 'perftools.profiles.Label' do + add_message "perftools.profiles.Label" do optional :key, :int64, 1 optional :str, :int64, 2 optional :num, :int64, 3 optional :num_unit, :int64, 4 end - add_message 'perftools.profiles.Mapping' do + add_message "perftools.profiles.Mapping" do optional :id, :uint64, 1 optional :memory_start, :uint64, 2 optional :memory_limit, :uint64, 3 @@ -49,18 +49,18 @@ optional :has_line_numbers, :bool, 9 optional :has_inline_frames, :bool, 10 end - add_message 'perftools.profiles.Location' do + add_message "perftools.profiles.Location" do optional :id, :uint64, 1 optional :mapping_id, :uint64, 2 optional :address, :uint64, 3 - repeated :line, :message, 4, 'perftools.profiles.Line' + repeated :line, :message, 4, "perftools.profiles.Line" optional :is_folded, :bool, 5 end - add_message 'perftools.profiles.Line' do + add_message "perftools.profiles.Line" do optional :function_id, :uint64, 1 optional :line, :int64, 2 end - add_message 'perftools.profiles.Function' do + add_message "perftools.profiles.Function" do optional :id, :uint64, 1 optional :name, :int64, 2 optional :system_name, :int64, 3 @@ -71,13 +71,13 @@ module Perftools module Profiles - Profile = Google::Protobuf::DescriptorPool.generated_pool.lookup('perftools.profiles.Profile').msgclass - ValueType = Google::Protobuf::DescriptorPool.generated_pool.lookup('perftools.profiles.ValueType').msgclass - Sample = Google::Protobuf::DescriptorPool.generated_pool.lookup('perftools.profiles.Sample').msgclass - Label = Google::Protobuf::DescriptorPool.generated_pool.lookup('perftools.profiles.Label').msgclass - Mapping = Google::Protobuf::DescriptorPool.generated_pool.lookup('perftools.profiles.Mapping').msgclass - Location = Google::Protobuf::DescriptorPool.generated_pool.lookup('perftools.profiles.Location').msgclass - Line = Google::Protobuf::DescriptorPool.generated_pool.lookup('perftools.profiles.Line').msgclass - Function = Google::Protobuf::DescriptorPool.generated_pool.lookup('perftools.profiles.Function').msgclass + Profile = Google::Protobuf::DescriptorPool.generated_pool.lookup("perftools.profiles.Profile").msgclass + ValueType = Google::Protobuf::DescriptorPool.generated_pool.lookup("perftools.profiles.ValueType").msgclass + Sample = Google::Protobuf::DescriptorPool.generated_pool.lookup("perftools.profiles.Sample").msgclass + Label = Google::Protobuf::DescriptorPool.generated_pool.lookup("perftools.profiles.Label").msgclass + Mapping = Google::Protobuf::DescriptorPool.generated_pool.lookup("perftools.profiles.Mapping").msgclass + Location = Google::Protobuf::DescriptorPool.generated_pool.lookup("perftools.profiles.Location").msgclass + Line = Google::Protobuf::DescriptorPool.generated_pool.lookup("perftools.profiles.Line").msgclass + Function = Google::Protobuf::DescriptorPool.generated_pool.lookup("perftools.profiles.Function").msgclass end end diff --git a/spec/datadog/profiling/preload_spec.rb b/spec/datadog/profiling/preload_spec.rb index 9cf13240202..be6f448a3e2 100644 --- a/spec/datadog/profiling/preload_spec.rb +++ b/spec/datadog/profiling/preload_spec.rb @@ -1,10 +1,10 @@ -require 'spec_helper' -require 'datadog/profiling' +require "spec_helper" +require "datadog/profiling" -RSpec.describe 'Profiling preloading' do - subject(:preload) { load 'datadog/profiling/preload.rb' } +RSpec.describe "Profiling preloading" do + subject(:preload) { load "datadog/profiling/preload.rb" } - it 'starts the profiler' do + it "starts the profiler" do expect(Datadog::Profiling).to receive(:start_if_enabled) preload diff --git a/spec/datadog/profiling/profiler_spec.rb b/spec/datadog/profiling/profiler_spec.rb index 98ee1722754..46eddb28cbe 100644 --- a/spec/datadog/profiling/profiler_spec.rb +++ b/spec/datadog/profiling/profiler_spec.rb @@ -1,46 +1,32 @@ -require 'spec_helper' -require 'datadog/profiling/spec_helper' +require "spec_helper" +require "datadog/profiling/spec_helper" -require 'datadog/profiling/profiler' +require "datadog/profiling/profiler" RSpec.describe Datadog::Profiling::Profiler do before { skip_if_profiling_not_supported(self) } subject(:profiler) do - described_class.new(worker: worker, scheduler: scheduler, optional_crashtracker: optional_crashtracker) + described_class.new(worker: worker, scheduler: scheduler) end let(:worker) { instance_double(Datadog::Profiling::Collectors::CpuAndWallTimeWorker) } let(:scheduler) { instance_double(Datadog::Profiling::Scheduler) } - let(:optional_crashtracker) { nil } - describe '#start' do + describe "#start" do subject(:start) { profiler.start } - it 'signals the worker and scheduler to start' do + it "signals the worker and scheduler to start" do expect(worker).to receive(:start).with(on_failure_proc: an_instance_of(Proc)) expect(scheduler).to receive(:start).with(on_failure_proc: an_instance_of(Proc)) start end - context 'when a crash tracker instance is provided' do - let(:optional_crashtracker) { instance_double(Datadog::Profiling::Crashtracker) } + context "when called after a fork" do + before { skip("Spec requires Ruby VM supporting fork") unless PlatformHelpers.supports_fork? } - it 'signals the crash tracker to start before other components' do - expect(optional_crashtracker).to receive(:start).ordered - - expect(worker).to receive(:start).ordered - expect(scheduler).to receive(:start).ordered - - start - end - end - - context 'when called after a fork' do - before { skip('Spec requires Ruby VM supporting fork') unless PlatformHelpers.supports_fork? } - - it 'resets the worker and the scheduler before starting them' do + it "resets the worker and the scheduler before starting them" do profiler # make sure instance is created in parent, so it detects the forking expect_in_fork do @@ -53,33 +39,13 @@ start end end - - context 'when a crash tracker instance is provided' do - let(:optional_crashtracker) { instance_double(Datadog::Profiling::Crashtracker) } - - it 'resets the crash tracker before other coponents, as well as restarts it before other components' do - profiler # make sure instance is created in parent, so it detects the forking - - expect_in_fork do - expect(optional_crashtracker).to receive(:reset_after_fork).ordered - expect(worker).to receive(:reset_after_fork).ordered - expect(scheduler).to receive(:reset_after_fork).ordered - - expect(optional_crashtracker).to receive(:start).ordered - expect(worker).to receive(:start).ordered - expect(scheduler).to receive(:start).ordered - - start - end - end - end end end - describe '#shutdown!' do + describe "#shutdown!" do subject(:shutdown!) { profiler.shutdown! } - it 'signals worker and scheduler to disable and stop' do + it "signals worker and scheduler to disable and stop" do expect(worker).to receive(:stop) expect(scheduler).to receive(:enabled=).with(false) @@ -87,30 +53,15 @@ shutdown! end - - context 'when a crash tracker instance is provided' do - let(:optional_crashtracker) { instance_double(Datadog::Profiling::Crashtracker) } - - it 'signals the crash tracker to stop, after other components have stopped' do - expect(worker).to receive(:stop).ordered - allow(scheduler).to receive(:enabled=) - expect(scheduler).to receive(:stop).ordered - - expect(optional_crashtracker).to receive(:stop).ordered - - shutdown! - end - end end - describe 'Component failure handling' do + describe "Component failure handling" do let(:worker) { instance_double(Datadog::Profiling::Collectors::CpuAndWallTimeWorker, start: nil) } let(:scheduler) { instance_double(Datadog::Profiling::Scheduler, start: nil) } - let(:optional_crashtracker) { instance_double(Datadog::Profiling::Crashtracker, start: nil) } before { allow(Datadog.logger).to receive(:warn) } - context 'when the worker failed' do + context "when the worker failed" do let(:worker_on_failure) do on_failure = nil expect(worker).to receive(:start) { |on_failure_proc:| on_failure = on_failure_proc } @@ -123,29 +74,30 @@ before do allow(scheduler).to receive(:enabled=) allow(scheduler).to receive(:stop) + allow(scheduler).to receive(:mark_profiler_failed) end - it 'logs the issue' do + it "logs the issue" do expect(Datadog.logger).to receive(:warn).with(/worker component/) worker_on_failure end - it 'stops the scheduler' do - expect(scheduler).to receive(:enabled=).with(false) - expect(scheduler).to receive(:stop).with(true) + it "marks the profiler as having failed in the scheduler" do + expect(scheduler).to receive(:mark_profiler_failed) worker_on_failure end - it 'does not stop the crashtracker' do - expect(optional_crashtracker).to_not receive(:stop) + it "stops the scheduler" do + expect(scheduler).to receive(:enabled=).with(false) + expect(scheduler).to receive(:stop).with(true) worker_on_failure end end - context 'when the scheduler failed' do + context "when the scheduler failed" do let(:scheduler_on_failure) do on_failure = nil expect(scheduler).to receive(:start) { |on_failure_proc:| on_failure = on_failure_proc } @@ -159,28 +111,22 @@ allow(worker).to receive(:stop) end - it 'logs the issue' do + it "logs the issue" do expect(Datadog.logger).to receive(:warn).with(/scheduler component/) scheduler_on_failure end - it 'stops the worker' do + it "stops the worker" do expect(worker).to receive(:stop) scheduler_on_failure end - - it 'does not stop the crashtracker' do - expect(optional_crashtracker).to_not receive(:stop) - - scheduler_on_failure - end end - context 'when unknown component failed' do - it 'raises an ArgumentError' do - expect { profiler.send(:component_failed, 'test') }.to raise_error(ArgumentError, /failed_component: "test"/) + context "when unknown component failed" do + it "raises an ArgumentError" do + expect { profiler.send(:component_failed, "test") }.to raise_error(ArgumentError, /failed_component: "test"/) end end end diff --git a/spec/datadog/profiling/scheduler_spec.rb b/spec/datadog/profiling/scheduler_spec.rb index 3a33b9037ff..0478d8a3a6b 100644 --- a/spec/datadog/profiling/scheduler_spec.rb +++ b/spec/datadog/profiling/scheduler_spec.rb @@ -1,6 +1,6 @@ -require 'datadog/profiling/spec_helper' +require "datadog/profiling/spec_helper" -require 'datadog/profiling/scheduler' +require "datadog/profiling/scheduler" RSpec.describe Datadog::Profiling::Scheduler do before { skip_if_profiling_not_supported(self) } @@ -12,8 +12,8 @@ subject(:scheduler) { described_class.new(exporter: exporter, transport: transport, interval: interval, **options) } - describe '.new' do - describe 'default settings' do + describe ".new" do + describe "default settings" do it do is_expected.to have_attributes( enabled?: true, @@ -24,16 +24,16 @@ end end - describe '#start' do + describe "#start" do subject(:start) { scheduler.start } - it 'starts the worker' do + it "starts the worker" do expect(scheduler).to receive(:perform) start end end - describe '#perform' do + describe "#perform" do subject(:perform) { scheduler.perform } after do @@ -41,10 +41,10 @@ scheduler.join end - context 'when disabled' do + context "when disabled" do before { scheduler.enabled = false } - it 'does not start a worker thread' do + it "does not start a worker thread" do perform expect(scheduler.send(:worker)).to be nil @@ -60,12 +60,12 @@ end end - context 'when enabled' do + context "when enabled" do before { scheduler.enabled = true } after { scheduler.terminate } - it 'starts a worker thread' do + it "starts a worker thread" do allow(scheduler).to receive(:flush_events) perform @@ -83,12 +83,12 @@ ) end - context 'when perform fails' do + context "when perform fails" do before { Thread.report_on_exception = false if Thread.respond_to?(:report_on_exception=) } - after { Thread.report_on_exception = true if Thread.respond_to?(:report_on_exception=) } + after { Thread.report_on_exception = true if Thread.respond_to?(:report_on_exception=) } - it 'calls the on_failure_proc and logs the error' do - expect(scheduler).to receive(:flush_and_wait).and_raise(StandardError.new('Simulated error')) + it "calls the on_failure_proc and logs the error" do + expect(scheduler).to receive(:flush_and_wait).and_raise(StandardError.new("Simulated error")) # This is a bit ugly, but we want the logic in the background thread to be called immediately, and by # default we don't do that @@ -107,8 +107,8 @@ end end - context 'when perform is interrupted' do - it 'logs the interruption' do + context "when perform is interrupted" do + it "logs the interruption" do inside_flush = Queue.new # This is a bit ugly, but we want the logic in the background thread to be called immediately, and by @@ -134,7 +134,7 @@ end end - describe '#flush_and_wait' do + describe "#flush_and_wait" do subject(:flush_and_wait) { scheduler.send(:flush_and_wait) } let(:flush_time) { 0.05 } @@ -145,7 +145,7 @@ end end - it 'changes its wait interval after flushing' do + it "changes its wait interval after flushing" do expect(scheduler).to receive(:loop_wait_time=) do |value| expected_interval = interval - flush_time expect(value).to be <= expected_interval @@ -154,11 +154,11 @@ flush_and_wait end - context 'when the flush takes longer than an interval' do - let(:options) { { **super(), interval: 0.01 } } + context "when the flush takes longer than an interval" do + let(:options) { {**super(), interval: 0.01} } # Assert that the interval isn't set below the min interval - it 'floors the wait interval to MINIMUM_INTERVAL_SECONDS' do + it "floors the wait interval to MINIMUM_INTERVAL_SECONDS" do expect(scheduler).to receive(:loop_wait_time=) .with(described_class.const_get(:MINIMUM_INTERVAL_SECONDS)) @@ -167,45 +167,47 @@ end end - describe '#flush_events' do + describe "#flush_events" do subject(:flush_events) { scheduler.send(:flush_events) } let(:flush) { instance_double(Datadog::Profiling::Flush) } before { expect(exporter).to receive(:flush).and_return(flush) } - it 'exports the profiling data' do + it "exports the profiling data" do expect(transport).to receive(:export).with(flush) flush_events end - context 'when transport fails' do + context "when transport fails" do before do - expect(transport).to receive(:export) { raise 'Kaboom' } + expect(transport).to receive(:export) { raise "Kaboom" } end - it 'gracefully handles the exception, logging it' do + it "gracefully handles the exception, logging it" do expect(Datadog.logger).to receive(:error).with(/Kaboom/) + expect(Datadog::Core::Telemetry::Logger).to receive(:report) + .with(an_instance_of(RuntimeError), description: "Unable to report profile") flush_events end end - context 'when the flush does not contain enough data' do + context "when the flush does not contain enough data" do let(:flush) { nil } - it 'does not try to export the profiling data' do + it "does not try to export the profiling data" do expect(transport).to_not receive(:export) flush_events end end - context 'when being run in a loop' do + context "when being run in a loop" do before { allow(scheduler).to receive(:run_loop?).and_return(true) } - it 'sleeps for up to DEFAULT_FLUSH_JITTER_MAXIMUM_SECONDS seconds before reporting' do + it "sleeps for up to DEFAULT_FLUSH_JITTER_MAXIMUM_SECONDS seconds before reporting" do expect(scheduler).to receive(:sleep) do |sleep_amount| expect(sleep_amount).to be < described_class.const_get(:DEFAULT_FLUSH_JITTER_MAXIMUM_SECONDS) expect(sleep_amount).to be_a_kind_of(Float) @@ -216,10 +218,10 @@ end end - context 'when being run as a one-off' do + context "when being run as a one-off" do before { allow(scheduler).to receive(:run_loop?).and_return(false) } - it 'does not sleep before reporting' do + it "does not sleep before reporting" do expect(scheduler).to_not receive(:sleep) expect(transport).to receive(:export) @@ -229,32 +231,41 @@ end end - describe '#loop_wait_before_first_iteration?' do - it 'enables this feature of IntervalLoop' do + describe "#loop_wait_before_first_iteration?" do + it "enables this feature of IntervalLoop" do expect(scheduler.loop_wait_before_first_iteration?).to be true end end - describe '#work_pending?' do + describe "#work_pending?" do subject(:work_pending?) { scheduler.work_pending? } - context 'when the exporter can flush' do + context "when the exporter can flush" do before { expect(exporter).to receive(:can_flush?).and_return(true) } it { is_expected.to be true } end - context 'when the exporter can not flush' do + context "when the exporter can not flush" do before { expect(exporter).to receive(:can_flush?).and_return(false) } it { is_expected.to be false } end + + context "when the profiler was marked as failed" do + before do + scheduler.mark_profiler_failed + expect(exporter).to_not receive(:can_flush?) + end + + it { is_expected.to be false } + end end - describe '#reset_after_fork' do + describe "#reset_after_fork" do subject(:reset_after_fork) { scheduler.reset_after_fork } - it 'resets the exporter' do + it "resets the exporter" do expect(exporter).to receive(:reset_after_fork) reset_after_fork diff --git a/spec/datadog/profiling/spec_helper.rb b/spec/datadog/profiling/spec_helper.rb index beaf0b5c67d..d65404a4fe6 100644 --- a/spec/datadog/profiling/spec_helper.rb +++ b/spec/datadog/profiling/spec_helper.rb @@ -1,7 +1,7 @@ -require 'datadog/profiling' +require "datadog/profiling" if Datadog::Profiling.supported? - require 'datadog/profiling/pprof/pprof_pb' - require 'extlz4' + require "datadog/profiling/pprof/pprof_pb" + require "extlz4" end module ProfileHelpers @@ -19,15 +19,15 @@ def has_location?(path:, line:) Frame = Struct.new(:base_label, :path, :lineno) def skip_if_profiling_not_supported(testcase) - testcase.skip('Profiling is not supported on JRuby') if PlatformHelpers.jruby? - testcase.skip('Profiling is not supported on TruffleRuby') if PlatformHelpers.truffleruby? + testcase.skip("Profiling is not supported on JRuby") if PlatformHelpers.jruby? + testcase.skip("Profiling is not supported on TruffleRuby") if PlatformHelpers.truffleruby? # Profiling is not officially supported on macOS due to missing libdatadog binaries, # but it's still useful to allow it to be enabled for development. - if PlatformHelpers.mac? && ENV['DD_PROFILING_MACOS_TESTING'] != 'true' + if PlatformHelpers.mac? && ENV["DD_PROFILING_MACOS_TESTING"] != "true" testcase.skip( - 'Profiling is not supported on macOS. If you still want to run these specs, you can use ' \ - 'DD_PROFILING_MACOS_TESTING=true to override this check.' + "Profiling is not supported on macOS. If you still want to run these specs, you can use " \ + "DD_PROFILING_MACOS_TESTING=true to override this check." ) end @@ -35,7 +35,7 @@ def skip_if_profiling_not_supported(testcase) # Ensure profiling was loaded correctly raise "Profiling does not seem to be available: #{Datadog::Profiling.unsupported_reason}. " \ - 'Try running `bundle exec rake compile` before running this test.' + "Try running `bundle exec rake compile` before running this test." end def decode_profile(pprof_data) @@ -54,8 +54,8 @@ def samples_from_pprof(pprof_data) pretty_sample_types.zip(sample.value).to_h, sample.label.map do |it| key = string_table[it.key].to_sym - [key, (it.num == 0 ? string_table[it.str] : ProfileHelpers.maybe_fix_label_range(key, it.num))] - end.to_h, + [key, ((it.num == 0) ? string_table[it.str] : ProfileHelpers.maybe_fix_label_range(key, it.num))] + end.sort.to_h, ).freeze end end @@ -63,7 +63,7 @@ def samples_from_pprof(pprof_data) def decode_frame_from_pprof(decoded_profile, location_id) strings = decoded_profile.string_table location = decoded_profile.location.find { |loc| loc.id == location_id } - raise 'Unexpected: Multiple lines for location' unless location.line.size == 1 + raise "Unexpected: Multiple lines for location" unless location.line.size == 1 line_entry = location.line.first function = decoded_profile.function.find { |func| func.id == line_entry.function_id } @@ -72,38 +72,32 @@ def decode_frame_from_pprof(decoded_profile, location_id) end def object_id_from(thread_id) - if thread_id != 'GC' + if thread_id != "GC" Integer(thread_id.match(/\d+ \((?\d+)\)/)[:object_id]) else -1 end end - def samples_for_thread(samples, thread) - samples.select do |sample| - thread_id = sample.labels[:'thread id'] + def samples_for_thread(samples, thread, expected_size: nil) + result = samples.select do |sample| + thread_id = sample.labels[:"thread id"] thread_id && object_id_from(thread_id) == thread.object_id end + + if expected_size + expect(result.size).to(be(expected_size), "Found unexpected sample count in result: #{result}") + end + + result end - # We disable heap_sample collection by default in tests since it requires some extra mocking/ - # setup for it to properly work. - def build_stack_recorder( - heap_samples_enabled: false, heap_size_enabled: false, heap_sample_every: 1, - timeline_enabled: false - ) - Datadog::Profiling::StackRecorder.new( - cpu_time_enabled: true, - alloc_samples_enabled: true, - heap_samples_enabled: heap_samples_enabled, - heap_size_enabled: heap_size_enabled, - heap_sample_every: heap_sample_every, - timeline_enabled: timeline_enabled, - ) + def sample_for_thread(samples, thread) + samples_for_thread(samples, thread, expected_size: 1).first end def self.maybe_fix_label_range(key, value) - if [:'local root span id', :'span id'].include?(key) && value < 0 + if [:"local root span id", :"span id"].include?(key) && value < 0 # pprof labels are defined to be decoded as signed values BUT the backend explicitly interprets these as unsigned # 64-bit numbers so we can still use them for these ids without having to fall back to strings value + 2**64 @@ -111,6 +105,12 @@ def self.maybe_fix_label_range(key, value) value end end + + def skip_if_gvl_profiling_not_supported(testcase) + if RUBY_VERSION < "3.2." + testcase.skip "GVL profiling is only supported on Ruby >= 3.2" + end + end end RSpec.configure do |config| diff --git a/spec/datadog/profiling/stack_recorder_spec.rb b/spec/datadog/profiling/stack_recorder_spec.rb index 7320decf400..4ab8891c7ee 100644 --- a/spec/datadog/profiling/stack_recorder_spec.rb +++ b/spec/datadog/profiling/stack_recorder_spec.rb @@ -1,5 +1,5 @@ -require 'datadog/profiling/spec_helper' -require 'datadog/profiling/stack_recorder' +require "datadog/profiling/spec_helper" +require "datadog/profiling/stack_recorder" RSpec.describe Datadog::Profiling::StackRecorder do before { skip_if_profiling_not_supported(self) } @@ -13,6 +13,7 @@ let(:heap_size_enabled) { false } let(:heap_sample_every) { 1 } let(:timeline_enabled) { true } + let(:heap_clean_after_gc_enabled) { true } subject(:stack_recorder) do described_class.new( @@ -22,6 +23,7 @@ heap_size_enabled: heap_size_enabled, heap_sample_every: heap_sample_every, timeline_enabled: timeline_enabled, + heap_clean_after_gc_enabled: heap_clean_after_gc_enabled, ) end @@ -40,23 +42,31 @@ def slot_two_mutex_locked? described_class::Testing._native_slot_two_mutex_locked?(stack_recorder) end - describe '#initialize' do - describe 'locking behavior' do - it 'sets slot one as the active slot' do + def is_object_recorded?(obj_id) + described_class::Testing._native_is_object_recorded?(stack_recorder, obj_id) + end + + def recorder_after_gc_step + described_class::Testing._native_recorder_after_gc_step(stack_recorder) + end + + describe "#initialize" do + describe "locking behavior" do + it "sets slot one as the active slot" do expect(active_slot).to be 1 end - it 'keeps the slot one mutex unlocked' do + it "keeps the slot one mutex unlocked" do expect(slot_one_mutex_locked?).to be false end - it 'keeps the slot two mutex locked' do + it "keeps the slot two mutex locked" do expect(slot_two_mutex_locked?).to be true end end end - describe '#serialize' do + describe "#serialize" do subject(:serialize) { stack_recorder.serialize } let(:start) { serialize[0] } @@ -66,7 +76,7 @@ def slot_two_mutex_locked? let(:decoded_profile) { decode_profile(encoded_pprof) } - it 'debug logs profile information' do + it "debug logs profile information" do message = nil expect(Datadog.logger).to receive(:debug) do |&message_block| @@ -79,43 +89,43 @@ def slot_two_mutex_locked? expect(message).to include finish.iso8601 end - describe 'locking behavior' do - context 'when slot one was the active slot' do - it 'sets slot two as the active slot' do + describe "locking behavior" do + context "when slot one was the active slot" do + it "sets slot two as the active slot" do expect { serialize }.to change { active_slot }.from(1).to(2) end - it 'locks the slot one mutex' do + it "locks the slot one mutex" do expect { serialize }.to change { slot_one_mutex_locked? }.from(false).to(true) end - it 'unlocks the slot two mutex' do + it "unlocks the slot two mutex" do expect { serialize }.to change { slot_two_mutex_locked? }.from(true).to(false) end end - context 'when slot two was the active slot' do + context "when slot two was the active slot" do before do # Trigger serialization once, so that active slots get flipped stack_recorder.serialize end - it 'sets slot one as the active slot' do + it "sets slot one as the active slot" do expect { serialize }.to change { active_slot }.from(2).to(1) end - it 'unlocks the slot one mutex' do + it "unlocks the slot one mutex" do expect { serialize }.to change { slot_one_mutex_locked? }.from(true).to(false) end - it 'locks the slot two mutex' do + it "locks the slot two mutex" do expect { serialize }.to change { slot_two_mutex_locked? }.from(false).to(true) end end end - context 'when the profile is empty' do - it 'uses the current time as the start and finish time' do + context "when the profile is empty" do + it "uses the current time as the start and finish time" do before_serialize = Time.now.utc serialize after_serialize = Time.now.utc @@ -125,7 +135,7 @@ def slot_two_mutex_locked? expect(start).to be <= finish end - describe 'profile types configuration' do + describe "profile types configuration" do let(:cpu_time_enabled) { true } let(:alloc_samples_enabled) { true } let(:heap_samples_enabled) { true } @@ -133,87 +143,87 @@ def slot_two_mutex_locked? let(:timeline_enabled) { true } let(:all_profile_types) do { - 'cpu-time' => 'nanoseconds', - 'cpu-samples' => 'count', - 'wall-time' => 'nanoseconds', - 'alloc-samples' => 'count', - 'alloc-samples-unscaled' => 'count', - 'heap-live-samples' => 'count', - 'heap-live-size' => 'bytes', - 'timeline' => 'nanoseconds', + "cpu-time" => "nanoseconds", + "cpu-samples" => "count", + "wall-time" => "nanoseconds", + "alloc-samples" => "count", + "alloc-samples-unscaled" => "count", + "heap-live-samples" => "count", + "heap-live-size" => "bytes", + "timeline" => "nanoseconds", } end def profile_types_without(*types) result = all_profile_types.dup - types.each { |type| result.delete(type) { raise 'Missing key' } } + types.each { |type| result.delete(type) { raise "Missing key" } } result end - context 'when all profile types are enabled' do - it 'returns a pprof with the configured sample types' do + context "when all profile types are enabled" do + it "returns a pprof with the configured sample types" do expect(sample_types_from(decoded_profile)).to eq(all_profile_types) end end - context 'when cpu-time is disabled' do + context "when cpu-time is disabled" do let(:cpu_time_enabled) { false } - it 'returns a pprof without the cpu-type type' do - expect(sample_types_from(decoded_profile)).to eq(profile_types_without('cpu-time')) + it "returns a pprof without the cpu-type type" do + expect(sample_types_from(decoded_profile)).to eq(profile_types_without("cpu-time")) end end - context 'when alloc-samples is disabled' do + context "when alloc-samples is disabled" do let(:alloc_samples_enabled) { false } - it 'returns a pprof without the alloc-samples type' do + it "returns a pprof without the alloc-samples type" do expect(sample_types_from(decoded_profile)) - .to eq(profile_types_without('alloc-samples', 'alloc-samples-unscaled')) + .to eq(profile_types_without("alloc-samples", "alloc-samples-unscaled")) end end - context 'when heap-live-samples is disabled' do + context "when heap-live-samples is disabled" do let(:heap_samples_enabled) { false } - it 'returns a pprof without the heap-live-samples type' do - expect(sample_types_from(decoded_profile)).to eq(profile_types_without('heap-live-samples')) + it "returns a pprof without the heap-live-samples type" do + expect(sample_types_from(decoded_profile)).to eq(profile_types_without("heap-live-samples")) end end - context 'when heap-live-size is disabled' do + context "when heap-live-size is disabled" do let(:heap_size_enabled) { false } - it 'returns a pprof without the heap-live-size type' do - expect(sample_types_from(decoded_profile)).to eq(profile_types_without('heap-live-size')) + it "returns a pprof without the heap-live-size type" do + expect(sample_types_from(decoded_profile)).to eq(profile_types_without("heap-live-size")) end end - context 'when timeline is disabled' do + context "when timeline is disabled" do let(:timeline_enabled) { false } - it 'returns a pprof without the timeline type' do - expect(sample_types_from(decoded_profile)).to eq(profile_types_without('timeline')) + it "returns a pprof without the timeline type" do + expect(sample_types_from(decoded_profile)).to eq(profile_types_without("timeline")) end end - context 'when all optional types are disabled' do + context "when all optional types are disabled" do let(:cpu_time_enabled) { false } let(:alloc_samples_enabled) { false } let(:heap_samples_enabled) { false } let(:heap_size_enabled) { false } let(:timeline_enabled) { false } - it 'returns a pprof without the optional types' do + it "returns a pprof without the optional types" do expect(sample_types_from(decoded_profile)).to eq( - 'cpu-samples' => 'count', - 'wall-time' => 'nanoseconds', + "cpu-samples" => "count", + "wall-time" => "nanoseconds", ) end end end - it 'returns an empty pprof' do + it "returns an empty pprof" do expect(decoded_profile).to have_attributes( sample: [], mapping: [], @@ -228,13 +238,13 @@ def profile_types_without(*types) ) end - it 'returns stats reporting no recorded samples' do + it "returns stats reporting no recorded samples" do expect(profile_stats).to match( hash_including( - :recorded_samples => 0, - :serialization_time_ns => be > 0, - :heap_iteration_prep_time_ns => be >= 0, - :heap_profile_build_time_ns => be >= 0, + recorded_samples: 0, + serialization_time_ns: be > 0, + heap_iteration_prep_time_ns: be >= 0, + heap_profile_build_time_ns: be >= 0, ) ) end @@ -245,57 +255,57 @@ def sample_types_from(decoded_profile) end end - context 'when profile has a sample' do + context "when profile has a sample" do let(:metric_values) do { - 'cpu-time' => 123, - 'cpu-samples' => 456, - 'wall-time' => 789, - 'alloc-samples' => 4242, - 'alloc-samples-unscaled' => 2222, - 'timeline' => 1111, + "cpu-time" => 123, + "cpu-samples" => 456, + "wall-time" => 789, + "alloc-samples" => 4242, + "alloc-samples-unscaled" => 2222, + "timeline" => 1111, } end - let(:labels) { { 'label_a' => 'value_a', 'label_b' => 'value_b', 'state' => 'unknown' }.to_a } + let(:labels) { {"label_a" => "value_a", "label_b" => "value_b", "state" => "unknown"}.to_a } let(:samples) { samples_from_pprof(encoded_pprof) } before do Datadog::Profiling::Collectors::Stack::Testing - ._native_sample(Thread.current, stack_recorder, metric_values, labels, numeric_labels, 400, false) + ._native_sample(Thread.current, stack_recorder, metric_values, labels, numeric_labels) expect(samples.size).to be 1 end - it 'encodes the sample with the metrics provided' do + it "encodes the sample with the metrics provided" do expect(samples.first.values) .to eq( - 'cpu-time': 123, - 'cpu-samples': 456, - 'wall-time': 789, - 'alloc-samples': 4242, - 'alloc-samples-unscaled': 2222, + "cpu-time": 123, + "cpu-samples": 456, + "wall-time": 789, + "alloc-samples": 4242, + "alloc-samples-unscaled": 2222, timeline: 1111, ) end - context 'when disabling an optional profile sample type' do + context "when disabling an optional profile sample type" do let(:cpu_time_enabled) { false } - it 'encodes the sample with the metrics provided, ignoring the disabled ones' do + it "encodes the sample with the metrics provided, ignoring the disabled ones" do expect(samples.first.values).to eq( - 'cpu-samples': 456, 'wall-time': 789, 'alloc-samples': 4242, 'alloc-samples-unscaled': 2222, timeline: 1111 + "cpu-samples": 456, "wall-time": 789, "alloc-samples": 4242, "alloc-samples-unscaled": 2222, timeline: 1111 ) end end - it 'encodes the sample with the labels provided' do + it "encodes the sample with the labels provided" do labels = samples.first.labels labels.delete(:state) # We test this separately! - expect(labels).to eq(label_a: 'value_a', label_b: 'value_b') + expect(labels).to eq(label_a: "value_a", label_b: "value_b") end - it 'encodes a single empty mapping' do + it "encodes a single empty mapping" do expect(decoded_profile.mapping.size).to be 1 expect(decoded_profile.mapping.first).to have_attributes( @@ -312,21 +322,21 @@ def sample_types_from(decoded_profile) ) end - it 'returns stats reporting one recorded sample' do + it "returns stats reporting one recorded sample" do expect(profile_stats).to match( hash_including( - :recorded_samples => 1, - :serialization_time_ns => be > 0, - :heap_iteration_prep_time_ns => be >= 0, - :heap_profile_build_time_ns => be >= 0, + recorded_samples: 1, + serialization_time_ns: be > 0, + heap_iteration_prep_time_ns: be >= 0, + heap_profile_build_time_ns: be >= 0, ) ) end end - context 'when sample is invalid' do - context 'because the local root span id is being defined using a string instead of as a number' do - let(:metric_values) { { 'cpu-time' => 123, 'cpu-samples' => 456, 'wall-time' => 789 } } + context "when sample is invalid" do + context "because the local root span id is being defined using a string instead of as a number" do + let(:metric_values) { {"cpu-time" => 123, "cpu-samples" => 456, "wall-time" => 789} } it do # We're using `_native_sample` here to test the behavior of `record_sample` in `stack_recorder.c` @@ -335,27 +345,25 @@ def sample_types_from(decoded_profile) Thread.current, stack_recorder, metric_values, - { 'local root span id' => 'incorrect', 'state' => 'unknown' }.to_a, + {"local root span id" => "incorrect", "state" => "unknown"}.to_a, [], - 400, - false, ) end.to raise_error(ArgumentError) end end end - describe 'trace endpoint behavior' do - let(:metric_values) { { 'cpu-time' => 101, 'cpu-samples' => 1, 'wall-time' => 789 } } + describe "trace endpoint behavior" do + let(:metric_values) { {"cpu-time" => 101, "cpu-samples" => 1, "wall-time" => 789} } let(:samples) { samples_from_pprof(encoded_pprof) } - it 'includes the endpoint for all matching samples taken before and after recording the endpoint' do - local_root_span_id_with_endpoint = { 'local root span id' => 123 } - local_root_span_id_without_endpoint = { 'local root span id' => 456 } + it "includes the endpoint for all matching samples taken before and after recording the endpoint" do + local_root_span_id_with_endpoint = {"local root span id" => 123} + local_root_span_id_without_endpoint = {"local root span id" => 456} sample = proc do |numeric_labels = {}| Datadog::Profiling::Collectors::Stack::Testing._native_sample( - Thread.current, stack_recorder, metric_values, { 'state' => 'unknown' }.to_a, numeric_labels.to_a, 400, false + Thread.current, stack_recorder, metric_values, {"state" => "unknown"}.to_a, numeric_labels.to_a ) end @@ -363,7 +371,7 @@ def sample_types_from(decoded_profile) sample.call(local_root_span_id_without_endpoint) sample.call(local_root_span_id_with_endpoint) - described_class::Testing._native_record_endpoint(stack_recorder, 123, 'recorded-endpoint') + described_class::Testing._native_record_endpoint(stack_recorder, 123, "recorded-endpoint") sample.call sample.call(local_root_span_id_without_endpoint) @@ -374,33 +382,40 @@ def sample_types_from(decoded_profile) labels_without_state = proc { |labels| labels.reject { |key| key == :state } } # Other samples have not been changed - expect(samples.select { |it| labels_without_state.call(it[:labels]).empty? }).to have(2).items + expect(samples.select { |it| labels_without_state.call(it.labels).empty? }).to have(2).items expect( samples.select do |it| - labels_without_state.call(it[:labels]) == { :'local root span id' => 456 } + labels_without_state.call(it.labels) == {"local root span id": 456} end ).to have(2).items # Matching samples taken before and after recording the endpoint have been changed expect( samples.select do |it| - labels_without_state.call(it[:labels]) == - { :'local root span id' => 123, :'trace endpoint' => 'recorded-endpoint' } + labels_without_state.call(it.labels) == + {"local root span id": 123, "trace endpoint": "recorded-endpoint"} end ).to have(2).items end end - describe 'heap samples and sizes' do + describe "heap samples and sizes" do let(:sample_rate) { 50 } let(:metric_values) do - { 'cpu-time' => 101, 'cpu-samples' => 1, 'wall-time' => 789, 'alloc-samples' => sample_rate, 'timeline' => 42 } + { + "cpu-time" => 101, + "cpu-samples" => 1, + "wall-time" => 789, + "alloc-samples" => sample_rate, + "timeline" => 42, + "heap_sample" => true, + } end - let(:labels) { { 'label_a' => 'value_a', 'label_b' => 'value_b', 'state' => 'unknown' }.to_a } + let(:labels) { {"label_a" => "value_a", "label_b" => "value_b", "state" => "unknown"}.to_a } - let(:a_string) { 'a beautiful string' } + let(:a_string) { "a beautiful string" } let(:an_array) { (1..100).to_a.compact } - let(:a_hash) { { 'a' => 1, 'b' => '2', 'c' => true, 'd' => Object.new } } + let(:a_hash) { {"a" => 1, "b" => "2", "c" => true, "d" => Object.new} } let(:samples) { samples_from_pprof(encoded_pprof) } @@ -408,19 +423,19 @@ def sample_allocation(obj) # Heap sampling currently requires this 2-step process to first pass data about the allocated object... described_class::Testing._native_track_object(stack_recorder, obj, sample_rate, obj.class.name) Datadog::Profiling::Collectors::Stack::Testing - ._native_sample(Thread.current, stack_recorder, metric_values, labels, numeric_labels, 400, false) + ._native_sample(Thread.current, stack_recorder, metric_values, labels, numeric_labels) end before do allocations = [a_string, an_array, "a fearsome interpolated string: #{sample_rate}", (-10..-1).to_a, a_hash, - { 'z' => -1, 'y' => '-2', 'x' => false }, Object.new] + {"z" => -1, "y" => "-2", "x" => false}, Object.new] @num_allocations = 0 allocations.each_with_index do |obj, i| # Sample allocations with 2 distinct stacktraces if i.even? - sample_allocation(obj) # rubocop:disable Style/IdenticalConditionalBranches + sample_allocation(obj) # standard:disable Style/IdenticalConditionalBranches else # rubocop:disable Lint/DuplicateBranch - sample_allocation(obj) # rubocop:disable Style/IdenticalConditionalBranches + sample_allocation(obj) # standard:disable Style/IdenticalConditionalBranches end @num_allocations += 1 GC.start # Force each allocation to be done in its own GC epoch for interesting GC age labels @@ -439,7 +454,7 @@ def sample_allocation(obj) # * Allocate some more stuff and clear again # * Do another GC allocations = ["another fearsome interpolated string: #{sample_rate}", (-20..-10).to_a, - { 'a' => 1, 'b' => '2', 'c' => true }, Object.new] + {"a" => 1, "b" => "2", "c" => true}, Object.new] allocations.clear GC.start end @@ -448,67 +463,67 @@ def sample_allocation(obj) # This is here to facilitate troubleshooting when this test fails. Otherwise # it's very hard to understand what may be happening. if example.exception - puts('Heap recorder debugging info:') + puts("Heap recorder debugging info:") puts(described_class::Testing._native_debug_heap_recorder(stack_recorder)) end end - context 'when disabled' do + context "when disabled" do let(:heap_samples_enabled) { false } let(:heap_size_enabled) { false } - it 'are ommitted from the profile' do + it "are ommitted from the profile" do # We sample from 2 distinct locations expect(samples.size).to eq(2) - expect(samples.select { |s| s.values.key?('heap-live-samples') }).to be_empty - expect(samples.select { |s| s.values.key?('heap-live-size') }).to be_empty + expect(samples.select { |s| s.values.key?("heap-live-samples") }).to be_empty + expect(samples.select { |s| s.values.key?("heap-live-size") }).to be_empty end end - context 'when enabled' do + context "when enabled" do let(:heap_samples_enabled) { true } let(:heap_size_enabled) { true } let(:heap_samples) do - samples.select { |s| s.value?(:'heap-live-samples') } + samples.select { |s| s.value?(:"heap-live-samples") } end let(:non_heap_samples) do - samples.reject { |s| s.value?(:'heap-live-samples') } + samples.reject { |s| s.value?(:"heap-live-samples") } end before do - skip 'Heap profiling is only supported on Ruby >= 2.7' if RUBY_VERSION < '2.7' + skip "Heap profiling is only supported on Ruby >= 2.7" if RUBY_VERSION < "2.7" end - it 'include the stack and sample counts for the objects still left alive' do + it "include the stack and sample counts for the objects still left alive" do # There should be 3 different allocation class labels so we expect 3 different heap samples expect(heap_samples.size).to eq(3) - expect(heap_samples.map { |s| s.labels[:'allocation class'] }).to include('String', 'Array', 'Hash') - expect(heap_samples.map(&:labels)).to all(match(hash_including(:'gc gen age' => be_a(Integer).and(be >= 0)))) + expect(heap_samples.map { |s| s.labels[:"allocation class"] }).to include("String", "Array", "Hash") + expect(heap_samples.map(&:labels)).to all(match(hash_including("gc gen age": be_a(Integer).and(be >= 0)))) end - it 'include accurate object sizes' do - string_sample = heap_samples.find { |s| s.labels[:'allocation class'] == 'String' } - expect(string_sample.values[:'heap-live-size']).to eq(ObjectSpace.memsize_of(a_string) * sample_rate) + it "include accurate object sizes" do + string_sample = heap_samples.find { |s| s.labels[:"allocation class"] == "String" } + expect(string_sample.values[:"heap-live-size"]).to eq(ObjectSpace.memsize_of(a_string) * sample_rate) - array_sample = heap_samples.find { |s| s.labels[:'allocation class'] == 'Array' } - expect(array_sample.values[:'heap-live-size']).to eq(ObjectSpace.memsize_of(an_array) * sample_rate) + array_sample = heap_samples.find { |s| s.labels[:"allocation class"] == "Array" } + expect(array_sample.values[:"heap-live-size"]).to eq(ObjectSpace.memsize_of(an_array) * sample_rate) - hash_sample = heap_samples.find { |s| s.labels[:'allocation class'] == 'Hash' } - expect(hash_sample.values[:'heap-live-size']).to eq(ObjectSpace.memsize_of(a_hash) * sample_rate) + hash_sample = heap_samples.find { |s| s.labels[:"allocation class"] == "Hash" } + expect(hash_sample.values[:"heap-live-size"]).to eq(ObjectSpace.memsize_of(a_hash) * sample_rate) end - it 'include accurate object ages' do - string_sample = heap_samples.find { |s| s.labels[:'allocation class'] == 'String' } - string_age = string_sample.labels[:'gc gen age'] + it "include accurate object ages" do + string_sample = heap_samples.find { |s| s.labels[:"allocation class"] == "String" } + string_age = string_sample.labels[:"gc gen age"] - array_sample = heap_samples.find { |s| s.labels[:'allocation class'] == 'Array' } - array_age = array_sample.labels[:'gc gen age'] + array_sample = heap_samples.find { |s| s.labels[:"allocation class"] == "Array" } + array_age = array_sample.labels[:"gc gen age"] - hash_sample = heap_samples.find { |s| s.labels[:'allocation class'] == 'Hash' } - hash_age = hash_sample.labels[:'gc gen age'] + hash_sample = heap_samples.find { |s| s.labels[:"allocation class"] == "Hash" } + hash_age = hash_sample.labels[:"gc gen age"] unique_sorted_ages = [string_age, array_age, hash_age].uniq.sort # Expect all ages to be different and to be in the reverse order of allocation @@ -525,7 +540,7 @@ def sample_allocation(obj) expect(hash_age).to be_between(4, 5) end - it 'keeps on reporting accurate samples for other profile types' do + it "keeps on reporting accurate samples for other profile types" do expect(non_heap_samples.size).to eq(2) summed_values = {} @@ -538,15 +553,17 @@ def sample_allocation(obj) # We use the same metric_values in all sample calls in before. So we'd expect # the summed values to match `@num_allocations * metric_values[profile-type]` # for each profile-type there in. - expected_summed_values = { 'heap-live-samples': 0, 'heap-live-size': 0, 'alloc-samples-unscaled': 0 } + expected_summed_values = {"heap-live-samples": 0, "heap-live-size": 0, "alloc-samples-unscaled": 0} metric_values.each_pair do |k, v| + next if k == "heap_sample" # This is not a metric, ignore it + expected_summed_values[k.to_sym] = v * @num_allocations end expect(summed_values).to eq(expected_summed_values) end - it 'does not include samples with age = 0' do + it "does not include samples with age = 0" do test_num_allocated_objects = 123 test_num_age_bigger_0 = 57 live_objects = Array.new(test_num_allocated_objects) @@ -576,7 +593,7 @@ def sample_allocation(obj) # Grab all exported heap samples and sum their values sum_exported_heap_samples = heap_samples .select { |s| s.has_location?(path: __FILE__, line: sample_line) } - .map { |s| s.values[:'heap-live-samples'] } + .map { |s| s.values[:"heap-live-samples"] } .reduce(:+) # Multiply expectation by sample_rate to be able to compare with weighted samples @@ -607,10 +624,10 @@ def sample_allocation(obj) relevant_sample = heap_samples.find { |s| s.has_location?(path: __FILE__, line: sample_line) } expect(relevant_sample).not_to be nil - expect(relevant_sample.values[:'heap-live-samples']).to eq test_num_allocated_object * sample_rate + expect(relevant_sample.values[:"heap-live-samples"]).to eq test_num_allocated_object * sample_rate end - it 'contribute to recorded samples stats' do + it "contribute to recorded samples stats" do test_num_allocated_object = 123 live_objects = Array.new(test_num_allocated_object) @@ -628,30 +645,30 @@ def sample_allocation(obj) expect(profile_stats).to match( hash_including( - :recorded_samples => expected_allocation_samples + expected_heap_samples, - :heap_iteration_prep_time_ns => be > 0, - :heap_profile_build_time_ns => be > 0, + recorded_samples: expected_allocation_samples + expected_heap_samples, + heap_iteration_prep_time_ns: be > 0, + heap_profile_build_time_ns: be > 0, ) ) end - context 'with custom heap sample rate configuration' do + context "with custom heap sample rate configuration" do let(:heap_sample_every) { 2 } - it 'only keeps track of some allocations' do + it "only keeps track of some allocations" do # By only sampling every 2nd allocation we only track the odd objects which means our array # should be the only heap sample captured (string is index 0, array is index 1, hash is 4) expect(heap_samples.size).to eq(1) heap_sample = heap_samples.first - expect(heap_sample.labels[:'allocation class']).to eq('Array') - expect(heap_sample.values[:'heap-live-samples']).to eq(sample_rate * heap_sample_every) + expect(heap_sample.labels[:"allocation class"]).to eq("Array") + expect(heap_sample.values[:"heap-live-samples"]).to eq(sample_rate * heap_sample_every) end end - context 'on Rubies supporting rb_gc_force_recycle' do + context "on Rubies supporting rb_gc_force_recycle" do before do - skip 'rb_gc_force_recycle is a no-op in current Ruby version' if RUBY_VERSION >= '3.1' + skip "rb_gc_force_recycle is a no-op in current Ruby version" if RUBY_VERSION >= "3.1" @recycled_sample_allocation_line = 0 end @@ -712,16 +729,14 @@ def create_obj_in_recycled_slot(should_sample_original: false) # than expand heap pages and when that happens we'd stop iterating. 1000.times { objs << Object.new } recycled_obj_ids.each do |obj_id| - begin - return ObjectSpace._id2ref(obj_id) - rescue RangeError # rubocop:disable Lint/SuppressedException - end + return ObjectSpace._id2ref(obj_id) + rescue RangeError # rubocop:disable Lint/SuppressedException end end - raise 'could not allocate an object in a recycled slot' + raise "could not allocate an object in a recycled slot" end - it 'enforces seen id flag on objects on recycled slots that get sampled' do + it "enforces seen id flag on objects on recycled slots that get sampled" do recycled_obj = create_obj_in_recycled_slot expect(has_seen_id_flag(recycled_obj)).to be false @@ -731,7 +746,7 @@ def create_obj_in_recycled_slot(should_sample_original: false) expect(has_seen_id_flag(recycled_obj)).to be true end - it 'enforces seen id flag on untracked objects that replace tracked recycled objects' do + it "enforces seen id flag on untracked objects that replace tracked recycled objects" do recycled_obj = create_obj_in_recycled_slot(should_sample_original: true) expect(has_seen_id_flag(recycled_obj)).to be false @@ -741,7 +756,7 @@ def create_obj_in_recycled_slot(should_sample_original: false) expect(has_seen_id_flag(recycled_obj)).to be true end - it 'correctly handles lifecycle of objects on recycled slots that get sampled' do + it "correctly handles lifecycle of objects on recycled slots that get sampled" do recycled_obj = create_obj_in_recycled_slot sample_allocation(recycled_obj) @@ -753,13 +768,13 @@ def create_obj_in_recycled_slot(should_sample_original: false) expect(recycled_sample).not_to be nil end - it 'supports allocation samples with duplicate ids due to force recycling' do + it "supports allocation samples with duplicate ids due to force recycling" do recycled_obj = create_obj_in_recycled_slot(should_sample_original: true) expect { sample_allocation(recycled_obj) }.not_to raise_error end - it 'raises on allocation samples with duplicate ids that are not due to force recycling' do + it "raises on allocation samples with duplicate ids that are not due to force recycling" do obj = Object.new sample_allocation(obj) @@ -767,7 +782,7 @@ def create_obj_in_recycled_slot(should_sample_original: false) expect { sample_allocation(obj) }.to raise_error(/supposed to be unique/) end - it 'can detect implicit frees due to slot recycling' do + it "can detect implicit frees due to slot recycling" do live_objects = [] live_objects << create_obj_in_recycled_slot(should_sample_original: true) @@ -780,28 +795,162 @@ def create_obj_in_recycled_slot(should_sample_original: false) expect(relevant_sample).to be nil end end + + # NOTE: This is a regression test that exceptions in end_heap_allocation_recording_with_rb_protect are safely + # handled by the stack_recorder. + context "when the heap sampler raises an exception during _native_sample" do + it "propagates the exception" do + expect do + Datadog::Profiling::Collectors::Stack::Testing + ._native_sample(Thread.current, stack_recorder, metric_values, labels, numeric_labels) + end.to raise_error(RuntimeError, /Ended a heap recording/) + end + + it "does not keep the active slot mutex locked" do + expect(active_slot).to be 1 + expect(slot_one_mutex_locked?).to be false + expect(slot_two_mutex_locked?).to be true + + begin + Datadog::Profiling::Collectors::Stack::Testing + ._native_sample(Thread.current, stack_recorder, metric_values, labels, numeric_labels) + rescue # rubocop:disable Lint/SuppressedException + end + + expect(active_slot).to be 1 + expect(slot_one_mutex_locked?).to be false + expect(slot_two_mutex_locked?).to be true + end + end + + describe "#recorder_after_gc_step" do + def sample_and_clear + test_object = Object.new + test_object_id = test_object.object_id + sample_allocation(test_object) + # Let's replace the test_object reference with another object, so that the original one can be GC'd + test_object = Object.new # rubocop:disable Lint/UselessAssignment + GC.start + test_object_id + end + + before do + GC.disable + + @object_ids = Array.new(4) { sample_and_clear } + end + + after { GC.enable } + + context 'when heap_clean_after_gc_enabled is true' do + let(:heap_clean_after_gc_enabled) { true } + + it "clears young dead objects with age 1 and 2, but not older objects" do + # Every object is still being tracked at this point + expect(@object_ids.map { |it| is_object_recorded?(it) }).to eq [true, true, true, true] + + recorder_after_gc_step + + # Young objects should no longer be tracked, but older objects are still kept + expect(@object_ids.map { |it| is_object_recorded?(it) }).to eq [true, true, false, false] + + stack_recorder.serialize + + # Older objects are only cleared at serialization time + expect(@object_ids.map { |it| is_object_recorded?(it) }).to eq [false, false, false, false] + end + + context "when there's a heap serialization ongoing" do + it "does nothing" do + described_class::Testing._native_start_fake_slow_heap_serialization(stack_recorder) + + test_object_id = sample_and_clear + + expect do + described_class::Testing._native_heap_recorder_reset_last_update(stack_recorder) + recorder_after_gc_step + end.to_not change { is_object_recorded?(test_object_id) }.from(true) + + described_class::Testing._native_end_fake_slow_heap_serialization(stack_recorder) + + # Sanity: after serialization finishes, we can finally clear it + expect do + described_class::Testing._native_heap_recorder_reset_last_update(stack_recorder) + recorder_after_gc_step + end.to change { is_object_recorded?(test_object_id) }.from(true).to(false) + end + end + + it "enforces a minimum time between heap updates" do + test_object_id_1 = sample_and_clear + + expect { recorder_after_gc_step }.to change { is_object_recorded?(test_object_id_1) }.from(true).to(false) + + test_object_id_2 = sample_and_clear + + expect { recorder_after_gc_step }.to_not change { is_object_recorded?(test_object_id_2) }.from(true) + end + + it "does not apply the minimum time between heap updates when serializing" do + test_object_id_1 = sample_and_clear + + expect { recorder_after_gc_step }.to change { is_object_recorded?(test_object_id_1) }.from(true).to(false) + + test_object_id_2 = sample_and_clear + + expect { recorder_after_gc_step }.to_not change { is_object_recorded?(test_object_id_2) }.from(true) + + expect { serialize }.to change { is_object_recorded?(test_object_id_2) }.from(true).to(false) + end + end + + context 'when heap_clean_after_gc_enabled is false' do + let(:heap_clean_after_gc_enabled) { false } + + it "does nothing" do + # Every object is still being tracked at this point + expect(@object_ids.map { |it| is_object_recorded?(it) }).to eq [true, true, true, true] + + recorder_after_gc_step + + # No change -- all objects are still being tracked + expect(@object_ids.map { |it| is_object_recorded?(it) }).to eq [true, true, true, true] + + stack_recorder.serialize + + # All objects are finally cleared + expect(@object_ids.map { |it| is_object_recorded?(it) }).to eq [false, false, false, false] + end + end + end end end - context 'when there is a failure during serialization' do + context "when there is a failure during serialization" do before do allow(Datadog.logger).to receive(:error) # Real failures in serialization are hard to trigger, so we're using a mock failure instead - expect(described_class).to receive(:_native_serialize).and_return([:error, 'test error message']) + expect(described_class).to receive(:_native_serialize).and_return([:error, "test error message"]) end it { is_expected.to be nil } - it 'logs an error message' do + it "logs an error message" do expect(Datadog.logger).to receive(:error).with(/test error message/) serialize end + + it "sends a telemetry log" do + expect(Datadog::Core::Telemetry::Logger).to receive(:error).with("Failed to serialize profiling data") + + serialize + end end - context 'when serializing multiple times in a row' do - it 'sets the start time of a profile to be >= the finish time of the previous profile' do + context "when serializing multiple times in a row" do + it "sets the start time of a profile to be >= the finish time of the previous profile" do start1, finish1, = stack_recorder.serialize start2, finish2, = stack_recorder.serialize start3, finish3, = stack_recorder.serialize @@ -814,7 +963,7 @@ def create_obj_in_recycled_slot(should_sample_original: false) expect(start4).to be <= finish4 end - it 'sets the start time of the next profile to be >= the previous serialization call' do + it "sets the start time of the next profile to be >= the previous serialization call" do stack_recorder before_serialize = Time.now.utc @@ -827,65 +976,65 @@ def create_obj_in_recycled_slot(should_sample_original: false) end end - describe '#serialize!' do + describe "#serialize!" do subject(:serialize!) { stack_recorder.serialize! } - context 'when serialization succeeds' do + context "when serialization succeeds" do before do expect(described_class).to receive(:_native_serialize).and_return([:ok, %w[start finish serialized-data]]) end - it { is_expected.to eq('serialized-data') } + it { is_expected.to eq("serialized-data") } end - context 'when serialization fails' do - before { expect(described_class).to receive(:_native_serialize).and_return([:error, 'test error message']) } + context "when serialization fails" do + before { expect(described_class).to receive(:_native_serialize).and_return([:error, "test error message"]) } it { expect { serialize! }.to raise_error(RuntimeError, /test error message/) } end end - describe '#reset_after_fork' do + describe "#reset_after_fork" do subject(:reset_after_fork) { stack_recorder.reset_after_fork } - context 'when slot one was the active slot' do - it 'keeps slot one as the active slot' do + context "when slot one was the active slot" do + it "keeps slot one as the active slot" do expect(active_slot).to be 1 end - it 'keeps the slot one mutex unlocked' do + it "keeps the slot one mutex unlocked" do expect(slot_one_mutex_locked?).to be false end - it 'keeps the slot two mutex locked' do + it "keeps the slot two mutex locked" do expect(slot_two_mutex_locked?).to be true end end - context 'when slot two was the active slot' do + context "when slot two was the active slot" do before { stack_recorder.serialize } - it 'sets slot one as the active slot' do + it "sets slot one as the active slot" do expect { reset_after_fork }.to change { active_slot }.from(2).to(1) end - it 'unlocks the slot one mutex' do + it "unlocks the slot one mutex" do expect { reset_after_fork }.to change { slot_one_mutex_locked? }.from(true).to(false) end - it 'locks the slot two mutex' do + it "locks the slot two mutex" do expect { reset_after_fork }.to change { slot_two_mutex_locked? }.from(false).to(true) end end - context 'when profile has a sample' do - let(:metric_values) { { 'cpu-time' => 123, 'cpu-samples' => 456, 'wall-time' => 789 } } - let(:labels) { { 'label_a' => 'value_a', 'label_b' => 'value_b', 'state' => 'unknown' }.to_a } + context "when profile has a sample" do + let(:metric_values) { {"cpu-time" => 123, "cpu-samples" => 456, "wall-time" => 789} } + let(:labels) { {"label_a" => "value_a", "label_b" => "value_b", "state" => "unknown"}.to_a } - it 'makes the next calls to serialize return no data' do + it "makes the next calls to serialize return no data" do # Add some data Datadog::Profiling::Collectors::Stack::Testing - ._native_sample(Thread.current, stack_recorder, metric_values, labels, numeric_labels, 400, false) + ._native_sample(Thread.current, stack_recorder, metric_values, labels, numeric_labels) # Sanity check: validate that data is there, to avoid the test passing because of other issues sanity_check_samples = samples_from_pprof(stack_recorder.serialize[2]) @@ -893,7 +1042,7 @@ def create_obj_in_recycled_slot(should_sample_original: false) # Add some data, again Datadog::Profiling::Collectors::Stack::Testing - ._native_sample(Thread.current, stack_recorder, metric_values, labels, numeric_labels, 400, false) + ._native_sample(Thread.current, stack_recorder, metric_values, labels, numeric_labels) reset_after_fork @@ -903,7 +1052,7 @@ def create_obj_in_recycled_slot(should_sample_original: false) end end - it 'sets the start_time of the active profile to the time of the reset_after_fork' do + it "sets the start_time of the active profile to the time of the reset_after_fork" do stack_recorder # Initialize instance now = Time.now @@ -913,8 +1062,8 @@ def create_obj_in_recycled_slot(should_sample_original: false) end end - describe '#stats' do - it 'returns basic lifetime stats of stack recorder' do + describe "#stats" do + it "returns basic lifetime stats of stack recorder" do num_serializations = 5 num_serializations.times do @@ -925,15 +1074,15 @@ def create_obj_in_recycled_slot(should_sample_original: false) expect(stats).to match( hash_including( - :serialization_successes => num_serializations, - :serialization_failures => 0, + serialization_successes: num_serializations, + serialization_failures: 0, - :serialization_time_ns_min => be > 0, - :serialization_time_ns_max => be > 0, - :serialization_time_ns_avg => be > 0, - :serialization_time_ns_total => be > 0, + serialization_time_ns_min: be > 0, + serialization_time_ns_max: be > 0, + serialization_time_ns_avg: be > 0, + serialization_time_ns_total: be > 0, - :heap_recorder_snapshot => nil, + heap_recorder_snapshot: nil, ) ) @@ -950,19 +1099,19 @@ def create_obj_in_recycled_slot(should_sample_original: false) expect(serialization_time_total).to be_within(1e-4).of(serialization_time_avg * num_serializations) end - context 'with heap profiling enabled' do + context "with heap profiling enabled" do let(:heap_samples_enabled) { true } let(:heap_size_enabled) { true } before do - skip 'Heap profiling is only supported on Ruby >= 2.7' if RUBY_VERSION < '2.7' + skip "Heap profiling is only supported on Ruby >= 2.7" if RUBY_VERSION < "2.7" end after do |example| # This is here to facilitate troubleshooting when this test fails. Otherwise # it's very hard to understand what may be happening. if example.exception - puts('Heap recorder debugging info:') + puts("Heap recorder debugging info:") puts(described_class::Testing._native_debug_heap_recorder(stack_recorder)) end end @@ -970,12 +1119,28 @@ def create_obj_in_recycled_slot(should_sample_original: false) def sample_allocation(obj) # Heap sampling currently requires this 2-step process to first pass data about the allocated object... described_class::Testing._native_track_object(stack_recorder, obj, 1, obj.class.name) - Datadog::Profiling::Collectors::Stack::Testing - ._native_sample(Thread.current, stack_recorder, { 'alloc-samples' => 1 }, [], [], 400, false) + Datadog::Profiling::Collectors::Stack::Testing._native_sample( + Thread.current, stack_recorder, {"alloc-samples" => 1, "heap_sample" => true}, [], [], + ) end - it 'includes heap recorder snapshot' do + it "includes heap recorder snapshot" do live_objects = [] + + # NOTE: We've seen some flakiness in this spec on Ruby 3.3 when the `dead_heap_samples` were allocated after + # the `live_heap_samples`. Our working theory is that this is something like + # https://bugs.ruby-lang.org/issues/19460 biting us again (e.g. search for this URL on this file and you'll see + # a similar comment). Specifically, it looks like in some situations Ruby still keeps a reference to the last + # allocated object _somewhere_, which makes the GC not collect that object, even though there are no actual + # references to it. Because the GC doesn't clean the object, the heap recorder still keeps its record alive, + # and so the test causes flakiness. + # See also the discussion on commit 2fc03d5ae5860d4e9a75ce3825fba95ed288a1 for an earlier attempt at fixing this. + dead_heap_samples = 10 + dead_heap_samples.times do |_i| + obj = [] + sample_allocation(obj) + end + live_heap_samples = 6 live_heap_samples.times do |i| obj = Object.new @@ -983,11 +1148,6 @@ def sample_allocation(obj) sample_allocation(obj) live_objects << obj end - dead_heap_samples = 10 - dead_heap_samples.times do |_i| - obj = Object.new - sample_allocation(obj) - end GC.start # All dead objects above will be GCed, all living strings will have age = 0 begin @@ -1006,19 +1166,19 @@ def sample_allocation(obj) expect(stack_recorder.stats).to match( hash_including( - :heap_recorder_snapshot => hash_including( + heap_recorder_snapshot: hash_including( # Records for dead objects should have gone away - :num_object_records => live_heap_samples + age0_heap_samples, + num_object_records: live_heap_samples + age0_heap_samples, # We allocate from 3 different locations in this test but only 2 # of them are for objects which should be alive at serialization time - :num_heap_records => 2, + num_heap_records: 2, # The update done during serialization should reflect the # state of the tracked heap objects at that time - :last_update_objects_alive => live_heap_samples, - :last_update_objects_dead => dead_heap_samples, - :last_update_objects_skipped => age0_heap_samples, - :last_update_objects_frozen => live_heap_samples / 2, + last_update_objects_alive: live_heap_samples, + last_update_objects_dead: dead_heap_samples, + last_update_objects_skipped: age0_heap_samples, + last_update_objects_frozen: live_heap_samples / 2, ) ) ) @@ -1026,65 +1186,65 @@ def sample_allocation(obj) end end - describe 'Heap_recorder' do - context 'produces the same hash code for stack-based and location-based keys' do - it 'with empty stacks' do + describe "Heap_recorder" do + context "produces the same hash code for stack-based and location-based keys" do + it "with empty stacks" do described_class::Testing._native_check_heap_hashes([]) end - it 'with single-frame stacks' do + it "with single-frame stacks" do described_class::Testing._native_check_heap_hashes( [ - ['a name', 'a filename', 123] + ["a name", "a filename", 123] ] ) end - it 'with multi-frame stacks' do + it "with multi-frame stacks" do described_class::Testing._native_check_heap_hashes( [ - ['a name', 'a filename', 123], - ['another name', 'anoter filename', 456], + ["a name", "a filename", 123], + ["another name", "anoter filename", 456], ] ) end - it 'with empty names' do + it "with empty names" do described_class::Testing._native_check_heap_hashes( [ - ['', 'a filename', 123], + ["", "a filename", 123], ] ) end - it 'with empty filenames' do + it "with empty filenames" do described_class::Testing._native_check_heap_hashes( [ - ['a name', '', 123], + ["a name", "", 123], ] ) end - it 'with zero lines' do + it "with zero lines" do described_class::Testing._native_check_heap_hashes( [ - ['a name', 'a filename', 0] + ["a name", "a filename", 0] ] ) end - it 'with negative lines' do + it "with negative lines" do described_class::Testing._native_check_heap_hashes( [ - ['a name', 'a filename', -123] + ["a name", "a filename", -123] ] ) end - it 'with biiiiiiig lines' do + it "with biiiiiiig lines" do described_class::Testing._native_check_heap_hashes( [ - ['a name', 'a filename', 4_000_000] + ["a name", "a filename", 4_000_000] ] ) end diff --git a/spec/datadog/profiling/tag_builder_spec.rb b/spec/datadog/profiling/tag_builder_spec.rb index 9f94c2bc3da..bac1fb1933b 100644 --- a/spec/datadog/profiling/tag_builder_spec.rb +++ b/spec/datadog/profiling/tag_builder_spec.rb @@ -1,34 +1,34 @@ -require 'datadog/profiling/tag_builder' +require "datadog/profiling/tag_builder" RSpec.describe Datadog::Profiling::TagBuilder do - describe '.call' do + describe ".call" do let(:settings) { Datadog::Core::Configuration::Settings.new } subject(:call) { described_class.call(settings: settings) } - it 'returns a hash with the tags to be attached to a profile' do + it "returns a hash with the tags to be attached to a profile" do expect(call).to include( - 'host' => Datadog::Core::Environment::Socket.hostname, - 'language' => 'ruby', - 'process_id' => Process.pid.to_s, - 'profiler_version' => start_with('2.'), - 'runtime' => 'ruby', - 'runtime_engine' => RUBY_ENGINE, - 'runtime-id' => Datadog::Core::Environment::Identity.id, - 'runtime_platform' => RUBY_PLATFORM, - 'runtime_version' => RUBY_VERSION, + "host" => Datadog::Core::Environment::Socket.hostname, + "language" => "ruby", + "process_id" => Process.pid.to_s, + "profiler_version" => start_with("2."), + "runtime" => "ruby", + "runtime_engine" => RUBY_ENGINE, + "runtime-id" => Datadog::Core::Environment::Identity.id, + "runtime_platform" => RUBY_PLATFORM, + "runtime_version" => RUBY_VERSION, ) end - describe 'unified service tagging' do + describe "unified service tagging" do [:env, :service, :version].each do |tag| context "when a #{tag} is defined" do before do - settings.send("#{tag}=".to_sym, 'expected_value') + settings.send("#{tag}=".to_sym, "expected_value") end - it 'includes it as a tag' do - expect(call).to include(tag.to_s => 'expected_value') + it "includes it as a tag" do + expect(call).to include(tag.to_s => "expected_value") end end @@ -44,65 +44,65 @@ end end - it 'includes the provided user tags' do - settings.tags = { 'foo' => 'bar' } + it "includes the provided user tags" do + settings.tags = {"foo" => "bar"} - expect(call).to include('foo' => 'bar') + expect(call).to include("foo" => "bar") end - context 'when there is a conflict between user and metadata tags' do - it 'overrides the user-provided tags' do - settings.tags = { 'foo' => 'bar', 'language' => 'python' } + context "when there is a conflict between user and metadata tags" do + it "overrides the user-provided tags" do + settings.tags = {"foo" => "bar", "language" => "python"} - expect(call).to include('foo' => 'bar', 'language' => 'ruby') + expect(call).to include("foo" => "bar", "language" => "ruby") end end - context 'when user tag keys and values are not strings' do - it 'encodes them as strings' do - settings.tags = { :symbol_key => :symbol_value, nil => 'nil key', 'nil value' => nil, 12 => 34 } + context "when user tag keys and values are not strings" do + it "encodes them as strings" do + settings.tags = {:symbol_key => :symbol_value, nil => "nil key", "nil value" => nil, 12 => 34} - expect(call).to include('symbol_key' => 'symbol_value', '' => 'nil key', 'nil value' => '', '12' => '34') + expect(call).to include("symbol_key" => "symbol_value", "" => "nil key", "nil value" => "", "12" => "34") end end - context 'when tagging key or value is not utf-8' do - it 'converts them to utf-8' do - settings.tags = { 'ascii-key'.encode(Encoding::ASCII) => 'ascii-value'.encode(Encoding::ASCII) } + context "when tagging key or value is not utf-8" do + it "converts them to utf-8" do + settings.tags = {"ascii-key".encode(Encoding::ASCII) => "ascii-value".encode(Encoding::ASCII)} result = call result.each do |key, value| expect([key, value]).to all(have_attributes(encoding: Encoding::UTF_8)) end - expect(result).to include('ascii-key' => 'ascii-value') + expect(result).to include("ascii-key" => "ascii-value") end end - describe 'source code integration' do - context 'when git environment is available' do + describe "source code integration" do + context "when git environment is available" do before do allow(Datadog::Core::Environment::Git).to receive(:git_repository_url).and_return( - 'git_repository_url' + "git_repository_url" ) - allow(Datadog::Core::Environment::Git).to receive(:git_commit_sha).and_return('git_commit_sha') + allow(Datadog::Core::Environment::Git).to receive(:git_commit_sha).and_return("git_commit_sha") end - it 'includes the git repository URL and commit SHA' do + it "includes the git repository URL and commit SHA" do expect(call).to include( - 'git.repository_url' => 'git_repository_url', 'git.commit.sha' => 'git_commit_sha' + "git.repository_url" => "git_repository_url", "git.commit.sha" => "git_commit_sha" ) end end - context 'when git environment is not available' do + context "when git environment is not available" do before do allow(Datadog::Core::Environment::Git).to receive(:git_repository_url).and_return(nil) allow(Datadog::Core::Environment::Git).to receive(:git_commit_sha).and_return(nil) end - it 'includes the git repository URL and commit SHA' do - expect(call).to_not include('git.repository_url', 'git.commit.sha') + it "includes the git repository URL and commit SHA" do + expect(call).to_not include("git.repository_url", "git.commit.sha") end end end diff --git a/spec/datadog/profiling/tasks/exec_spec.rb b/spec/datadog/profiling/tasks/exec_spec.rb index 15985e72272..5c064ef2630 100644 --- a/spec/datadog/profiling/tasks/exec_spec.rb +++ b/spec/datadog/profiling/tasks/exec_spec.rb @@ -1,28 +1,28 @@ -require 'spec_helper' -require 'datadog/profiling/tasks/exec' +require "spec_helper" +require "datadog/profiling/tasks/exec" RSpec.describe Datadog::Profiling::Tasks::Exec do subject(:task) { described_class.new(args) } - let(:args) { ['ruby', '-e', '"RUBY_VERSION"'] } + let(:args) { ["ruby", "-e", '"RUBY_VERSION"'] } - describe '::new' do + describe "::new" do it { is_expected.to have_attributes(args: args) } end - describe '#run' do + describe "#run" do subject(:run) { task.run } - let(:result) { double('result') } + let(:result) { double("result") } around do |example| # Make sure RUBYOPT is returned to its original state. - original_opts = ENV['RUBYOPT'] + original_opts = ENV["RUBYOPT"] example.run - ENV['RUBYOPT'] = original_opts + ENV["RUBYOPT"] = original_opts end - context 'when RUBYOPT is not defined' do + context "when RUBYOPT is not defined" do before do # Must stub the call out or test will prematurely terminate. expect(Kernel).to receive(:exec) @@ -30,83 +30,83 @@ .and_return(result) end - it 'runs the task with preloads' do + it "runs the task with preloads" do is_expected.to be(result) # Expect preloading to have been attached task.rubyopts.each do |opt| - expect(ENV['RUBYOPT']).to include(opt) + expect(ENV["RUBYOPT"]).to include(opt) end end end - context 'when RUBYOPT is defined' do + context "when RUBYOPT is defined" do before do # Must stub the call out or test will prematurely terminate. expect(Kernel).to receive(:exec) .with(*args) .and_return(result) - ENV['RUBYOPT'] = start_opts + ENV["RUBYOPT"] = start_opts end - let(:start_opts) { 'start_opts' } + let(:start_opts) { "start_opts" } - it 'runs the task with additional preloads' do + it "runs the task with additional preloads" do is_expected.to be(result) # Expect original RUBYOPT to have been preserved - expect(ENV['RUBYOPT']).to include(start_opts) + expect(ENV["RUBYOPT"]).to include(start_opts) # Expect preloading to have been attached task.rubyopts.each do |opt| - expect(ENV['RUBYOPT']).to include(opt) + expect(ENV["RUBYOPT"]).to include(opt) end end end - context 'when exec fails' do + context "when exec fails" do before do allow(Kernel).to receive(:exit) allow(Kernel).to receive(:warn) end - context 'when command does not exist' do + context "when command does not exist" do before do allow(Kernel).to receive(:exec).and_raise(Errno::ENOENT) end - it 'triggers a VM exit with error code 127' do + it "triggers a VM exit with error code 127" do expect(Kernel).to receive(:exit).with(127) run end - it 'logs an error message' do + it "logs an error message" do expect(Kernel).to receive(:warn) do |message| - expect(message).to include('ddprofrb exec failed') + expect(message).to include("ddprofrb exec failed") end run end end - context 'when command is not executable' do + context "when command is not executable" do [Errno::EACCES, Errno::ENOEXEC].each do |error| context "when exec fails with #{error}" do before do allow(Kernel).to receive(:exec).and_raise(error) end - it 'triggers a VM exit with error code 126' do + it "triggers a VM exit with error code 126" do expect(Kernel).to receive(:exit).with(126) run end - it 'logs an error message' do + it "logs an error message" do expect(Kernel).to receive(:warn) do |message| - expect(message).to include('ddprofrb exec failed') + expect(message).to include("ddprofrb exec failed") end run @@ -117,9 +117,9 @@ end end - describe '#rubyopts' do + describe "#rubyopts" do subject(:rubyopts) { task.rubyopts } - it { is_expected.to eq(['-rdatadog/profiling/preload']) } + it { is_expected.to eq(["-rdatadog/profiling/preload"]) } end end diff --git a/spec/datadog/profiling/tasks/help_spec.rb b/spec/datadog/profiling/tasks/help_spec.rb index 6cf88b336ab..b8cb09424f5 100644 --- a/spec/datadog/profiling/tasks/help_spec.rb +++ b/spec/datadog/profiling/tasks/help_spec.rb @@ -1,13 +1,13 @@ -require 'spec_helper' -require 'datadog/profiling/tasks/help' +require "spec_helper" +require "datadog/profiling/tasks/help" RSpec.describe Datadog::Profiling::Tasks::Help do subject(:task) { described_class.new } - describe '#run' do - it 'prints a help message to stdout' do + describe "#run" do + it "prints a help message to stdout" do expect($stdout).to receive(:puts) do |message| - expect(message).to include('Usage: ddprofrb') + expect(message).to include("Usage: ddprofrb") end task.run diff --git a/spec/datadog/profiling/tasks/setup_spec.rb b/spec/datadog/profiling/tasks/setup_spec.rb index 4b33adc2771..c8ddc729d66 100644 --- a/spec/datadog/profiling/tasks/setup_spec.rb +++ b/spec/datadog/profiling/tasks/setup_spec.rb @@ -1,29 +1,27 @@ -require 'spec_helper' -require 'datadog/profiling/spec_helper' +require "spec_helper" +require "datadog/profiling/spec_helper" -require 'datadog/profiling' -require 'datadog/profiling/tasks/setup' -require 'datadog/profiling/ext/forking' +require "datadog/profiling/tasks/setup" RSpec.describe Datadog::Profiling::Tasks::Setup do subject(:task) { described_class.new } - describe '#run' do + describe "#run" do subject(:run) { task.run } before do described_class::ACTIVATE_EXTENSIONS_ONLY_ONCE.send(:reset_ran_once_state_for_tests) end - it 'actives the forking extension before setting up the at_fork hooks' do - expect(task).to receive(:activate_forking_extensions).ordered + it "actives the forking extension before setting up the at_fork hooks" do + expect(Datadog::Core::Utils::AtForkMonkeyPatch).to receive(:apply!).ordered expect(task).to receive(:setup_at_fork_hooks).ordered run end - it 'only sets up the extensions and hooks once, even across different instances' do - expect_any_instance_of(described_class).to receive(:activate_forking_extensions).once + it "only sets up the extensions and hooks once, even across different instances" do + expect(Datadog::Core::Utils::AtForkMonkeyPatch).to receive(:apply!).once expect_any_instance_of(described_class).to receive(:setup_at_fork_hooks).once task.run @@ -33,145 +31,47 @@ end end - describe '#activate_forking_extensions' do - subject(:activate_forking_extensions) { task.send(:activate_forking_extensions) } - - context 'when forking extensions are supported' do - before do - allow(Datadog::Profiling::Ext::Forking) - .to receive(:supported?) - .and_return(true) - end - - context 'and succeeds' do - it 'applies forking extensions' do - expect(Datadog::Profiling::Ext::Forking).to receive(:apply!) - expect(Datadog.logger).to_not receive(:warn) - activate_forking_extensions - end - end + describe "#setup_at_fork_hooks" do + subject(:setup_at_fork_hooks) { task.send(:setup_at_fork_hooks) } - context 'but fails' do - before do - expect(Datadog::Profiling::Ext::Forking) - .to receive(:apply!) - .and_raise(StandardError) - end + let(:at_fork_hook) do + the_hook = nil - it 'logs a warning' do - expect(Datadog.logger).to receive(:warn) do |&message| - expect(message.call).to include('forking extensions unavailable') - end + expect(Datadog::Core::Utils::AtForkMonkeyPatch).to receive(:at_fork) do |stage, &block| + expect(stage).to be :child - activate_forking_extensions - end + the_hook = block end - end - context 'when forking extensions are not supported' do - before do - allow(Datadog::Profiling::Ext::Forking) - .to receive(:supported?) - .and_return(false) - end + setup_at_fork_hooks - context 'and profiling is enabled' do - before do - allow(Datadog.configuration.profiling) - .to receive(:enabled) - .and_return(true) - end - - it 'skips forking extensions with warning' do - expect(Datadog::Profiling::Ext::Forking).to_not receive(:apply!) - expect(Datadog.logger).to receive(:debug) do |message| - expect(message).to include('forking extensions skipped') - end + expect(the_hook).to_not be nil - activate_forking_extensions - end - end + the_hook + end - context 'and profiling is disabled' do - before do - allow(Datadog.configuration.profiling) - .to receive(:enabled) - .and_return(false) - end + it "sets up an at_fork hook that restarts the profiler" do + expect(Datadog::Profiling).to receive(:start_if_enabled) - it 'skips forking extensions without warning' do - expect(Datadog::Profiling::Ext::Forking).to_not receive(:apply!) - expect(Datadog.logger).to_not receive(:debug) - activate_forking_extensions - end - end + at_fork_hook.call end - end - - describe '#setup_at_fork_hooks' do - subject(:setup_at_fork_hooks) { task.send(:setup_at_fork_hooks) } - context 'when Process#at_fork is available' do + context "when there is an issue starting the profiler" do before do - allow(Process).to receive(:respond_to?).with(:at_fork).and_return(true) - allow(Datadog::Profiling).to receive(:start_if_enabled) - - without_partial_double_verification do - allow(Process).to receive(:at_fork) - end + expect(Datadog::Profiling).to receive(:start_if_enabled).and_raise("Dummy exception") + allow(Datadog.logger).to receive(:warn) # Silence logging during tests end - let(:at_fork_hook) do - the_hook = nil - - without_partial_double_verification do - expect(Process).to receive(:at_fork).with(:child) do |&block| - the_hook = block - end - end - - setup_at_fork_hooks - - the_hook - end - - it 'sets up an at_fork hook that restarts the profiler' do - expect(Datadog::Profiling).to receive(:start_if_enabled) - + it "does not raise any error" do at_fork_hook.call end - context 'when there is an issue starting the profiler' do - before do - expect(Datadog::Profiling).to receive(:start_if_enabled).and_raise('Dummy exception') - allow(Datadog.logger).to receive(:warn) # Silence logging during tests - end - - it 'does not raise any error' do - at_fork_hook.call + it "logs an exception" do + expect(Datadog.logger).to receive(:warn) do |&message| + expect(message.call).to include("Dummy exception") end - it 'logs an exception' do - expect(Datadog.logger).to receive(:warn) do |&message| - expect(message.call).to include('Dummy exception') - end - - at_fork_hook.call - end - end - end - - context 'when #at_fork is not available' do - before do - allow(Process).to receive(:respond_to?).with(:at_fork).and_return(false) - end - - it 'does nothing' do - without_partial_double_verification do - expect(Process).to_not receive(:at_fork) - - setup_at_fork_hooks - end + at_fork_hook.call end end end diff --git a/spec/datadog/profiling/validate_benchmarks_spec.rb b/spec/datadog/profiling/validate_benchmarks_spec.rb index 74cad9583bb..68ce8a59fd2 100644 --- a/spec/datadog/profiling/validate_benchmarks_spec.rb +++ b/spec/datadog/profiling/validate_benchmarks_spec.rb @@ -1,32 +1,34 @@ -require 'datadog/profiling/spec_helper' +require "datadog/profiling/spec_helper" -RSpec.describe 'Profiling benchmarks' do +RSpec.describe "Profiling benchmarks", :memcheck_valgrind_skip do before { skip_if_profiling_not_supported(self) } around do |example| - ClimateControl.modify('VALIDATE_BENCHMARK' => 'true') do + ClimateControl.modify("VALIDATE_BENCHMARK" => "true") do example.run end end benchmarks_to_validate = [ - 'profiler_sample_loop_v2', - 'profiler_http_transport', - 'profiler_sample_serialize', - 'profiler_memory_sample_serialize', - 'profiler_gc', - 'profiler_hold_resume_interruptions', + "profiler_allocation", + "profiler_gc", + "profiler_hold_resume_interruptions", + "profiler_http_transport", + "profiler_memory_sample_serialize", + "profiler_sample_loop_v2", + "profiler_sample_serialize", + "profiler_sample_gvl", ].freeze benchmarks_to_validate.each do |benchmark| describe benchmark do - it('runs without raising errors') { expect_in_fork { load "./benchmarks/#{benchmark}.rb" } } + it("runs without raising errors") { expect_in_fork { load "./benchmarks/#{benchmark}.rb" } } end end # This test validates that we don't forget to add new benchmarks to benchmarks_to_validate - it 'tests all expected benchmarks in the benchmarks folder' do - all_benchmarks = Dir['./benchmarks/profiler_*'].map { |it| it.gsub('./benchmarks/', '').gsub('.rb', '') } + it "tests all expected benchmarks in the benchmarks folder" do + all_benchmarks = Dir["./benchmarks/profiler_*"].map { |it| it.gsub("./benchmarks/", "").gsub(".rb", "") } expect(benchmarks_to_validate).to contain_exactly(*all_benchmarks) end diff --git a/spec/datadog/release_gem_spec.rb b/spec/datadog/release_gem_spec.rb index 5f69f1d5d9c..81fa0e2b8ae 100644 --- a/spec/datadog/release_gem_spec.rb +++ b/spec/datadog/release_gem_spec.rb @@ -35,7 +35,12 @@ |datadog\.gemspec |docker-compose\.yml |shell\.nix + |default\.nix + |flake\.nix + |flake\.lock |static-analysis\.datadog\.yml + |\.standard\.yml + |\.standard_todo\.yml ) $ }x @@ -55,8 +60,10 @@ |gemfiles |integration |tasks + |tools |yard |vendor/rbs + |suppressions )/ }x @@ -90,12 +97,13 @@ file.unlink end - # Lib injection package pipeline should be updated to include the following gems + # Lib injection package pipeline should be updated to include the following gems, + # check `install_datadog_deps.rb` for details expect(gem_version_mapping.keys).to contain_exactly( # This list MUST NOT derive from the `gemspec.dependencies`, # since it is used to alarm when dependencies modified. 'datadog', - 'debase-ruby_core_source', + 'datadog-ruby_core_source', 'ffi', 'libdatadog', 'libddwaf', diff --git a/spec/datadog/single_step_instrument_spec.rb b/spec/datadog/single_step_instrument_spec.rb new file mode 100644 index 00000000000..f4249f919b8 --- /dev/null +++ b/spec/datadog/single_step_instrument_spec.rb @@ -0,0 +1,23 @@ +RSpec.describe 'Single step instrument', skip: !Process.respond_to?(:fork) do + it do + expect_in_fork do + expect_any_instance_of(Object) + .to receive(:require_relative).with('auto_instrument').and_raise(LoadError) + + expect do + load 'datadog/single_step_instrument.rb' + end.to output(/Single step instrumentation failed/).to_stderr + end + end + + it do + expect_in_fork do + expect_any_instance_of(Object) + .to receive(:require_relative).with('auto_instrument').and_raise(StandardError) + + expect do + load 'datadog/single_step_instrument.rb' + end.to output(/Single step instrumentation failed/).to_stderr + end + end +end diff --git a/spec/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation_spec.rb b/spec/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation_spec.rb new file mode 100644 index 00000000000..4927478b802 --- /dev/null +++ b/spec/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation_spec.rb @@ -0,0 +1,60 @@ +require 'datadog/tracing/contrib/support/spec_helper' + +require 'datadog' +require 'datadog/tracing/contrib/action_pack/action_dispatch/instrumentation' + +RSpec.describe Datadog::Tracing::Contrib::ActionPack::ActionDispatch::Instrumentation do + describe '::set_http_route_tags' do + let(:tracing_enabled) { true } + + before do + expect(Datadog::Tracing).to receive(:enabled?).and_return(tracing_enabled) + end + + context 'when tracing is disabled' do + let(:tracing_enabled) { false } + + it 'sets no tags' do + Datadog::Tracing.trace('rack.request') do |_span, trace| + described_class.set_http_route_tags('/users/:id', '/auth') + + expect(trace.send(:meta)).not_to have_key('http.route') + expect(trace.send(:meta)).not_to have_key('http.route.path') + end + end + end + + it 'sets http.route and http.route.path tags on existing trace' do + Datadog::Tracing.trace('rack.request') do |_span, trace| + described_class.set_http_route_tags('/users/:id(.:format)', '/auth') + + expect(trace.send(:meta).fetch('http.route')).to eq('/users/:id') + expect(trace.send(:meta).fetch('http.route.path')).to eq('/auth') + end + end + + it 'sets no http.route.path when script name is nil' do + Datadog::Tracing.trace('rack.request') do |_span, trace| + described_class.set_http_route_tags('/users/:id(.:format)', nil) + + expect(trace.send(:meta).fetch('http.route')).to eq('/users/:id') + expect(trace.send(:meta)).not_to have_key('http.route.path') + end + end + + it 'sets no tags when route spec is nil' do + Datadog::Tracing.trace('rack.request') do |_span, trace| + described_class.set_http_route_tags(nil, '/auth') + + expect(trace.send(:meta)).not_to have_key('http.route') + expect(trace.send(:meta)).not_to have_key('http.route.path') + end + end + + it 'does not create new traces when no active trace is present' do + described_class.set_http_route_tags('/users/:id', '/auth') + + expect(traces).to be_empty + end + end +end diff --git a/spec/datadog/tracing/contrib/action_pack/action_dispatch/journey/router_spec.rb b/spec/datadog/tracing/contrib/action_pack/action_dispatch/journey/router_spec.rb new file mode 100644 index 00000000000..1a7610ca71a --- /dev/null +++ b/spec/datadog/tracing/contrib/action_pack/action_dispatch/journey/router_spec.rb @@ -0,0 +1,249 @@ +require 'datadog/tracing/contrib/support/spec_helper' +require 'datadog/tracing/contrib/action_pack/action_dispatch/instrumentation' + +require 'action_pack' +require 'action_controller/railtie' +require 'action_view/railtie' +require 'rails/test_unit/railtie' + +require 'spec/datadog/tracing/contrib/rails/support/configuration' +require 'spec/datadog/tracing/contrib/rails/support/application' + +RSpec.describe 'Datadog::Tracing::Contrib::ActionPack::ActionDispatch::Journey::Router' do + let(:no_db) { true } + + include Rack::Test::Methods + include_context 'Rails test application' + + after do + Datadog.configuration.tracing[:action_pack].reset! + Datadog.registry[:rack].reset_configuration! + end + + describe '#find_routes' do + before do + engine.routes.append do + get '/sign-in' => 'tokens#create' + end + + auth_engine = engine + rack_status_app = rack_app.new + + rails_test_application.instance.routes.append do + namespace :api, defaults: { format: :json } do + resources :users, only: %i[show] + + mount auth_engine => '/auth' + + match '/status', to: rack_status_app, via: :get + end + + get '/items/:id', to: 'items#by_id', id: /\d+/ + get '/items/:slug', to: 'items#by_slug', id: /(\w-)+/ + + get 'books(/:category)', to: 'books#index' + get 'books/*section/:title', to: 'books#show' + end + end + + let(:rack_app) do + stub_const( + 'RackStatusApp', + Class.new do + def call(_env) + [200, { 'Content-Type' => 'text/plain' }, ['OK']] + end + end + ) + end + + let(:controllers) { [users_controller, items_controller, books_controller] } + + let(:users_controller) do + stub_const( + 'Api::UsersController', + Class.new(ActionController::Base) do + def show + head :ok + end + end + ) + end + + let(:items_controller) do + stub_const( + 'ItemsController', + Class.new(ActionController::Base) do + def by_id + head :ok + end + + def by_slug + head :ok + end + end + ) + end + + let(:books_controller) do + stub_const( + 'BooksController', + Class.new(ActionController::Base) do + def index + head :ok + end + + def show + head :ok + end + end + ) + end + + let(:status_controller) do + stub_const( + 'StatusesController', + Class.new(ActionController::Base) do + def show + head :ok + end + end + ) + end + + let(:engine) do + stub_const('AuthEngine', Module.new) + + stub_const( + 'AuthEngine::TokensController', + Class.new(ActionController::Base) do + def create + head :ok + end + end + ) + + stub_const( + 'AuthEngine::Engine', + Class.new(::Rails::Engine) do + isolate_namespace AuthEngine + end + ) + end + + context 'with default configuration' do + before do + Datadog.configure do |c| + c.tracing.instrument :rack + c.tracing.instrument :action_pack + end + + clear_traces! + end + + it 'sets http.route when requesting a known route' do + get '/api/users/1' + + request_span = spans.first + + expect(last_response).to be_ok + expect(request_span.name).to eq('rack.request') + expect(request_span.tags.fetch('http.route')).to eq('/api/users/:id') + expect(request_span.tags).not_to have_key('http.route.path') + end + + it 'sets http.route correctly for ambiguous route with constraints' do + get '/items/1' + + request_span = spans.first + + expect(last_response).to be_ok + expect(request_span.name).to eq('rack.request') + expect(request_span.tags.fetch('http.route')).to eq('/items/:id') + expect(request_span.tags).not_to have_key('http.route.path') + end + + it 'sets http.route correctly for ambiguous route with constraints, case two' do + get '/items/something' + + request_span = spans.first + + expect(last_response).to be_ok + expect(request_span.name).to eq('rack.request') + expect(request_span.tags.fetch('http.route')).to eq('/items/:slug') + expect(request_span.tags).not_to have_key('http.route.path') + end + + it 'sets http.route correctly for routes with globbing' do + get 'books/some/section/title' + + request_span = spans.first + + expect(last_response).to be_ok + expect(request_span.name).to eq('rack.request') + expect(request_span.tags.fetch('http.route')).to eq('/books/*section/:title') + expect(request_span.tags).not_to have_key('http.route.path') + end + + it 'sets http.route correctly for routes with optional parameter' do + get 'books/some-category' + + request_span = spans.first + + expect(last_response).to be_ok + expect(request_span.name).to eq('rack.request') + expect(request_span.tags.fetch('http.route')).to eq('/books(/:category)') + expect(request_span.tags).not_to have_key('http.route.path') + end + + it 'sets http.route and http.route.path for rails engine routes' do + get '/api/auth/sign-in' + + request_span = spans.first + + expect(last_response).to be_ok + expect(request_span.name).to eq('rack.request') + expect(request_span.tags.fetch('http.route')).to eq('/api/auth/sign-in') + expect(request_span.tags).not_to have_key('http.route.path') + end + + it 'sets http.route for a route to a rack app' do + get '/api/status' + + request_span = spans.first + + expect(last_response).to be_ok + expect(request_span.name).to eq('rack.request') + expect(request_span.tags.fetch('http.route')).to eq('/api/status') + expect(request_span.tags).not_to have_key('http.route.path') + end + + it 'does not set http.route when requesting an unknown route' do + get '/nope' + + request_span = spans.first + + expect(last_response).to be_not_found + expect(request_span.name).to eq('rack.request') + expect(request_span.tags).not_to have_key('http.route') + expect(request_span.tags).not_to have_key('http.route.path') + end + end + + context 'when tracing is disabled' do + before do + Datadog.configure do |c| + c.tracing.enabled = false + end + + clear_traces! + end + + it 'does not set http.route' do + get '/api/users/1' + + expect(traces).to be_empty + end + end + end +end diff --git a/spec/datadog/tracing/contrib/active_record/app.rb b/spec/datadog/tracing/contrib/active_record/app.rb index 48e8ff9386c..257d1ea8b83 100644 --- a/spec/datadog/tracing/contrib/active_record/app.rb +++ b/spec/datadog/tracing/contrib/active_record/app.rb @@ -4,20 +4,6 @@ require 'activerecord-jdbc-adapter' else require 'mysql2' - - # Fix for https://github.com/brianmario/mysql2/issues/784#issuecomment-414878642 - # for Rails 3.2. - if ActiveRecord::VERSION::MAJOR < 4 - require 'active_record/connection_adapters/mysql2_adapter' - - module ActiveRecord - module ConnectionAdapters - class Mysql2Adapter - NATIVE_DATABASE_TYPES[:primary_key] = 'int(11) auto_increment PRIMARY KEY' - end - end - end - end end logger = Logger.new($stdout) diff --git a/spec/datadog/tracing/contrib/active_record/configuration/resolver_spec.rb b/spec/datadog/tracing/contrib/active_record/configuration/resolver_spec.rb index cd17b66e46b..36949673a59 100644 --- a/spec/datadog/tracing/contrib/active_record/configuration/resolver_spec.rb +++ b/spec/datadog/tracing/contrib/active_record/configuration/resolver_spec.rb @@ -106,6 +106,15 @@ let(:matcher) { 'bala boom!' } it 'does not resolves' do + expect(Datadog.logger).to receive(:error) do |message| + expect(message).to match(/failed to resolve/i) + end + + expect(Datadog::Core::Telemetry::Logger).to receive(:report).with( + an_instance_of(URI::InvalidURIError), + description: 'Failed to resolve key' + ) + add expect(resolver.configurations).to be_empty @@ -328,6 +337,11 @@ expect(message).not_to match(/password/i) end + expect(Datadog::Core::Telemetry::Logger).to receive(:report).with( + an_instance_of(URI::InvalidURIError), + description: 'Failed to resolve ActiveRecord database configuration' + ) + is_expected.to be_nil end end diff --git a/spec/datadog/tracing/contrib/active_record/events/instantiation_spec.rb b/spec/datadog/tracing/contrib/active_record/events/instantiation_spec.rb new file mode 100644 index 00000000000..c0a08a0ec39 --- /dev/null +++ b/spec/datadog/tracing/contrib/active_record/events/instantiation_spec.rb @@ -0,0 +1,32 @@ +require 'spec_helper' +require 'datadog/tracing/contrib/active_record/events/instantiation' +require 'datadog/tracing/span_operation' + +RSpec.describe Datadog::Tracing::Contrib::ActiveRecord::Events::Instantiation do + describe '.event_name' do + it 'returns the correct event name' do + expect(described_class.event_name).to eq('instantiation.active_record') + end + end + + describe '.span_name' do + it 'returns the correct span name' do + expect(described_class.span_name).to eq('active_record.instantiation') + end + end + + describe '.on_start' do + context 'when an error occurs' do + let(:span) { Datadog::Tracing::SpanOperation.new('fake') } + + it 'logs the error' do + expect(Datadog.logger).to receive(:error).with(/key not found/) + expect(Datadog::Core::Telemetry::Logger).to receive(:report).with(a_kind_of(StandardError)) + + expect do + described_class.on_start(span, double, double, {}) + end.not_to raise_error + end + end + end +end diff --git a/spec/datadog/tracing/contrib/active_record/events/sql_spec.rb b/spec/datadog/tracing/contrib/active_record/events/sql_spec.rb new file mode 100644 index 00000000000..7bacaac6d25 --- /dev/null +++ b/spec/datadog/tracing/contrib/active_record/events/sql_spec.rb @@ -0,0 +1,34 @@ +require 'spec_helper' +require 'datadog/tracing/contrib/active_record/events/sql' +require 'datadog/tracing/span_operation' + +require 'active_record' + +RSpec.describe Datadog::Tracing::Contrib::ActiveRecord::Events::SQL do + describe '.event_name' do + it 'returns the correct event name' do + expect(described_class.event_name).to eq('sql.active_record') + end + end + + describe '.span_name' do + it 'returns the correct span name' do + expect(described_class.span_name).to eq('active_record.sql') + end + end + + describe '.on_start' do + context 'when an error occurs' do + let(:span) { Datadog::Tracing::SpanOperation.new('fake') } + + it 'logs the error' do + expect(Datadog.logger).to receive(:error).with(/key not found/) + expect(Datadog::Core::Telemetry::Logger).to receive(:report).with(a_kind_of(StandardError)) + + expect do + described_class.on_start(span, double, double, {}) + end.not_to raise_error + end + end + end +end diff --git a/spec/datadog/tracing/contrib/active_record/instantiation_spec.rb b/spec/datadog/tracing/contrib/active_record/instantiation_spec.rb index 4eaac423849..e34f94cde9a 100644 --- a/spec/datadog/tracing/contrib/active_record/instantiation_spec.rb +++ b/spec/datadog/tracing/contrib/active_record/instantiation_spec.rb @@ -12,9 +12,6 @@ let(:article) { Article.first } before do - if Gem::Version.new(ActiveRecord::VERSION::STRING) < Gem::Version.new('4.2') - skip 'ActiveRecord instantiation events were added in Rails 4.2' - end Article.create!(title: 'test') # Reset options (that might linger from other tests) diff --git a/spec/datadog/tracing/contrib/active_record/performance_spec.rb b/spec/datadog/tracing/contrib/active_record/performance_spec.rb deleted file mode 100644 index efdffe43937..00000000000 --- a/spec/datadog/tracing/contrib/active_record/performance_spec.rb +++ /dev/null @@ -1,59 +0,0 @@ -require 'datadog/tracing/contrib/support/spec_helper' -require 'datadog' - -require 'active_record' - -if PlatformHelpers.jruby? - require 'activerecord-jdbc-adapter' -else - require 'sqlite3' -end - -RSpec.describe 'ActiveRecord tracing performance' do - let(:options) { {} } - - before do - skip('Performance test does not run in CI.') - - # Configure the tracer - Datadog.configure do |c| - c.tracing.instrument :active_record, options - end - end - - after { Datadog.registry[:active_record].reset_configuration! } - - describe 'for an in-memory database' do - let!(:connection) do - ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:') - end - - describe 'when queried with a simple select' do - subject(:measurement) { measure(iterations) } - - let(:iterations) { 100_000 } - - def measure(iterations = 1) - Benchmark.measure do - iterations.times do - connection.connection.execute('SELECT 42') - end - end - end - - before do - # Perform a measurement to warm up - measure(10) - - # Discard warm-up spans - clear_traces! - end - - it 'produces a measurement' do - expect { measurement }.to_not raise_error - expect(spans).to have(iterations).items - puts "\nRun time for #{iterations} iterations: #{measurement.utime}\n" - end - end - end -end diff --git a/spec/datadog/tracing/contrib/active_support/cache/events/cache_spec.rb b/spec/datadog/tracing/contrib/active_support/cache/events/cache_spec.rb new file mode 100644 index 00000000000..f0df41028b5 --- /dev/null +++ b/spec/datadog/tracing/contrib/active_support/cache/events/cache_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' +require 'datadog/tracing/contrib/active_support/cache/events/cache' +require 'datadog/tracing/span_operation' + +RSpec.describe Datadog::Tracing::Contrib::ActiveSupport::Cache::Events::Cache do + describe '.on_start' do + context 'when an error occurs' do + let(:span) { Datadog::Tracing::SpanOperation.new('fake') } + + it 'logs the error' do + expect(Datadog.logger).to receive(:error).with(/key not found/) + expect(Datadog::Core::Telemetry::Logger).to receive(:report).with(a_kind_of(StandardError)) + + expect do + described_class.on_start(span, double, double, {}) + end.not_to raise_error + end + end + end +end diff --git a/spec/datadog/tracing/contrib/ethon/integration_test_spec.rb b/spec/datadog/tracing/contrib/ethon/integration_test_spec.rb index d1f10398b09..da0d67b894e 100644 --- a/spec/datadog/tracing/contrib/ethon/integration_test_spec.rb +++ b/spec/datadog/tracing/contrib/ethon/integration_test_spec.rb @@ -13,7 +13,7 @@ require 'spec/datadog/tracing/contrib/ethon/support/thread_helpers' RSpec.describe 'Ethon integration tests' do - before { skip unless ENV['TEST_DATADOG_INTEGRATION'] } + skip_unless_integration_testing_enabled context 'with Easy HTTP request' do subject(:request) do diff --git a/spec/datadog/tracing/contrib/ethon/typhoeus_integration_spec.rb b/spec/datadog/tracing/contrib/ethon/typhoeus_integration_spec.rb index b4041fc0629..cf9c5ef5a63 100644 --- a/spec/datadog/tracing/contrib/ethon/typhoeus_integration_spec.rb +++ b/spec/datadog/tracing/contrib/ethon/typhoeus_integration_spec.rb @@ -5,7 +5,7 @@ require 'spec/datadog/tracing/contrib/ethon/support/thread_helpers' RSpec.describe Datadog::Tracing::Contrib::Ethon do - before { skip unless ENV['TEST_DATADOG_INTEGRATION'] } + skip_unless_integration_testing_enabled before(:context) do # Ethon will lazily initialize LibCurl, diff --git a/spec/datadog/tracing/contrib/grape/tracer_spec.rb b/spec/datadog/tracing/contrib/grape/tracer_spec.rb index 08be34f2eed..ee94ea02c7d 100644 --- a/spec/datadog/tracing/contrib/grape/tracer_spec.rb +++ b/spec/datadog/tracing/contrib/grape/tracer_spec.rb @@ -13,6 +13,7 @@ let(:render_span) { spans.find { |x| x.name == Datadog::Tracing::Contrib::Grape::Ext::SPAN_ENDPOINT_RENDER } } let(:run_span) { spans.find { |x| x.name == Datadog::Tracing::Contrib::Grape::Ext::SPAN_ENDPOINT_RUN } } + let(:rack_span) { sorted_spans.reverse.find { |x| x.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST } } let(:run_filter_span) { spans.find { |x| x.name == Datadog::Tracing::Contrib::Grape::Ext::SPAN_ENDPOINT_RUN_FILTERS } } let(:span) { spans.last } @@ -198,6 +199,9 @@ .to eq('endpoint_run') expect(run_span.get_tag('http.status_code')).to eq('200') + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/success') end end @@ -265,6 +269,9 @@ .to eq('endpoint_run') expect(run_span.get_tag('http.status_code')).to eq('200') + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/filtered/before_after') end end end @@ -296,6 +303,8 @@ expect(span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('endpoint_run') expect(span.get_tag('http.status_code')).to eq('405') + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/hard_failure') end end end @@ -353,6 +362,9 @@ .to eq('endpoint_run') # Status code has not been set yet at this instrumentation point expect(run_span.get_tag('http.status_code')).to be_nil + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/hard_failure') end end @@ -402,6 +414,8 @@ expect(run_span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_COMPONENT)).to eq('grape') expect(run_span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('endpoint_run') + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/filtered_exception/before') end end end @@ -419,6 +433,8 @@ expect(span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('endpoint_run') expect(span.get_tag('http.status_code')).to eq('405') + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/soft_failure') end context 'and error_responses' do @@ -435,6 +451,8 @@ expect(span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('endpoint_run') expect(span.get_tag('http.status_code')).to eq('405') + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/soft_failure') end end @@ -452,6 +470,8 @@ expect(span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('endpoint_run') expect(span.get_tag('http.status_code')).to eq('405') + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/soft_failure') end end @@ -469,6 +489,8 @@ expect(span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('endpoint_run') expect(span.get_tag('http.status_code')).to eq('405') + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/soft_failure') end end @@ -486,6 +508,9 @@ expect(span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('endpoint_run') expect(span.get_tag('http.status_code')).to eq('405') + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/soft_failure') end end end @@ -535,6 +560,9 @@ .to eq('endpoint_run') expect(run_span.get_tag('http.status_code')).to eq('500') + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/soft_failure') end end end @@ -583,6 +611,9 @@ expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_PATH)).to eq('/widgets') expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_METHOD)).to eq('GET') + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/widgets') end end @@ -629,6 +660,9 @@ expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_PATH)).to eq('/widgets') expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_METHOD)).to eq('POST') + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/widgets') end end @@ -665,6 +699,9 @@ expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_PATH)).to eq('/nested/widgets') expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_METHOD)).to eq('GET') + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/nested/widgets') end end end @@ -688,6 +725,7 @@ before do Datadog.configure { |c| c.tracing.enabled = false } expect(Datadog.logger).to_not receive(:error) + expect(Datadog::Core::Telemetry::Logger).to_not receive(:report) end it 'runs the endpoint request without tracing' do @@ -750,7 +788,6 @@ expect(run_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_METHOD)).to eq('GET') expect(run_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_URL)).to eq('/success') - expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_PATH)).to eq('/success') expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_METHOD)).to eq('GET') expect(rack_span.name).to eq('rack.request') @@ -759,6 +796,7 @@ expect(rack_span.resource).to eq('RackTestingAPI GET /success') expect(rack_span).to_not have_error expect(rack_span).to be_root_span + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)).to eq('/api/success') end end @@ -824,6 +862,8 @@ expect(rack_span.resource).to eq('RackTestingAPI GET /hard_failure') expect(rack_span).to have_error expect(rack_span).to be_root_span + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/api/hard_failure') end end @@ -845,6 +885,8 @@ expect(span.resource).to eq('GET 404') expect(span).to_not have_error expect(span).to be_root_span + expect(span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to be_nil end end @@ -859,6 +901,10 @@ run_span = spans.find { |s| s.name == 'grape.endpoint_run' } expect(run_span.name).to eq('grape.endpoint_run') expect(run_span.resource).to eq('RackTestingAPI GET /span_resource_rack/span_resource') + + rack_span = spans.find { |x| x.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST } + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/api/span_resource_rack/span_resource') end it 'sets the trace resource before calling the endpoint' do diff --git a/spec/datadog/tracing/contrib/graphql/loading_spec.rb b/spec/datadog/tracing/contrib/graphql/loading_spec.rb new file mode 100644 index 00000000000..2b40dfe87a7 --- /dev/null +++ b/spec/datadog/tracing/contrib/graphql/loading_spec.rb @@ -0,0 +1,33 @@ +require 'shellwords' + +RSpec.describe 'loading graphql' do + context 'then datadog' do + let(:code) do + <<-E + require "graphql" + require "datadog" + exit 0 + E + end + + it 'loads successfully by itself' do + rv = system("ruby -e #{Shellwords.shellescape(code)}") + expect(rv).to be true + end + end + + context 'after datadog' do + let(:code) do + <<-E + require "datadog" + require "graphql" + exit 0 + E + end + + it 'loads successfully by itself' do + rv = system("ruby -e #{Shellwords.shellescape(code)}") + expect(rv).to be true + end + end +end diff --git a/spec/datadog/tracing/contrib/graphql/patcher_spec.rb b/spec/datadog/tracing/contrib/graphql/patcher_spec.rb index d828918fd1f..535778ee17c 100644 --- a/spec/datadog/tracing/contrib/graphql/patcher_spec.rb +++ b/spec/datadog/tracing/contrib/graphql/patcher_spec.rb @@ -7,9 +7,14 @@ require 'datadog' RSpec.describe Datadog::Tracing::Contrib::GraphQL::Patcher do + before(:context) { load_test_schema } + after(:context) do + unload_test_schema + remove_patch!(:graphql) + end + around do |example| remove_patch!(:graphql) - Datadog.configuration.reset! Datadog.configuration.tracing[:graphql].reset! without_warnings do @@ -17,7 +22,6 @@ end remove_patch!(:graphql) - Datadog.configuration.reset! Datadog.configuration.tracing[:graphql].reset! end @@ -26,10 +30,7 @@ context 'with default configuration' do it 'patches GraphQL' do allow(Datadog::Tracing::Contrib::GraphQL::Integration).to receive(:trace_supported?).and_return(true) - expect(Datadog::Tracing::Contrib::GraphQL::TracePatcher).to receive(:patch!).with( - [], - hash_including(:analytics_enabled, :analytics_sample_rate, :service) - ) + expect(Datadog::Tracing::Contrib::GraphQL::TracePatcher).to receive(:patch!).with([]) Datadog.configure do |c| c.tracing.instrument :graphql @@ -40,10 +41,7 @@ context 'with with_deprecated_tracer enabled' do it do allow(Datadog::Tracing::Contrib::GraphQL::Integration).to receive(:trace_supported?).and_return(true) - expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with( - [], - hash_including(:analytics_enabled, :analytics_sample_rate, :service) - ) + expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with([]) Datadog.configure do |c| c.tracing.instrument :graphql, with_deprecated_tracer: true @@ -54,10 +52,7 @@ context 'with with_deprecated_tracer disabled' do it do allow(Datadog::Tracing::Contrib::GraphQL::Integration).to receive(:trace_supported?).and_return(true) - expect(Datadog::Tracing::Contrib::GraphQL::TracePatcher).to receive(:patch!).with( - [], - hash_including(:analytics_enabled, :analytics_sample_rate, :service) - ) + expect(Datadog::Tracing::Contrib::GraphQL::TracePatcher).to receive(:patch!).with([]) Datadog.configure do |c| c.tracing.instrument :graphql, with_deprecated_tracer: false @@ -68,10 +63,7 @@ context 'with with_unified_tracer enabled' do it do allow(Datadog::Tracing::Contrib::GraphQL::Integration).to receive(:trace_supported?).and_return(true) - expect(Datadog::Tracing::Contrib::GraphQL::UnifiedTracePatcher).to receive(:patch!).with( - [], - hash_including(:analytics_enabled, :analytics_sample_rate, :service) - ) + expect(Datadog::Tracing::Contrib::GraphQL::UnifiedTracePatcher).to receive(:patch!).with([]) Datadog.configure do |c| c.tracing.instrument :graphql, with_unified_tracer: true @@ -82,10 +74,7 @@ context 'with with_unified_tracer disabled' do it do allow(Datadog::Tracing::Contrib::GraphQL::Integration).to receive(:trace_supported?).and_return(true) - expect(Datadog::Tracing::Contrib::GraphQL::TracePatcher).to receive(:patch!).with( - [], - hash_including(:analytics_enabled, :analytics_sample_rate, :service) - ) + expect(Datadog::Tracing::Contrib::GraphQL::TracePatcher).to receive(:patch!).with([]) Datadog.configure do |c| c.tracing.instrument :graphql, with_unified_tracer: false @@ -96,10 +85,7 @@ context 'with with_unified_tracer enabled and with_deprecated_tracer enabled' do it do allow(Datadog::Tracing::Contrib::GraphQL::Integration).to receive(:trace_supported?).and_return(true) - expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with( - [], - hash_including(:analytics_enabled, :analytics_sample_rate, :service) - ) + expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with([]) Datadog.configure do |c| c.tracing.instrument :graphql, with_unified_tracer: true, with_deprecated_tracer: true @@ -110,10 +96,7 @@ context 'with given schema' do it do allow(Datadog::Tracing::Contrib::GraphQL::Integration).to receive(:trace_supported?).and_return(true) - expect(Datadog::Tracing::Contrib::GraphQL::TracePatcher).to receive(:patch!).with( - [TestGraphQLSchema], - hash_including(:analytics_enabled, :analytics_sample_rate, :service) - ) + expect(Datadog::Tracing::Contrib::GraphQL::TracePatcher).to receive(:patch!).with([TestGraphQLSchema]) Datadog.configure do |c| c.tracing.instrument :graphql, schemas: [TestGraphQLSchema] @@ -126,10 +109,7 @@ context 'with default configuration' do it 'patches GraphQL' do allow(Datadog::Tracing::Contrib::GraphQL::Integration).to receive(:trace_supported?).and_return(false) - expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with( - [], - hash_including(:analytics_enabled, :analytics_sample_rate, :service) - ) + expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with([]) expect_any_instance_of(Datadog::Core::Logger).to receive(:warn) .with(/Falling back to GraphQL::Tracing::DataDogTracing/) @@ -142,10 +122,7 @@ context 'with with_deprecated_tracer enabled' do it do allow(Datadog::Tracing::Contrib::GraphQL::Integration).to receive(:trace_supported?).and_return(false) - expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with( - [], - hash_including(:analytics_enabled, :analytics_sample_rate, :service) - ) + expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with([]) expect_any_instance_of(Datadog::Core::Logger).not_to receive(:warn) Datadog.configure do |c| @@ -157,10 +134,7 @@ context 'with with_deprecated_tracer disabled' do it do allow(Datadog::Tracing::Contrib::GraphQL::Integration).to receive(:trace_supported?).and_return(false) - expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with( - [], - hash_including(:analytics_enabled, :analytics_sample_rate, :service) - ) + expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with([]) expect_any_instance_of(Datadog::Core::Logger).to receive(:warn) .with(/Falling back to GraphQL::Tracing::DataDogTracing/) @@ -173,10 +147,7 @@ context 'with with_unified_tracer enabled' do it do allow(Datadog::Tracing::Contrib::GraphQL::Integration).to receive(:trace_supported?).and_return(false) - expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with( - [], - hash_including(:analytics_enabled, :analytics_sample_rate, :service) - ) + expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with([]) expect_any_instance_of(Datadog::Core::Logger).to receive(:warn) .with(/Falling back to GraphQL::Tracing::DataDogTracing/) @@ -189,10 +160,7 @@ context 'with with_unified_tracer disabled' do it do allow(Datadog::Tracing::Contrib::GraphQL::Integration).to receive(:trace_supported?).and_return(false) - expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with( - [], - hash_including(:analytics_enabled, :analytics_sample_rate, :service) - ) + expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with([]) expect_any_instance_of(Datadog::Core::Logger).to receive(:warn) .with(/Falling back to GraphQL::Tracing::DataDogTracing/) @@ -205,10 +173,7 @@ context 'with with_unified_tracer enabled and with_deprecated_tracer enabled' do it do allow(Datadog::Tracing::Contrib::GraphQL::Integration).to receive(:trace_supported?).and_return(false) - expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with( - [], - hash_including(:analytics_enabled, :analytics_sample_rate, :service) - ) + expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with([]) Datadog.configure do |c| c.tracing.instrument :graphql, with_unified_tracer: true, with_deprecated_tracer: true @@ -219,10 +184,7 @@ context 'with given schema' do it do allow(Datadog::Tracing::Contrib::GraphQL::Integration).to receive(:trace_supported?).and_return(false) - expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with( - [TestGraphQLSchema], - hash_including(:analytics_enabled, :analytics_sample_rate, :service) - ) + expect(Datadog::Tracing::Contrib::GraphQL::TracingPatcher).to receive(:patch!).with([TestGraphQLSchema]) expect_any_instance_of(Datadog::Core::Logger).to receive(:warn) .with(/Falling back to GraphQL::Tracing::DataDogTracing/) diff --git a/spec/datadog/tracing/contrib/graphql/support/application.rb b/spec/datadog/tracing/contrib/graphql/support/application.rb new file mode 100644 index 00000000000..88ab68a45fc --- /dev/null +++ b/spec/datadog/tracing/contrib/graphql/support/application.rb @@ -0,0 +1,131 @@ +require 'datadog/tracing/contrib/support/spec_helper' +require 'datadog/tracing/contrib/graphql/support/application_schema' + +require 'active_model/railtie' +require 'action_controller/railtie' +require 'action_view/railtie' +require 'active_job/railtie' +require 'action_cable/engine' +require 'sprockets/railtie' +require 'rails/test_unit/railtie' + +require 'logger' +require 'graphql' +require 'rack/test' + +require 'spec/datadog/tracing/contrib/rails/support/configuration' +require 'spec/datadog/tracing/contrib/rails/support/application' + +# logger +logger = Logger.new($stdout) +logger.level = Logger::INFO + +# Rails settings +ENV['RAILS_ENV'] = 'test' + +# switch Rails import according to installed +# version; this is controlled with Appraisals +logger.info "Testing against Rails #{Rails.version} with GraphQL #{::GraphQL::VERSION}" + +RSpec.shared_context 'with GraphQL schema' do + # TODO: Cleaner way to reset the schema between tests (and most likely clean ::GraphQL::Schema too) + # stub_const is required for GraphqlController, and we cannot use variables defined in let blocks in stub_const + before do + TestGraphQL.send(:remove_const, :Case) if defined?(TestGraphQL::Case) + TestGraphQL.send(:remove_const, :Schema) if defined?(TestGraphQL::Schema) + TestGraphQL.send(:remove_const, :Query) if defined?(TestGraphQL::Query) + TestGraphQL.send(:remove_const, :MutationType) if defined?(TestGraphQL::MutationType) + TestGraphQL.send(:remove_const, :Users) if defined?(TestGraphQL::Users) + TestGraphQL.send(:remove_const, :UserType) if defined?(TestGraphQL::UserType) + load 'spec/datadog/tracing/contrib/graphql/support/application_schema.rb' + end + let(:operation) { Datadog::AppSec::Reactive::Operation.new('test') } + let(:schema) { TestGraphQL::Schema } +end + +RSpec.shared_context 'with GraphQL multiplex' do + include_context 'with GraphQL schema' + + let(:first_query) { ::GraphQL::Query.new(schema, 'query test{ user(id: 1) { name } }') } + let(:second_query) { ::GraphQL::Query.new(schema, 'query test{ user(id: 10) { name } }') } + let(:third_query) { ::GraphQL::Query.new(schema, 'query { userByName(name: "Caniche") { id } }') } + let(:queries) { [first_query, second_query, third_query] } + let(:context) { { :dataloader => GraphQL::Dataloader.new(nonblocking: nil) } } + let(:multiplex) do + ::GraphQL::Execution::Multiplex.new(schema: schema, queries: queries, context: context, max_complexity: nil) + end +end + +RSpec.shared_context 'GraphQL test application' do + let(:no_db) { true } + + include_context 'Rails test application' + include_context 'with GraphQL schema' + include Rack::Test::Methods + + let(:routes) do + { + [:post, '/graphql'] => 'graphql#execute' + } + end + let(:controllers) { [controller] } + + let(:controller) do + stub_const( + 'GraphqlController', + Class.new(ActionController::Base) do + # skip CSRF token check for non-GET requests + begin + if respond_to?(:skip_before_action) + skip_before_action :verify_authenticity_token + else + skip_before_filter :verify_authenticity_token + end + rescue ArgumentError # :verify_authenticity_token might not be defined + nil + end + + def execute + result = if params[:_json] + queries = params[:_json].map do |param| + { + query: param[:query], + operation_name: param[:operationName], + variables: prepare_variables(param[:variables]), + context: {} + } + end + TestGraphQL::Schema.multiplex(queries) + else + TestGraphQL::Schema.execute( + query: params[:query], + operation_name: params[:operationName], + variables: prepare_variables(params[:variables]), + context: {} + ) + end + render json: result + end + + def prepare_variables(variables_param) + case variables_param + when String + if variables_param.present? + JSON.parse(variables_param) || {} + else + {} + end + when Hash + variables_param + when ActionController::Parameters + variables_param.to_unsafe_hash # GraphQL-Ruby will validate name and type of incoming variables. + when nil + {} + else + raise ArgumentError, "Unexpected parameter: #{variables_param}" + end + end + end + ) + end +end diff --git a/spec/datadog/tracing/contrib/graphql/support/application_schema.rb b/spec/datadog/tracing/contrib/graphql/support/application_schema.rb new file mode 100644 index 00000000000..ba297c1f77b --- /dev/null +++ b/spec/datadog/tracing/contrib/graphql/support/application_schema.rb @@ -0,0 +1,114 @@ +require 'graphql' +require 'json' + +module TestGraphQL + class Case < GraphQL::Schema::Directive + argument :format, String + locations FIELD + + TRANSFORMS = [ + 'upcase', + 'downcase', + ].freeze + + # Implement the Directive API + def self.resolve(object, arguments, context) + path = context.namespace(:interpreter)[:current_path] + return_value = yield + transform_name = arguments[:format] + if TRANSFORMS.include?(transform_name) && return_value.respond_to?(transform_name) + return_value = return_value.public_send(transform_name) + response = context.namespace(:interpreter_runtime)[:runtime].final_result + *keys, last = path + keys.each do |key| + if response && (response = response[key]) + next + else + break + end + end + response[last] = return_value if response + nil + end + end + end + + class UserType < ::GraphQL::Schema::Object + field :id, ::GraphQL::Types::ID, null: false + field :name, ::GraphQL::Types::String, null: true + field :created_at, ::GraphQL::Types::String, null: false + field :updated_at, ::GraphQL::Types::String, null: false + end + + class Query < ::GraphQL::Schema::Object + field :user, UserType, null: false, description: 'Find an user by ID' do + argument :id, ::GraphQL::Types::ID, required: true + end + + def user(id:) + return OpenStruct.new(id: id, name: 'Caniche') if Integer(id) == 10 + + OpenStruct.new(id: id, name: 'Bits') + end + + field :userByName, UserType, null: false, description: 'Find an user by name' do + argument :name, ::GraphQL::Types::String, required: true + end + + # rubocop:disable Naming/MethodName + def userByName(name:) + return OpenStruct.new(id: 10, name: name) if name == 'Caniche' + + OpenStruct.new(id: 1, name: name) + end + + field :mutationUserByName, UserType, null: false, description: 'Find an user by name' do + argument :name, ::GraphQL::Types::String, required: true + end + + def mutationUserByName(name:) + if Users.users[name].nil? + ::GraphQL::ExecutionError.new('User not found') + else + OpenStruct.new(id: Users.users[name], name: name) + end + end + # rubocop:enable Naming/MethodName + end + + class Users + class << self + def users + @users ||= {} + end + end + end + + class MutationType < ::GraphQL::Schema::Object + class Mutation < ::GraphQL::Schema::Mutation + argument :name, ::GraphQL::Types::String, required: true + + field :user, UserType + field :errors, [String], null: false + + def resolve(name:) + if Users.users.nil? || Users.users[name].nil? + Users.users ||= {} + item = OpenStruct.new(id: Users.users.size + 1, name: name) + Users.users[name] = Users.users.size + 1 + { user: item, errors: [] } + else + ::GraphQL::ExecutionError.new('User already exists') + end + end + end + + field :create_user, mutation: Mutation + end + + class Schema < ::GraphQL::Schema + mutation(MutationType) + query(Query) + directive(Case) + end +end diff --git a/spec/datadog/tracing/contrib/graphql/test_schema_examples.rb b/spec/datadog/tracing/contrib/graphql/test_schema_examples.rb index beb8f84e584..edd63741291 100644 --- a/spec/datadog/tracing/contrib/graphql/test_schema_examples.rb +++ b/spec/datadog/tracing/contrib/graphql/test_schema_examples.rb @@ -2,38 +2,42 @@ require_relative 'test_helpers' -class TestUserType < ::GraphQL::Schema::Object - field :id, ::GraphQL::Types::ID, null: false - field :name, ::GraphQL::Types::String, null: true - field :created_at, ::GraphQL::Types::String, null: false - field :updated_at, ::GraphQL::Types::String, null: false -end +def load_test_schema(prefix: '') + # rubocop:disable Security/Eval + # rubocop:disable Style/DocumentDynamicEvalDefinition + eval <<-RUBY, binding, __FILE__, __LINE__ + 1 + class #{prefix}TestUserType < ::GraphQL::Schema::Object + field :id, ::GraphQL::Types::ID, null: false + field :name, ::GraphQL::Types::String, null: true + field :created_at, ::GraphQL::Types::String, null: false + field :updated_at, ::GraphQL::Types::String, null: false + end -class TestGraphQLQuery < ::GraphQL::Schema::Object - field :user, TestUserType, null: false, description: 'Find an user by ID' do - argument :id, ::GraphQL::Types::ID, required: true - end + class #{prefix}TestGraphQLQuery < ::GraphQL::Schema::Object + field :user, #{prefix}TestUserType, null: false, description: 'Find user' do + argument :id, ::GraphQL::Types::ID, required: true + end - def user(id:) - OpenStruct.new(id: id, name: 'Bits') - end + def user(id:) + OpenStruct.new(id: id, name: 'Bits') + end + end + + class #{prefix}TestGraphQLSchema < ::GraphQL::Schema + query(#{prefix}TestGraphQLQuery) + end + RUBY + # rubocop:enable Style/DocumentDynamicEvalDefinition + # rubocop:enable Security/Eval end -class TestGraphQLSchema < ::GraphQL::Schema - query(TestGraphQLQuery) +def unload_test_schema(prefix: '') + Object.send(:remove_const, :"#{prefix}TestUserType") + Object.send(:remove_const, :"#{prefix}TestGraphQLQuery") + Object.send(:remove_const, :"#{prefix}TestGraphQLSchema") end RSpec.shared_examples 'graphql default instrumentation' do - around do |example| - Datadog::GraphQLTestHelpers.reset_schema_cache!(::GraphQL::Schema) - Datadog::GraphQLTestHelpers.reset_schema_cache!(TestGraphQLSchema) - - example.run - - Datadog::GraphQLTestHelpers.reset_schema_cache!(::GraphQL::Schema) - Datadog::GraphQLTestHelpers.reset_schema_cache!(TestGraphQLSchema) - end - describe 'query trace' do subject(:result) { TestGraphQLSchema.execute('{ user(id: 1) { name } }') } @@ -70,27 +74,17 @@ class TestGraphQLSchema < ::GraphQL::Schema end end -RSpec.shared_examples 'graphql instrumentation with unified naming convention trace' do - around do |example| - Datadog::GraphQLTestHelpers.reset_schema_cache!(::GraphQL::Schema) - Datadog::GraphQLTestHelpers.reset_schema_cache!(TestGraphQLSchema) - - example.run - - Datadog::GraphQLTestHelpers.reset_schema_cache!(::GraphQL::Schema) - Datadog::GraphQLTestHelpers.reset_schema_cache!(TestGraphQLSchema) - end - +RSpec.shared_examples 'graphql instrumentation with unified naming convention trace' do |prefix: ''| describe 'query trace' do - subject(:result) do - TestGraphQLSchema.execute(query: 'query Users($var: ID!){ user(id: $var) { name } }', variables: { var: 1 }) - end + subject(:result) { schema.execute(query: 'query Users($var: ID!){ user(id: $var) { name } }', variables: { var: 1 }) } + let(:schema) { Object.const_get("#{prefix}TestGraphQLSchema") } + let(:service) { defined?(super) ? super() : tracer.default_service } matrix = [ ['graphql.analyze', 'query Users($var: ID!){ user(id: $var) { name } }'], ['graphql.analyze_multiplex', 'Users'], - ['graphql.authorized', 'TestGraphQLQuery.authorized'], - ['graphql.authorized', 'TestUser.authorized'], + ['graphql.authorized', "#{prefix}TestGraphQLQuery.authorized"], + ['graphql.authorized', "#{prefix}TestUser.authorized"], ['graphql.execute', 'Users'], ['graphql.execute_lazy', 'Users'], ['graphql.execute_multiplex', 'Users'], @@ -98,8 +92,8 @@ class TestGraphQLSchema < ::GraphQL::Schema ['graphql.lex', 'query Users($var: ID!){ user(id: $var) { name } }'] end, ['graphql.parse', 'query Users($var: ID!){ user(id: $var) { name } }'], - ['graphql.resolve', 'TestGraphQLQuery.user'], - ['graphql.resolve', 'TestUser.name'], + ['graphql.resolve', "#{prefix}TestGraphQLQuery.user"], + ['graphql.resolve', "#{prefix}TestUser.name"], # New Ruby-based parser doesn't emit a "lex" event. (graphql/c_parser still does.) ['graphql.validate', 'Users'] ].compact @@ -117,7 +111,7 @@ class TestGraphQLSchema < ::GraphQL::Schema expect(span.name).to eq(name) expect(span.resource).to eq(resource) - expect(span.service).to eq(tracer.default_service) + expect(span.service).to eq(service) expect(span.type).to eq('graphql') if spans_with_source.include?(name) diff --git a/spec/datadog/tracing/contrib/graphql/trace_patcher_spec.rb b/spec/datadog/tracing/contrib/graphql/trace_patcher_spec.rb index a3898903d8e..2476537d199 100644 --- a/spec/datadog/tracing/contrib/graphql/trace_patcher_spec.rb +++ b/spec/datadog/tracing/contrib/graphql/trace_patcher_spec.rb @@ -6,11 +6,19 @@ RSpec.describe Datadog::Tracing::Contrib::GraphQL::TracePatcher, skip: Gem::Version.new(::GraphQL::VERSION) < Gem::Version.new('2.0.19') do + before(:context) { load_test_schema } + after(:context) do + unload_test_schema + remove_patch!(:graphql) + end + describe '#patch!' do context 'with empty schema configuration' do it_behaves_like 'graphql default instrumentation' do before do - described_class.patch!([], {}) + Datadog.configure do |c| + c.tracing.instrument :graphql + end end end end @@ -18,7 +26,9 @@ context 'with specified schemas configuration' do it_behaves_like 'graphql default instrumentation' do before do - described_class.patch!([TestGraphQLSchema], {}) + Datadog.configure do |c| + c.tracing.instrument :graphql, schemas: [TestGraphQLSchema] + end end end end diff --git a/spec/datadog/tracing/contrib/graphql/tracing_patcher_spec.rb b/spec/datadog/tracing/contrib/graphql/tracing_patcher_spec.rb index db036f6e4ac..a94457e97bf 100644 --- a/spec/datadog/tracing/contrib/graphql/tracing_patcher_spec.rb +++ b/spec/datadog/tracing/contrib/graphql/tracing_patcher_spec.rb @@ -5,11 +5,23 @@ require 'datadog' RSpec.describe Datadog::Tracing::Contrib::GraphQL::TracingPatcher do + before(:context) { load_test_schema } + after(:context) do + unload_test_schema + remove_patch!(:graphql) + end + describe '#patch!' do + before do + Datadog.configuration.tracing[:graphql].reset! + end + context 'with empty schema configuration' do it_behaves_like 'graphql default instrumentation' do before do - described_class.patch!([], {}) + Datadog.configure do |c| + c.tracing.instrument :graphql, with_deprecated_tracer: true + end end end end @@ -17,17 +29,11 @@ context 'with specified schemas configuration' do it_behaves_like 'graphql default instrumentation' do before do - described_class.patch!([TestGraphQLSchema], {}) + Datadog.configure do |c| + c.tracing.instrument :graphql, with_deprecated_tracer: true, schemas: [TestGraphQLSchema] + end end end end - - context 'when given something else' do - it do - expect_any_instance_of(Datadog::Core::Logger).to receive(:warn).with(/Unable to patch/) - - described_class.patch!([OpenStruct.new], {}) - end - end end end diff --git a/spec/datadog/tracing/contrib/graphql/unified_trace_patcher_spec.rb b/spec/datadog/tracing/contrib/graphql/unified_trace_patcher_spec.rb index ff94f1fbc8e..54f6b4c38fd 100644 --- a/spec/datadog/tracing/contrib/graphql/unified_trace_patcher_spec.rb +++ b/spec/datadog/tracing/contrib/graphql/unified_trace_patcher_spec.rb @@ -6,21 +6,75 @@ RSpec.describe Datadog::Tracing::Contrib::GraphQL::UnifiedTracePatcher, skip: Gem::Version.new(::GraphQL::VERSION) < Gem::Version.new('2.0.19') do + before(:context) { load_test_schema } + after(:context) do + unload_test_schema + remove_patch!(:graphql) + end + describe '#patch!' do + before do + Datadog.configuration.tracing[:graphql].reset! + end + context 'with empty schema configuration' do it_behaves_like 'graphql instrumentation with unified naming convention trace' do before do - described_class.patch!([], {}) + Datadog.configure do |c| + c.tracing.instrument :graphql, with_unified_tracer: true + end end end end + context 'with a custom service name' do + it_behaves_like 'graphql instrumentation with unified naming convention trace' do + before do + Datadog.configure do |c| + c.tracing.instrument :graphql, with_unified_tracer: true, service_name: 'my-graphql' + end + end + + let(:service) { 'my-graphql' } + end + end + context 'with specified schemas configuration' do it_behaves_like 'graphql instrumentation with unified naming convention trace' do before do - described_class.patch!([TestGraphQLSchema], {}) + Datadog.configure do |c| + c.tracing.instrument :graphql, with_unified_tracer: true, schemas: [TestGraphQLSchema] + end end end end end + + # Not specific to unified trace patcher, + # But this should work the same way without the need to require the tracer in the schema. + describe '#trace_with' do + context 'with schema using trace_with' do + it_behaves_like 'graphql instrumentation with unified naming convention trace', prefix: 'TraceWith' do + before do + load_test_schema(prefix: 'TraceWith') + + Datadog.configuration.tracing[:graphql].reset! + + # Datadog.configure do |c| + # c.tracing.instrument :graphql, with_unified_tracer: true + # end + + # Monkey patch the schema to use the unified tracer + # As we're not adding a new method, we cannot use allow(...).to receive(...) + # rubocop:disable Lint/ConstantDefinitionInBlock, RSpec/LeakyConstantDeclaration + class TraceWithTestGraphQLSchema + trace_with Datadog::Tracing::Contrib::GraphQL::UnifiedTrace + end + # rubocop:enable Lint/ConstantDefinitionInBlock, RSpec/LeakyConstantDeclaration + end + + after { unload_test_schema(prefix: 'TraceWith') } + end + end + end end diff --git a/spec/datadog/tracing/contrib/grpc_spec.rb b/spec/datadog/tracing/contrib/grpc_spec.rb index 1b097e76ff8..cfee2ee25cd 100644 --- a/spec/datadog/tracing/contrib/grpc_spec.rb +++ b/spec/datadog/tracing/contrib/grpc_spec.rb @@ -10,7 +10,11 @@ describe '#inject' do subject(:inject) { described_class.inject(digest, data) } - let(:digest) { Datadog::Tracing::TraceDigest.new } + let(:trace_id) { Datadog::Tracing::Utils::TraceId.next_id } + let(:span_id) { Datadog::Tracing::Utils.next_id } + let(:digest) do + Datadog::Tracing::TraceDigest.new(trace_id: trace_id, span_id: span_id) + end let(:data) { {} } it 'injects distributed headers' do diff --git a/spec/datadog/tracing/contrib/http/circuit_breaker_spec.rb b/spec/datadog/tracing/contrib/http/circuit_breaker_spec.rb index 4d656c7ed87..851ccddb86d 100644 --- a/spec/datadog/tracing/contrib/http/circuit_breaker_spec.rb +++ b/spec/datadog/tracing/contrib/http/circuit_breaker_spec.rb @@ -91,4 +91,68 @@ end end end + + describe '#should_skip_distributed_tracing?' do + subject(:should_skip_distributed_tracing?) { circuit_breaker.should_skip_distributed_tracing?(client_config) } + + let(:client_config) { nil } + let(:distributed_tracing) { true } + let(:appsec_standalone) { false } + let(:active_trace) { nil } + let(:distributed_appsec_event) { nil } + + before do + allow(Datadog.configuration.tracing[:http]).to receive(:[]).with(:distributed_tracing).and_return(distributed_tracing) + allow(Datadog.configuration.appsec.standalone).to receive(:enabled).and_return(appsec_standalone) + allow(Datadog::Tracing).to receive(:active_trace).and_return(active_trace) + allow(active_trace).to receive(:get_tag).with('_dd.p.appsec').and_return(distributed_appsec_event) if active_trace + end + + context 'when distributed tracing is enabled' do + it { is_expected.to be false } + end + + context 'when distributed tracing is disabled' do + let(:distributed_tracing) { false } + + it { is_expected.to be true } + end + + context 'when appsec standalone is enabled' do + let(:appsec_standalone) { true } + + context 'when there is no active trace' do + it { is_expected.to be true } + end + + context 'when there is an active trace' do + let(:active_trace) { instance_double(Datadog::Tracing::TraceOperation) } + + context 'when the active trace has no distributed appsec event' do + it { is_expected.to be true } + end + + context 'when the active trace has a distributed appsec event' do + # This should act like standalone appsec is disabled, as it does not return in the + # `if Datadog.configuration.appsec.standalone.enabled` block + # so we're only testing the "no client config, distributed tracing enabled" case here + let(:distributed_appsec_event) { '1' } + + it { is_expected.to be false } + end + end + end + + context 'given a client config with distributed_tracing disabled' do + let(:client_config) { { distributed_tracing: false } } + + it { is_expected.to be true } + end + + context 'given a client config with distributed_tracing enabled' do + let(:client_config) { { distributed_tracing: true } } + + it { is_expected.to be false } + end + end end diff --git a/spec/datadog/tracing/contrib/http_route_spec.rb b/spec/datadog/tracing/contrib/http_route_spec.rb deleted file mode 100644 index fed2230c9ac..00000000000 --- a/spec/datadog/tracing/contrib/http_route_spec.rb +++ /dev/null @@ -1,332 +0,0 @@ -require 'datadog/tracing/contrib/support/spec_helper' - -require 'grape' -require 'rack/test' -require 'sinatra' -require 'rails' -require 'action_controller' - -require 'datadog' - -RSpec.describe 'Multi-app testing for http.route' do - include Rack::Test::Methods - - let(:options) { {} } - - before do - Datadog.configure do |c| - c.tracing.instrument :sinatra, options - c.tracing.instrument :rack, options - c.tracing.instrument :grape, options - c.tracing.instrument :rails, options - end - end - - after do - Datadog.registry[:sinatra].reset_configuration! - Datadog.registry[:rack].reset_configuration! - Datadog.registry[:grape].reset_configuration! - Datadog.registry[:rails].reset_configuration! - end - - shared_context 'multi-app' do - let(:app) do - apps_to_build = apps - - Rack::Builder.new do - apps_to_build.each do |route, app| - map route do - run app - end - end - end.to_app - end - - let(:apps) do - { - '/' => rack_app, - '/rack' => rack_app, - '/sinatra' => sinatra_app, - '/grape' => grape_app, - '/rails' => rails_app, - '/rack/rack' => rack_app, - '/rack/sinatra' => sinatra_app, - '/rack/grape' => grape_app, - '/rack/rails' => rails_app - } - end - - let(:rack_app) do - Rack::Builder.new do - map '/hello/world' do - run ->(_env) { [200, { 'content-type' => 'text/plain' }, 'hello world'] } - end - end - end - - let(:sinatra_app) do - Class.new(Sinatra::Application) do - get '/hello/world' do - 'hello world' - end - - get '/hello/:id' do - "hello #{params[:id]}" - end - end - end - - let(:grape_app) do - Class.new(Grape::API) do - get '/hello/world' do - 'hello world' - end - get '/hello/:id' do - "hello #{params[:id]}" - end - end - end - - let(:rails_app) do - Class.new(Rails::Engine) do - routes.draw do - get '/hello/world' => 'hello#world' - get '/hello/:id' => 'hello#show' - end - end - end - - before do - stub_const( - 'HelloController', - Class.new(ActionController::Base) do - def world - render plain: 'Hello, world!' - end - - def show - render plain: "Hello, #{params[:id]}!" - end - end - ) - end - end - - context 'base routes' do - include_context 'multi-app' - - describe 'request to base app' do - subject(:response) { get '/hello/world' } - - it do - is_expected.to be_ok - spans.each do |span| - next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - - expect(span.get_tag('http.route')).to eq('/hello/world') - - break - end - end - end - - describe 'request to rack app' do - subject(:response) { get '/rack/hello/world' } - - it do - is_expected.to be_ok - spans.each do |span| - next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - - expect(span.get_tag('http.route')).to eq('/rack/hello/world') - - break - end - end - end - - describe 'request to sinatra app' do - subject(:response) { get '/sinatra/hello/world' } - - it do - is_expected.to be_ok - spans.each do |span| - next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - - expect(span.get_tag('http.route')).to eq('/sinatra/hello/world') - - break - end - end - end - - describe 'request to sinatra app w/param' do - subject(:response) { get '/sinatra/hello/7' } - - it do - is_expected.to be_ok - spans.each do |span| - next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - - expect(span.get_tag('http.route')).to eq('/sinatra/hello/:id') - - break - end - end - end - - describe 'request to grape app' do - subject(:response) { get '/grape/hello/world' } - - it do - is_expected.to be_ok - spans.each do |span| - next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - - expect(span.get_tag('http.route')).to eq('/grape/hello/world') - - break - end - end - end - - describe 'request to grape app w/param' do - subject(:response) { get '/grape/hello/7' } - - it do - is_expected.to be_ok - spans.each do |span| - next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - - expect(span.get_tag('http.route')).to eq('/grape/hello/:id') - - break - end - end - end - - describe 'request to rails app' do - subject(:response) { get '/rails/hello/world' } - - it do - is_expected.to be_ok - spans.each do |span| - next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - - expect(span.get_tag('http.route')).to eq('/rails/hello/world') - - break - end - end - end - - describe 'request to rails app w/param' do - subject(:response) { get '/rails/hello/7' } - - it do - is_expected.to be_ok - spans.each do |span| - next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - - expect(span.get_tag('http.route')).to eq('/rails/hello/:id') - - break - end - end - end - end - - context 'nested rack routes' do - include_context 'multi-app' - - describe 'request to nested sinatra app' do - subject(:response) { get '/rack/sinatra/hello/world' } - - it do - is_expected.to be_ok - spans.each do |span| - next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - - expect(span.get_tag('http.route')).to eq('/rack/sinatra/hello/world') - - break - end - end - end - - describe 'request to nested sinatra app w/param' do - subject(:response) { get '/rack/sinatra/hello/7' } - - it do - is_expected.to be_ok - spans.each do |span| - next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - - expect(span.get_tag('http.route')).to eq('/rack/sinatra/hello/:id') - - break - end - end - end - - describe 'request to nested grape app' do - subject(:response) { get '/rack/grape/hello/world' } - - it do - is_expected.to be_ok - spans.each do |span| - next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - - expect(span.get_tag('http.route')).to eq('/rack/grape/hello/world') - - break - end - end - end - - describe 'request to nested grape app w/param' do - subject(:response) { get '/rack/grape/hello/7' } - - it do - is_expected.to be_ok - spans.each do |span| - next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - - expect(span.get_tag('http.route')).to eq('/rack/grape/hello/:id') - - break - end - end - end - - describe 'request to nested rails app' do - subject(:response) { get '/rack/rails/hello/world' } - - it do - is_expected.to be_ok - spans.each do |span| - next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - - expect(span.get_tag('http.route')).to eq('/rack/rails/hello/world') - - break - end - end - end - - describe 'request to nested rails app w/param' do - subject(:response) { get '/rack/rails/hello/7' } - - it do - is_expected.to be_ok - spans.each do |span| - next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - - expect(span.get_tag('http.route')).to eq('/rack/rails/hello/:id') - - break - end - end - end - end -end diff --git a/spec/datadog/tracing/contrib/http_spec.rb b/spec/datadog/tracing/contrib/http_spec.rb index aca3368b53d..3e179f6054e 100644 --- a/spec/datadog/tracing/contrib/http_spec.rb +++ b/spec/datadog/tracing/contrib/http_spec.rb @@ -6,11 +6,13 @@ context 'integration test' do before { Datadog.configure {} } - let(:config) { Datadog.configuration } - describe '#inject' do subject(:inject) { described_class.inject(digest, data) } - let(:digest) { Datadog::Tracing::TraceDigest.new } + let(:trace_id) { Datadog::Tracing::Utils::TraceId.next_id } + let(:span_id) { Datadog::Tracing::Utils.next_id } + let(:digest) do + Datadog::Tracing::TraceDigest.new(trace_id: trace_id, span_id: span_id) + end let(:data) { {} } it 'injects distributed headers' do diff --git a/spec/datadog/tracing/contrib/lograge/patcher_spec.rb b/spec/datadog/tracing/contrib/lograge/patcher_spec.rb index 23536af465b..b94b731c18c 100644 --- a/spec/datadog/tracing/contrib/lograge/patcher_spec.rb +++ b/spec/datadog/tracing/contrib/lograge/patcher_spec.rb @@ -5,10 +5,31 @@ RSpec.describe Datadog::Tracing::Contrib::Lograge::Patcher do describe '.patch' do + before { described_class.instance_variable_get(:@patch_only_once)&.send(:reset_ran_once_state_for_tests) } + it 'adds Instrumentation to ancestors of LogSubscribers::Base class' do described_class.patch expect(Lograge::LogSubscribers::Base.ancestors).to include(Datadog::Tracing::Contrib::Lograge::Instrumentation) end + + context 'without Rails tagged logging' do + it 'does not log incompatibility error' do + expect(Datadog.logger).to_not receive(:warn) + + described_class.patch + end + end + + context 'with Rails tagged logging' do + it 'logs an incompatibility error' do + logger = ActiveSupport::TaggedLogging.new(Logger.new(File::NULL)) + stub_const('Lograge::LogSubscribers::ActionController', double('controller', logger: logger)) + + expect(Datadog.logger).to receive(:warn).with(/ActiveSupport::TaggedLogging/) + + described_class.patch + end + end end end diff --git a/spec/datadog/tracing/contrib/patcher_spec.rb b/spec/datadog/tracing/contrib/patcher_spec.rb index f51443fb38a..240ea877e66 100644 --- a/spec/datadog/tracing/contrib/patcher_spec.rb +++ b/spec/datadog/tracing/contrib/patcher_spec.rb @@ -9,10 +9,6 @@ RSpec::Mocks.space.any_instance_proxy_for(Datadog::Tracing::Contrib::Patcher::CommonMethods).unstub(:on_patch_error) end - RSpec::Matchers.define :a_patch_error do |name| - match { |actual| actual.include?("Failed to apply #{name} patch.") } - end - describe 'implemented in a class' do describe 'class behavior' do describe '#patch' do @@ -82,10 +78,6 @@ def self.target_version end context 'when patcher .patch raises an error' do - before do - allow(Datadog.logger).to receive(:error) - end - context 'and .target_version is not defined' do let(:patcher) do stub_const( @@ -101,9 +93,12 @@ def self.patch end it 'handles the error' do + expect(Datadog.logger).to receive(:error).with(/Failed to apply TestPatcher patch/) + expect(Datadog::Core::Telemetry::Logger).to receive(:report) + .with(an_instance_of(StandardError), description: 'Failed to apply TestPatcher patch') + expect { patch }.to_not raise_error - expect(Datadog.logger).to have_received(:error) - .with(a_patch_error(patcher.name)) + expect(health_metrics).to have_received(:error_instrumentation_patch) .with(1, tags: array_including('patcher:TestPatcher', 'error:StandardError')) end @@ -128,9 +123,12 @@ def self.target_version end it 'handles the error' do + expect(Datadog.logger).to receive(:error).with(/Failed to apply TestPatcher patch/) + expect(Datadog::Core::Telemetry::Logger).to receive(:report) + .with(an_instance_of(StandardError), description: 'Failed to apply TestPatcher patch') + expect { patch }.to_not raise_error - expect(Datadog.logger).to have_received(:error) - .with(a_patch_error(patcher.name)) + expect(health_metrics).to have_received(:error_instrumentation_patch) .with(1, tags: array_including('patcher:TestPatcher', 'error:StandardError', 'target_version:1.0')) end @@ -193,11 +191,7 @@ def self.patch subject(:on_patch_error) { patcher.on_patch_error(error) } - let(:error) { instance_double('error', class: StandardError, message: nil, backtrace: []) } - - before do - allow(Datadog.logger).to receive(:error) - end + let(:error) { StandardError.new('Oops..').tap { |e| e.set_backtrace([]) } } context 'and .target_version is not defined' do let(:patcher) do @@ -205,9 +199,11 @@ def self.patch end it 'handles the error' do + expect(Datadog.logger).to receive(:error).with(/Failed to apply TestPatcher patch/) + expect(Datadog::Core::Telemetry::Logger).to receive(:report) + .with(an_instance_of(StandardError), description: 'Failed to apply TestPatcher patch') + subject - expect(Datadog.logger).to have_received(:error) - .with(a_patch_error(patcher.name)) expect(health_metrics).to have_received(:error_instrumentation_patch) .with(1, tags: array_including('patcher:TestPatcher', 'error:StandardError')) end @@ -228,9 +224,12 @@ def self.target_version end it 'handles the error' do + expect(Datadog.logger).to receive(:error).with(/Failed to apply TestPatcher patch/) + expect(Datadog::Core::Telemetry::Logger).to receive(:report) + .with(an_instance_of(StandardError), description: 'Failed to apply TestPatcher patch') + subject - expect(Datadog.logger).to have_received(:error) - .with(a_patch_error(patcher.name)) + expect(health_metrics).to have_received(:error_instrumentation_patch) .with(1, tags: array_including('patcher:TestPatcher', 'error:StandardError', 'target_version:1.0')) end @@ -280,11 +279,7 @@ def patch subject(:on_patch_error) { patcher.on_patch_error(error) } - let(:error) { instance_double('error', class: StandardError, message: nil, backtrace: []) } - - before do - allow(Datadog.logger).to receive(:error) - end + let(:error) { StandardError.new('Oops..').tap { |e| e.set_backtrace([]) } } context 'and .target_version is not defined' do let(:patcher_class) do @@ -292,9 +287,12 @@ def patch end it 'handles the error' do + expect(Datadog.logger).to receive(:error).with(/Failed to apply TestPatcher patch/) + expect(Datadog::Core::Telemetry::Logger).to receive(:report) + .with(an_instance_of(StandardError), description: 'Failed to apply TestPatcher patch') + subject - expect(Datadog.logger).to have_received(:error) - .with(a_patch_error(patcher_class.name)) + expect(health_metrics).to have_received(:error_instrumentation_patch) .with(1, tags: array_including('patcher:TestPatcher', 'error:StandardError')) end @@ -315,9 +313,12 @@ def target_version end it 'handles the error' do + expect(Datadog.logger).to receive(:error).with(/Failed to apply TestPatcher patch/) + expect(Datadog::Core::Telemetry::Logger).to receive(:report) + .with(an_instance_of(StandardError), description: 'Failed to apply TestPatcher patch') + subject - expect(Datadog.logger).to have_received(:error) - .with(a_patch_error(patcher_class.name)) + expect(health_metrics).to have_received(:error_instrumentation_patch) .with(1, tags: array_including('patcher:TestPatcher', 'error:StandardError', 'target_version:1.0')) end @@ -395,10 +396,6 @@ def self.target_version end context 'when patcher .patch raises an error' do - before do - allow(Datadog.logger).to receive(:error) - end - context 'and .target_version is not defined' do let(:patcher) do stub_const( @@ -414,9 +411,12 @@ def self.patch end it 'handles the error' do + expect(Datadog.logger).to receive(:error).with(/Failed to apply TestPatcher patch/) + expect(Datadog::Core::Telemetry::Logger).to receive(:report) + .with(an_instance_of(StandardError), description: 'Failed to apply TestPatcher patch') + expect { patch }.to_not raise_error - expect(Datadog.logger).to have_received(:error) - .with(a_patch_error(patcher.name)) + expect(health_metrics).to have_received(:error_instrumentation_patch) .with(1, tags: array_including('patcher:TestPatcher', 'error:StandardError')) end @@ -441,9 +441,12 @@ def self.target_version end it 'handles the error' do + expect(Datadog.logger).to receive(:error).with(/Failed to apply TestPatcher patch/) + expect(Datadog::Core::Telemetry::Logger).to receive(:report) + .with(an_instance_of(StandardError), description: 'Failed to apply TestPatcher patch') + expect { patch }.to_not raise_error - expect(Datadog.logger).to have_received(:error) - .with(a_patch_error(patcher.name)) + expect(health_metrics).to have_received(:error_instrumentation_patch) .with(1, tags: array_including('patcher:TestPatcher', 'error:StandardError', 'target_version:1.0')) end @@ -506,11 +509,7 @@ def self.patch subject(:on_patch_error) { patcher.on_patch_error(error) } - let(:error) { instance_double('error', class: StandardError, message: nil, backtrace: []) } - - before do - allow(Datadog.logger).to receive(:error) - end + let(:error) { StandardError.new('Oops..').tap { |e| e.set_backtrace([]) } } context 'and .target_version is not defined' do let(:patcher) do @@ -518,9 +517,12 @@ def self.patch end it 'handles the error' do + expect(Datadog.logger).to receive(:error).with(/Failed to apply TestPatcher patch/) + expect(Datadog::Core::Telemetry::Logger).to receive(:report) + .with(an_instance_of(StandardError), description: 'Failed to apply TestPatcher patch') + subject - expect(Datadog.logger).to have_received(:error) - .with(a_patch_error(patcher.name)) + expect(health_metrics).to have_received(:error_instrumentation_patch) .with(1, tags: array_including('patcher:TestPatcher', 'error:StandardError')) end @@ -541,9 +543,12 @@ def self.target_version end it 'handles the error' do + expect(Datadog.logger).to receive(:error).with(/Failed to apply TestPatcher patch/) + expect(Datadog::Core::Telemetry::Logger).to receive(:report) + .with(an_instance_of(StandardError), description: 'Failed to apply TestPatcher patch') + subject - expect(Datadog.logger).to have_received(:error) - .with(a_patch_error(patcher.name)) + expect(health_metrics).to have_received(:error_instrumentation_patch) .with(1, tags: array_including('patcher:TestPatcher', 'error:StandardError', 'target_version:1.0')) end diff --git a/spec/datadog/tracing/contrib/propagation/sql_comment/mode_spec.rb b/spec/datadog/tracing/contrib/propagation/sql_comment/mode_spec.rb index 8a9f543e2bc..d3a88ff86a4 100644 --- a/spec/datadog/tracing/contrib/propagation/sql_comment/mode_spec.rb +++ b/spec/datadog/tracing/contrib/propagation/sql_comment/mode_spec.rb @@ -1,6 +1,8 @@ require 'datadog/tracing/contrib/propagation/sql_comment/mode' RSpec.describe Datadog::Tracing::Contrib::Propagation::SqlComment::Mode do + let(:append) { false } + describe '#enabled?' do [ ['disabled', false], @@ -9,7 +11,7 @@ ['undefined', false] ].each do |string, result| context "when given `#{string}`" do - subject { described_class.new(string).enabled? } + subject { described_class.new(string, append).enabled? } it { is_expected.to be result } end end @@ -23,7 +25,7 @@ ['undefined', false] ].each do |string, result| context "when given `#{string}`" do - subject { described_class.new(string).service? } + subject { described_class.new(string, append).service? } it { is_expected.to be result } end end @@ -37,7 +39,19 @@ ['undefined', false] ].each do |string, result| context "when given `#{string}`" do - subject { described_class.new(string).full? } + subject { described_class.new(string, append).full? } + it { is_expected.to be result } + end + end + end + + describe '#append?' do + [ + [false, false], + [true, true] + ].each do |value, result| + context "when given `#{value}`" do + subject { described_class.new('full', value).append? } it { is_expected.to be result } end end diff --git a/spec/datadog/tracing/contrib/propagation/sql_comment_spec.rb b/spec/datadog/tracing/contrib/propagation/sql_comment_spec.rb index 87df9b402d1..9217b684fa2 100644 --- a/spec/datadog/tracing/contrib/propagation/sql_comment_spec.rb +++ b/spec/datadog/tracing/contrib/propagation/sql_comment_spec.rb @@ -2,7 +2,8 @@ require 'datadog/tracing/contrib/propagation/sql_comment/mode' RSpec.describe Datadog::Tracing::Contrib::Propagation::SqlComment do - let(:propagation_mode) { Datadog::Tracing::Contrib::Propagation::SqlComment::Mode.new(mode) } + let(:propagation_mode) { Datadog::Tracing::Contrib::Propagation::SqlComment::Mode.new(mode, append) } + let(:append) { false } describe '.annotate!' do let(:span_op) { Datadog::Tracing::SpanOperation.new('sql_comment_propagation_span', service: 'db_service') } @@ -46,6 +47,7 @@ end let(:sql_statement) { 'SELECT 1' } + let(:append) { false } context 'when tracing is enabled' do before do @@ -152,6 +154,14 @@ ) end end + + context 'when append is true' do + let(:append) { true } + + it 'appends the comment after the sql statement' do + is_expected.to eq("#{sql_statement} /*dde='dev',ddps='api',ddpv='1.2',dddbs='db_service'*/") + end + end end context 'when `full` mode' do diff --git a/spec/datadog/tracing/contrib/rack/http_route_spec.rb b/spec/datadog/tracing/contrib/rack/http_route_spec.rb new file mode 100644 index 00000000000..d5d943c7c2c --- /dev/null +++ b/spec/datadog/tracing/contrib/rack/http_route_spec.rb @@ -0,0 +1,73 @@ +require 'datadog/tracing/contrib/support/spec_helper' + +require 'rack/test' + +require 'datadog' +require 'datadog/tracing/contrib/rack/middlewares' + +RSpec.describe 'Rack testing for http.route' do + include Rack::Test::Methods + + around(:suite) do |example| + Datadog.configure do |c| + c.tracing.instrument :rack + end + + example.run + ensure + Datadog.configuration.tracing[:rack].reset! + end + + let(:app) do + app = rack_app + + Rack::Builder.new do + use Datadog::Tracing::Contrib::Rack::TraceMiddleware + + map('/') { run app } + map('/rack') { run app } + end.to_app + end + + let(:rack_app) do + Rack::Builder.new do + map '/hello/world' do + run ->(_env) { [200, { 'content-type' => 'text/plain' }, 'hello world'] } + end + + map '/hello/:id' do + run ->(_env) { [200, { 'content-type' => 'text/plain' }, "hello #{params[:id]}"] } + end + end + end + + it 'sets http.route tag on request to base route' do + response = get('/hello/world') + + expect(response).to be_ok + expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/hello/world') + end + + it 'sets http.route tag on request to nested app route' do + response = get('/rack/hello/world') + + expect(response).to be_ok + expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/rack/hello/world') + end + + it 'sets no http.route tag when response status is 404' do + response = get('/no_route') + + expect(response).to be_not_found + expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to be_nil + end + + def request_span + spans.detect do |span| + span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + end + end +end diff --git a/spec/datadog/tracing/contrib/rails/rack_spec.rb b/spec/datadog/tracing/contrib/rails/rack_spec.rb index f0b58c89231..9967decb34d 100644 --- a/spec/datadog/tracing/contrib/rails/rack_spec.rb +++ b/spec/datadog/tracing/contrib/rails/rack_spec.rb @@ -151,6 +151,8 @@ def internal_server_error .to eq('rack') expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('request') + expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/full') expect(controller_span.name).to eq('rails.action_controller') expect(controller_span.type).to eq('web') @@ -387,6 +389,8 @@ def internal_server_error .to eq('rack') expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('request') + expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/error') expect(controller_span.name).to eq('rails.action_controller') expect(controller_span).to have_error @@ -422,6 +426,8 @@ def internal_server_error .to eq('rack') expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('request') + expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/soft_error') expect(controller_span.name).to eq('rails.action_controller') expect(controller_span).to have_error @@ -460,6 +466,8 @@ def internal_server_error .to eq('rack') expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('request') + expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/sub_error') expect(controller_span.name).to eq('rails.action_controller') expect(controller_span).to have_error @@ -573,6 +581,7 @@ def internal_server_error request_span = spans[0] expect(trace.resource).to eq('GET 404') + expect(trace.send(:meta)).not_to have_key('http.route') expect(request_span.name).to eq('rack.request') expect(request_span.type).to eq('web') @@ -599,6 +608,7 @@ def internal_server_error request_span = spans[0] expect(trace.resource).to eq('TestController#explicitly_not_found') + expect(trace.send(:meta).fetch('http.route')).to eq('/explicitly_not_found') expect(request_span.name).to eq('rack.request') expect(request_span.type).to eq('web') diff --git a/spec/datadog/tracing/contrib/rails/rails_helper.rb b/spec/datadog/tracing/contrib/rails/rails_helper.rb index 1fe3866197e..5781beb4175 100644 --- a/spec/datadog/tracing/contrib/rails/rails_helper.rb +++ b/spec/datadog/tracing/contrib/rails/rails_helper.rb @@ -1,7 +1,7 @@ require 'datadog/tracing/contrib/support/spec_helper' require 'logger' -require 'rails' +require 'rails/all' require 'spec/datadog/tracing/contrib/rails/support/configuration' require 'spec/datadog/tracing/contrib/rails/support/database' diff --git a/spec/datadog/tracing/contrib/rails/runner_spec.rb b/spec/datadog/tracing/contrib/rails/runner_spec.rb index 388951ac72f..79e05d73215 100644 --- a/spec/datadog/tracing/contrib/rails/runner_spec.rb +++ b/spec/datadog/tracing/contrib/rails/runner_spec.rb @@ -136,6 +136,14 @@ expect(span.get_tag('operation')).to eq('runner.inline') end + context "when a current span isn't detected" do + it "doesn't error when a span can't be identified to set the source tag on" do + allow(Datadog::Tracing).to receive(:active_span).and_return(nil) + + expect { run }.to output('OK').to_stdout + end + end + include_context 'with a custom service name' include_context 'with source code too long' diff --git a/spec/datadog/tracing/contrib/rails/support/base.rb b/spec/datadog/tracing/contrib/rails/support/base.rb index 2c674c1174a..c659a012aea 100644 --- a/spec/datadog/tracing/contrib/rails/support/base.rb +++ b/spec/datadog/tracing/contrib/rails/support/base.rb @@ -1,5 +1,3 @@ -require 'rails/all' - require_relative 'controllers' require_relative 'models' require_relative 'log_configuration' diff --git a/spec/datadog/tracing/contrib/rails/support/deprecation.rb b/spec/datadog/tracing/contrib/rails/support/deprecation.rb index 095cd45bfcc..5724fa9a582 100644 --- a/spec/datadog/tracing/contrib/rails/support/deprecation.rb +++ b/spec/datadog/tracing/contrib/rails/support/deprecation.rb @@ -4,5 +4,11 @@ def raise_on_rails_deprecation! # was introduced that allows fine grain configuration # of which warnings are allowed, in case we need # such feature. - ActiveSupport::Deprecation.behavior = :raise + # + # In Rails 7.1 calling ActiveSupport::Deprecation.behavior= is deprecated + if defined?(Rails) && Rails.gem_version >= Gem::Version.new(7.1) + Rails.deprecator.behavior = :raise + else + ActiveSupport::Deprecation.behavior = :raise + end end diff --git a/spec/datadog/tracing/contrib/rails/support/models.rb b/spec/datadog/tracing/contrib/rails/support/models.rb index f55ade1ec75..6c9613c0b25 100644 --- a/spec/datadog/tracing/contrib/rails/support/models.rb +++ b/spec/datadog/tracing/contrib/rails/support/models.rb @@ -1,10 +1,12 @@ RSpec.shared_context 'Rails models' do let(:application_record) do - stub_const( - 'ApplicationRecord', - Class.new(ActiveRecord::Base) do - self.abstract_class = true - end - ) + unless (defined? no_db) && no_db + stub_const( + 'ApplicationRecord', + Class.new(ActiveRecord::Base) do + self.abstract_class = true + end + ) + end end end diff --git a/spec/datadog/tracing/contrib/rails/support/rails4.rb b/spec/datadog/tracing/contrib/rails/support/rails4.rb index 85ebf284ed6..bbbf0697e69 100644 --- a/spec/datadog/tracing/contrib/rails/support/rails4.rb +++ b/spec/datadog/tracing/contrib/rails/support/rails4.rb @@ -1,4 +1,5 @@ -require 'rails/all' +# We may not always want to require rails/all, especially when we don't have a database. +# Require is already always done where Rails test application is used, manually or through rails_helper. if ENV['USE_SIDEKIQ'] require 'sidekiq/testing' diff --git a/spec/datadog/tracing/contrib/rails/support/rails5.rb b/spec/datadog/tracing/contrib/rails/support/rails5.rb index 3200e5d6206..8b149a4d48e 100644 --- a/spec/datadog/tracing/contrib/rails/support/rails5.rb +++ b/spec/datadog/tracing/contrib/rails/support/rails5.rb @@ -1,7 +1,9 @@ -require 'rails/all' # Loaded by the `bin/rails` script in a real Rails application require 'rails/command' +# We may not always want to require rails/all, especially when we don't have a database. +# Require is already always done where Rails test application is used, manually or through rails_helper. + if ENV['USE_SIDEKIQ'] require 'sidekiq/testing' require 'datadog/tracing/contrib/sidekiq/server_tracer' @@ -34,14 +36,16 @@ def config.database_configuration instance_eval(&during_init) - config.active_job.queue_adapter = :inline - if ENV['USE_SIDEKIQ'] - config.active_job.queue_adapter = :sidekiq - # add Sidekiq middleware - Sidekiq::Testing.server_middleware do |chain| - chain.add( - Datadog::Tracing::Contrib::Sidekiq::ServerTracer - ) + if defined?(ActiveJob) + config.active_job.queue_adapter = :inline + if ENV['USE_SIDEKIQ'] + config.active_job.queue_adapter = :sidekiq + # add Sidekiq middleware + Sidekiq::Testing.server_middleware do |chain| + chain.add( + Datadog::Tracing::Contrib::Sidekiq::ServerTracer + ) + end end end end @@ -62,11 +66,13 @@ def config.database_configuration end end - Rails.application.config.active_job.queue_adapter = if ENV['USE_SIDEKIQ'] - :sidekiq - else - :inline - end + if Rails.application.config.respond_to?(:active_job) + Rails.application.config.active_job.queue_adapter = if ENV['USE_SIDEKIQ'] + :sidekiq + else + :inline + end + end before_test_init.call initialize! @@ -89,7 +95,7 @@ def config.database_configuration append_controllers! # Force connection to initialize, and dump some spans - application_record.connection + application_record&.connection # Skip default Rails exception page rendering. # This avoid polluting the trace under test diff --git a/spec/datadog/tracing/contrib/rails/support/rails6.rb b/spec/datadog/tracing/contrib/rails/support/rails6.rb index 21a43c81eb8..212f9c9a81b 100644 --- a/spec/datadog/tracing/contrib/rails/support/rails6.rb +++ b/spec/datadog/tracing/contrib/rails/support/rails6.rb @@ -1,7 +1,9 @@ -require 'rails/all' # Loaded by the `bin/rails` script in a real Rails application require 'rails/command' +# We may not always want to require rails/all, especially when we don't have a database. +# require is already done where Rails test application is used, manually or through rails_helper. + if ENV['USE_SIDEKIQ'] require 'sidekiq/testing' require 'datadog/tracing/contrib/sidekiq/server_tracer' @@ -37,14 +39,16 @@ def config.database_configuration instance_eval(&during_init) - config.active_job.queue_adapter = :inline - if ENV['USE_SIDEKIQ'] - config.active_job.queue_adapter = :sidekiq - # add Sidekiq middleware - Sidekiq::Testing.server_middleware do |chain| - chain.add( - Datadog::Tracing::Contrib::Sidekiq::ServerTracer - ) + if config.respond_to?(:active_job) + config.active_job.queue_adapter = :inline + if ENV['USE_SIDEKIQ'] + config.active_job.queue_adapter = :sidekiq + # add Sidekiq middleware + Sidekiq::Testing.server_middleware do |chain| + chain.add( + Datadog::Tracing::Contrib::Sidekiq::ServerTracer + ) + end end end end @@ -65,11 +69,13 @@ def config.database_configuration end end - Rails.application.config.active_job.queue_adapter = if ENV['USE_SIDEKIQ'] - :sidekiq - else - :inline - end + if Rails.application.config.respond_to?(:active_job) + Rails.application.config.active_job.queue_adapter = if ENV['USE_SIDEKIQ'] + :sidekiq + else + :inline + end + end Rails.application.config.file_watcher = Class.new(ActiveSupport::FileUpdateChecker) do # When running in full application mode, Rails tries to monitor @@ -113,7 +119,7 @@ def initialize(files, dirs = {}, &block) append_controllers! # Force connection to initialize, and dump some spans - application_record.connection + application_record.connection unless (defined? no_db) && no_db # Skip default Rails exception page rendering. # This avoid polluting the trace under test @@ -179,11 +185,11 @@ def reset_rails_configuration! # TODO: Remove this side-effect on missing log entries Lograge.remove_existing_log_subscriptions if defined?(::Lograge) - reset_class_variable(ActiveRecord::Railtie::Configuration, :@@options) + reset_class_variable(ActiveRecord::Railtie::Configuration, :@@options) if Module.const_defined?(:ActiveRecord) # After `deep_dup`, the sentinel `NULL_OPTION` is inadvertently changed. We restore it here. if Rails::VERSION::MINOR < 1 - ActiveRecord::Railtie.config.action_view.finalize_compiled_template_methods = ActionView::Railtie::NULL_OPTION + ActionView::Railtie.config.action_view.finalize_compiled_template_methods = ActionView::Railtie::NULL_OPTION end reset_class_variable(ActiveSupport::Dependencies, :@@autoload_paths) diff --git a/spec/datadog/tracing/contrib/rails/support/rails7.rb b/spec/datadog/tracing/contrib/rails/support/rails7.rb new file mode 100644 index 00000000000..63c20326dbe --- /dev/null +++ b/spec/datadog/tracing/contrib/rails/support/rails7.rb @@ -0,0 +1,213 @@ +# Loaded by the `bin/rails` script in a real Rails application +require 'rails/command' + +# We may not always want to require rails/all, especially when we don't have a database. +# require is already done where Rails test application is used, manually or through rails_helper. + +if ENV['USE_SIDEKIQ'] + require 'sidekiq/testing' + require 'datadog/tracing/contrib/sidekiq/server_tracer' +end + +RSpec.shared_context 'Rails 7 test application' do + let(:rails_base_application) do + klass = Class.new(Rails::Application) do + def config.database_configuration + parsed = super + raise parsed.to_yaml # Replace this line to add custom connections to the hash from database.yml + end + end + during_init = initialize_block + + klass.send(:define_method, :initialize) do |*args| + super(*args) + redis_cache = + if Gem.loaded_specs['redis-activesupport'] + [:redis_store, { url: ENV['REDIS_URL'] }] + else + [:redis_cache_store, { url: ENV['REDIS_URL'] }] + end + file_cache = [:file_store, '/tmp/datadog-rb/cache/'] + + config.load_defaults '7.0' + config.secret_key_base = 'f624861242e4ccf20eacb6bb48a886da' + config.active_record.cache_versioning = false if Gem.loaded_specs['redis-activesupport'] + config.cache_store = ENV['REDIS_URL'] ? redis_cache : file_cache + config.eager_load = false + config.consider_all_requests_local = true + config.hosts.clear # Allow requests for any hostname during tests + config.active_support.remove_deprecated_time_with_zone_name = false + + instance_eval(&during_init) + + if config.respond_to?(:active_job) + config.active_job.queue_adapter = :inline + if ENV['USE_SIDEKIQ'] + config.active_job.queue_adapter = :sidekiq + # add Sidekiq middleware + Sidekiq::Testing.server_middleware do |chain| + chain.add( + Datadog::Tracing::Contrib::Sidekiq::ServerTracer + ) + end + end + end + end + + before_test_init = before_test_initialize_block + after_test_init = after_test_initialize_block + + klass.send(:define_method, :test_initialize!) do + # we want to disable explicit instrumentation + # when testing auto patching + if ENV['TEST_AUTO_INSTRUMENT'] == 'true' + require 'datadog/auto_instrument' + else + # Enables the auto-instrumentation for the testing application + Datadog.configure do |c| + c.tracing.instrument :rails + c.tracing.instrument :redis if Gem.loaded_specs['redis'] && defined?(::Redis) + end + end + + if Rails.application.config.respond_to?(:active_job) + Rails.application.config.active_job.queue_adapter = ENV['USE_SIDEKIQ'] ? :sidekiq : :inline + end + + Rails.application.config.file_watcher = Class.new(ActiveSupport::FileUpdateChecker) do + # When running in full application mode, Rails tries to monitor + # the file system for changes. This causes issues when using + # {ActionView::FixtureResolver} to mock the filesystem for templates + # as this test resolver wasn't meant to work with a full application. + # + # Because {ActionView::FixtureResolver} doesn't have a complete filesystem, + # it sets its base path to '', which later in the file watcher gets translated to: + # "Monitor '**/*' for changes", which means monitoring the whole system, causing + # many "permission denied errors". + # + # This method removes the blank path ('') created by {ActionView::FixtureResolver} + # in order to allow the file watcher to skip monitoring the "filesystem changes" + # of the in-memory fixtures. + def initialize(files, dirs = {}, &block) + dirs = dirs.delete('') if dirs.include?('') + + super(files, dirs, &block) + end + end + + before_test_init.call + initialize! + after_test_init.call + end + Class.new(klass) + end + + let(:before_test_initialize_block) do + proc do + append_routes! + end + end + + let(:after_test_initialize_block) do + proc do + # Rails autoloader recommends controllers to be loaded + # after initialization. This will be enforced when `zeitwerk` + # becomes the only supported autoloader. + append_controllers! + + # Force connection to initialize, and dump some spans + application_record.connection unless (defined? no_db) && no_db + + # Skip default Rails exception page rendering. + # This avoid polluting the trace under test + # with render and partial_render templates for the + # error page. + # + # We could completely disable the {DebugExceptions} middleware, + # but that affects Rails' internal error propagation logic. + # render_for_browser_request(request, wrapper) + allow_any_instance_of(::ActionDispatch::DebugExceptions).to receive(:render_exception) do |this, env, exception| + wrapper = ::ActionDispatch::ExceptionWrapper.new(env, exception) + + this.send(:render, wrapper.status_code, 'Test error response body', 'text/plain') + end + end + end + + around do |example| + reset_rails_configuration! + + example.run + ensure + reset_rails_configuration! + + # Push this to base when Rails 3 removed + # Reset references stored in the Rails class + Rails.app_class = nil + Rails.cache = nil + end + + def append_routes! + # Make sure to load controllers first + # otherwise routes won't draw properly. + test_routes = routes + + rails_test_application.instance.routes.append do + test_routes.each do |k, v| + # no-dd-sa + if k.is_a?(Array) + send(k.first, k.last => v) + else + get k => v + end + end + end + + # ActionText requires ApplicationController to be loaded since Rails 6 + example = self + ActiveSupport.on_load(:action_text_content) do + example.stub_const('ApplicationController', Class.new(ActionController::Base)) + end + end + + def append_controllers! + controllers + end + + # Rails leaves a bunch of global class configuration on Rails::Railtie::Configuration in class variables + # We need to reset these so they don't carry over between example runs + def reset_rails_configuration! + # Reset autoloaded constants + ActiveSupport::Dependencies.clear if Rails.application + + # TODO: Remove this side-effect on missing log entries + Lograge.remove_existing_log_subscriptions if defined?(::Lograge) + + reset_class_variable(ActiveRecord::Railtie::Configuration, :@@options) if Module.const_defined?(:ActiveRecord) + + ActiveSupport::Dependencies.autoload_paths = [] + ActiveSupport::Dependencies.autoload_once_paths = [] + ActiveSupport::Dependencies._eager_load_paths = Set.new + ActiveSupport::Dependencies._autoloaded_tracked_classes = Set.new + + Rails::Railtie::Configuration.class_variable_set(:@@eager_load_namespaces, nil) + Rails::Railtie::Configuration.class_variable_set(:@@watchable_files, nil) + Rails::Railtie::Configuration.class_variable_set(:@@watchable_dirs, nil) + if Rails::Railtie::Configuration.class_variable_defined?(:@@app_middleware) + Rails::Railtie::Configuration.class_variable_set(:@@app_middleware, Rails::Configuration::MiddlewareStackProxy.new) + end + Rails::Railtie::Configuration.class_variable_set(:@@app_generators, nil) + Rails::Railtie::Configuration.class_variable_set(:@@to_prepare_blocks, nil) + end + + # Resets configuration that needs to be restored to its original value + # between each run of a Rails application. + def reset_class_variable(clazz, variable) + value = Datadog::Tracing::Contrib::Rails::Test::Configuration.fetch( + "#{clazz}.#{variable}", + clazz.class_variable_get(variable) + ) + + clazz.class_variable_set(variable, value.deep_dup) + end +end diff --git a/spec/datadog/tracing/contrib/redis/instrumentation_spec.rb b/spec/datadog/tracing/contrib/redis/instrumentation_spec.rb index 847b50c1527..9ac8c4d8b34 100644 --- a/spec/datadog/tracing/contrib/redis/instrumentation_spec.rb +++ b/spec/datadog/tracing/contrib/redis/instrumentation_spec.rb @@ -4,6 +4,8 @@ require 'datadog' RSpec.describe 'Redis instrumentation test' do + skip_unless_integration_testing_enabled + let(:test_host) { ENV.fetch('TEST_REDIS_HOST', '127.0.0.1') } let(:test_port) { ENV.fetch('TEST_REDIS_PORT', 6379).to_i } @@ -20,10 +22,6 @@ Datadog.registry[:redis].reset_configuration! end - before do - skip unless ENV['TEST_DATADOG_INTEGRATION'] - end - RSpec::Matchers.define :be_a_redis_span do match(notify_expectation_failures: true) do |span| expect(span.name).to eq('redis.command') diff --git a/spec/datadog/tracing/contrib/redis/integration_test_spec.rb b/spec/datadog/tracing/contrib/redis/integration_test_spec.rb index 2542ce7bdcd..57c23eda541 100644 --- a/spec/datadog/tracing/contrib/redis/integration_test_spec.rb +++ b/spec/datadog/tracing/contrib/redis/integration_test_spec.rb @@ -5,9 +5,9 @@ require 'datadog' RSpec.describe 'Redis integration test' do - before do - skip unless ENV['TEST_DATADOG_INTEGRATION'] + skip_unless_integration_testing_enabled + before do use_real_tracer! Datadog.configure do |c| diff --git a/spec/datadog/tracing/contrib/redis/miniapp_spec.rb b/spec/datadog/tracing/contrib/redis/miniapp_spec.rb index 528b3251060..5864d453719 100644 --- a/spec/datadog/tracing/contrib/redis/miniapp_spec.rb +++ b/spec/datadog/tracing/contrib/redis/miniapp_spec.rb @@ -6,7 +6,7 @@ require 'datadog' RSpec.describe 'Redis mini app test' do - before { skip unless ENV['TEST_DATADOG_INTEGRATION'] } + skip_unless_integration_testing_enabled before do Datadog.configure { |c| c.tracing.instrument :redis } diff --git a/spec/datadog/tracing/contrib/redis/tags_spec.rb b/spec/datadog/tracing/contrib/redis/tags_spec.rb new file mode 100644 index 00000000000..895ab09361a --- /dev/null +++ b/spec/datadog/tracing/contrib/redis/tags_spec.rb @@ -0,0 +1,24 @@ +require 'spec_helper' +require 'datadog/tracing/contrib/redis/tags' + +require 'datadog/tracing/span_operation' + +RSpec.describe Datadog::Tracing::Contrib::Redis::Tags do + let(:client) { double('client') } + let(:span) { Datadog::Tracing::SpanOperation.new('fake') } + let(:raw_command) { 'SET key value' } + + describe '.set_common_tags' do + context 'when an error occurs' do + it 'logs the error' do + allow(client).to receive(:host).and_raise(StandardError.new('Oops...')) + expect(Datadog.logger).to receive(:error).with('Oops...') + expect(Datadog::Core::Telemetry::Logger).to receive(:report).with(a_kind_of(StandardError)) + + expect do + described_class.set_common_tags(client, span, raw_command) + end.not_to raise_error + end + end + end +end diff --git a/spec/datadog/tracing/contrib/sequel/instrumentation_spec.rb b/spec/datadog/tracing/contrib/sequel/instrumentation_spec.rb index e3ab8fae81b..86f6fddaedb 100644 --- a/spec/datadog/tracing/contrib/sequel/instrumentation_spec.rb +++ b/spec/datadog/tracing/contrib/sequel/instrumentation_spec.rb @@ -47,6 +47,13 @@ String :name end + # Warm up the connection and flushed out some internal queries. + # This mitigates inconsistent ordering during test assertion. + # + # For example: + # - `pg` retrieves the primary key column name of a table named tbl in a PostgreSQL database + sequel[:tbl].insert(name: 'data0') + clear_traces! end @@ -121,7 +128,7 @@ sequel[:tbl].insert(name: 'data1') sequel[:tbl].insert(name: 'data2') data = sequel[:tbl].select.to_a - expect(data.length).to eq(2) + expect(data.length).to eq(3) data.each do |row| expect(row[:name]).to match(/^data.$/) end @@ -151,7 +158,7 @@ [sequel_cmd1_span, "INSERT INTO tbl (name) VALUES ('data1')"], [sequel_cmd2_span, "INSERT INTO tbl (name) VALUES ('data2')"], [sequel_cmd3_span, 'SELECT * FROM tbl'], - # Internal queries run by Sequel (e.g. 'SELECT version()'). + # Internal queries run by Sequel (e.g. 'SELECT version()' for `mysql`). # We don't care about their content, only that they are # correctly tagged. *sequel_internal_spans.map { |span| [span, nil] } diff --git a/spec/datadog/tracing/contrib/sinatra/multi_app_spec.rb b/spec/datadog/tracing/contrib/sinatra/multi_app_spec.rb index 0007524bfcd..edf09d60dd0 100644 --- a/spec/datadog/tracing/contrib/sinatra/multi_app_spec.rb +++ b/spec/datadog/tracing/contrib/sinatra/multi_app_spec.rb @@ -78,7 +78,6 @@ end expect(span.resource).to eq('GET /endpoint') - expect(span.get_tag(Datadog::Tracing::Contrib::Sinatra::Ext::TAG_ROUTE_PATH)).to eq('/endpoint') expect(span.get_tag(Datadog::Tracing::Contrib::Sinatra::Ext::TAG_SCRIPT_NAME)).to eq('/one') end end diff --git a/spec/datadog/tracing/contrib/sinatra/tracer_spec.rb b/spec/datadog/tracing/contrib/sinatra/tracer_spec.rb index 68e1bc3816a..c89148a126f 100644 --- a/spec/datadog/tracing/contrib/sinatra/tracer_spec.rb +++ b/spec/datadog/tracing/contrib/sinatra/tracer_spec.rb @@ -124,6 +124,8 @@ it do is_expected.to be_ok + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)).to eq('/') + expect(span.resource).to eq('GET /') expect(span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_URL)).to eq('/') end @@ -136,6 +138,8 @@ it do expect(response).to be_ok + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)).to eq('/wildcard/*') + expect(span.resource).to eq('GET /wildcard/*') expect(span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_URL)).to eq('/wildcard/1/2/3') # expect(span.get_tag(Datadog::Tracing::Contrib::Sinatra::Ext::TAG_ROUTE_PATH)).to eq('/wildcard/*') @@ -156,6 +160,10 @@ expect(response).to be_ok end + it 'sets http.route on the rack span' do + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)).to eq('/erb') + end + describe 'the sinatra.request span' do subject(:span) { request_span } @@ -210,6 +218,10 @@ expect(spans).to have(5).items end + it 'sets http.route on the rack span' do + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)).to eq('/erb_literal') + end + describe 'the sinatra.request span' do it do expect(span.resource).to eq('GET /erb_literal') @@ -271,6 +283,8 @@ expect(span).to_not have_error_type expect(span).to_not have_error_message expect(span.status).to eq(1) + + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)).to eq('/server_error') end end @@ -283,6 +297,8 @@ expect(span).to have_error_type('RuntimeError') expect(span).to have_error_message('test error') expect(span.status).to eq(1) + + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)).to eq('/error') end end @@ -296,6 +312,8 @@ expect(trace.resource).to eq('GET') + expect(rack_span.tags).not_to have_key(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE) + expect(span.service).to eq(tracer.default_service) expect(span.resource).to eq('GET') expect(span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_METHOD)).to eq('GET') diff --git a/spec/datadog/tracing/contrib/sql_comment_propagation_examples.rb b/spec/datadog/tracing/contrib/sql_comment_propagation_examples.rb index 4f39e1c99d3..0c401a74648 100644 --- a/spec/datadog/tracing/contrib/sql_comment_propagation_examples.rb +++ b/spec/datadog/tracing/contrib/sql_comment_propagation_examples.rb @@ -1,7 +1,7 @@ RSpec.shared_examples_for 'with sql comment propagation' do |span_op_name:, error: nil| context 'when default `disabled`' do it_behaves_like 'propagates with sql comment', mode: 'disabled', span_op_name: span_op_name, error: error do - let(:propagation_mode) { Datadog::Tracing::Contrib::Propagation::SqlComment::Mode.new('disabled') } + let(:propagation_mode) { Datadog::Tracing::Contrib::Propagation::SqlComment::Mode.new('disabled', append_comment) } end end @@ -14,7 +14,7 @@ end it_behaves_like 'propagates with sql comment', mode: 'service', span_op_name: span_op_name, error: error do - let(:propagation_mode) { Datadog::Tracing::Contrib::Propagation::SqlComment::Mode.new('service') } + let(:propagation_mode) { Datadog::Tracing::Contrib::Propagation::SqlComment::Mode.new('service', append_comment) } end end @@ -25,16 +25,18 @@ end it_behaves_like 'propagates with sql comment', mode: mode, span_op_name: span_op_name, error: error do - let(:propagation_mode) { Datadog::Tracing::Contrib::Propagation::SqlComment::Mode.new(mode) } + let(:propagation_mode) { Datadog::Tracing::Contrib::Propagation::SqlComment::Mode.new(mode, append_comment) } end end end end RSpec.shared_examples_for 'propagates with sql comment' do |mode:, span_op_name:, error: nil| + let(:append_comment) { false } + it "propagates with mode: #{mode}" do expect(Datadog::Tracing::Contrib::Propagation::SqlComment::Mode) - .to receive(:new).with(mode).and_return(propagation_mode) + .to receive(:new).with(mode, append_comment).and_return(propagation_mode) if error expect { subject }.to raise_error(error) @@ -71,4 +73,26 @@ propagation_mode ) end + + context 'in append mode' do + let(:append_comment) { true } + let(:configuration_options) { super().merge(append_comment: append_comment) } + + it 'appends sql comment to the sql statement' do + allow(Datadog::Tracing::Contrib::Propagation::SqlComment).to receive(:prepend_comment).and_call_original + + if error + expect { subject }.to raise_error(error) + else + subject + end + + expect(Datadog::Tracing::Contrib::Propagation::SqlComment).to have_received(:prepend_comment).with( + sql_statement, + a_span_operation_with(service: service_name), + duck_type(:to_digest), + propagation_mode + ) + end + end end diff --git a/spec/datadog/tracing/contrib/stripe/request_spec.rb b/spec/datadog/tracing/contrib/stripe/request_spec.rb index 5159d07bde3..2a8f522c1ea 100644 --- a/spec/datadog/tracing/contrib/stripe/request_spec.rb +++ b/spec/datadog/tracing/contrib/stripe/request_spec.rb @@ -41,7 +41,9 @@ expect(spans).to have(1).items expect(span.name).to eq('stripe.request') expect(span.resource).to eq('stripe.request') - expect(span.get_tag('stripe.request.id')).to eq('abc-123-def-456') + if Gem::Version.new(Stripe::VERSION) >= Gem::Version.new('5.38.0') + expect(span.get_tag('stripe.request.id')).to eq('abc-123-def-456') + end expect(span.get_tag('stripe.request.http_status')).to eq('200') expect(span.get_tag('stripe.request.method')).to eq('get') expect(span.get_tag('stripe.request.path')).to eq('/v1/customers/cus_123') @@ -69,7 +71,9 @@ def object_name expect(spans).to have(1).items expect(span.name).to eq('stripe.request') expect(span.resource).to eq('stripe.customer') - expect(span.get_tag('stripe.request.id')).to eq('abc-123-def-456') + if Gem::Version.new(Stripe::VERSION) >= Gem::Version.new('5.38.0') + expect(span.get_tag('stripe.request.id')).to eq('abc-123-def-456') + end expect(span.get_tag('stripe.request.http_status')).to eq('200') expect(span.get_tag('stripe.request.method')).to eq('get') expect(span.get_tag('stripe.request.path')).to eq('/v1/customers/cus_123') diff --git a/spec/datadog/tracing/diagnostics/environment_logger_spec.rb b/spec/datadog/tracing/diagnostics/environment_logger_spec.rb index 22f6a124451..834a38a62a5 100644 --- a/spec/datadog/tracing/diagnostics/environment_logger_spec.rb +++ b/spec/datadog/tracing/diagnostics/environment_logger_spec.rb @@ -23,12 +23,13 @@ end describe '#collect_and_log!' do + include_context 'non-development execution environment' + subject(:collect_and_log!) { env_logger.collect_and_log! } let(:logger) { instance_double(Datadog::Core::Logger) } before do - allow(env_logger).to receive(:rspec?).and_return(false) # Allow rspec to log for testing purposes allow(Datadog).to receive(:logger).and_return(logger) allow(logger).to receive(:debug?).and_return true allow(logger).to receive(:debug) @@ -91,22 +92,10 @@ end end - context 'under a REPL' do - around do |example| - begin - original = $PROGRAM_NAME - $0 = 'irb' - example.run - ensure - $0 = original - end - end + context 'in a development execution environment' do + before { allow(Datadog::Core::Environment::Execution).to receive(:development?).and_return(true) } context 'with default settings' do - before do - allow(env_logger).to receive(:rspec?).and_return(true) # Prevent rspec from logging - end - it do collect_and_log! expect(logger).to_not have_received(:info) diff --git a/spec/datadog/tracing/integration_spec.rb b/spec/datadog/tracing/integration_spec.rb index 4aa9cd4fe66..6824a123612 100644 --- a/spec/datadog/tracing/integration_spec.rb +++ b/spec/datadog/tracing/integration_spec.rb @@ -20,9 +20,9 @@ RSpec.describe 'Tracer integration tests' do shared_context 'agent-based test' do - before do - skip unless ENV['TEST_DATADOG_INTEGRATION'] + skip_unless_integration_testing_enabled + before do # Ensure background Writer worker doesn't wait, making tests faster. stub_const('Datadog::Tracing::Workers::AsyncTransport::DEFAULT_FLUSH_INTERVAL', 0) @@ -222,7 +222,11 @@ def agent_receives_span_step3(previous_success) @span = trace.spans[0] end - tracer.trace('my.op').finish + tracer.trace('my.op', service: 'my.service') do |span| + span.set_tag('tag', 'tag_value') + span.set_tag('tag2', 'tag_value2') + span.resource = 'my.resource' + end try_wait_until { tracer.writer.stats[:traces_flushed] >= 1 } @@ -319,6 +323,87 @@ def agent_receives_span_step3(previous_success) it_behaves_like 'sampling decision', '-3' end + context 'with a matching resource name' do + include_context 'DD_TRACE_SAMPLING_RULES configuration' do + let(:rule) { { resource: 'my.resource', sample_rate: 1.0 } } + end + + it_behaves_like 'flushed trace' + it_behaves_like 'priority sampled', Datadog::Tracing::Sampling::Ext::Priority::USER_KEEP + it_behaves_like 'rule sampling rate metric', 1.0 + it_behaves_like 'rate limit metric', 1.0 + it_behaves_like 'sampling decision', '-3' + end + + context 'with a matching service name' do + include_context 'DD_TRACE_SAMPLING_RULES configuration' do + let(:rule) { { service: 'my.service', sample_rate: 1.0 } } + end + + it_behaves_like 'flushed trace' + it_behaves_like 'priority sampled', Datadog::Tracing::Sampling::Ext::Priority::USER_KEEP + it_behaves_like 'rule sampling rate metric', 1.0 + it_behaves_like 'rate limit metric', 1.0 + it_behaves_like 'sampling decision', '-3' + end + + context 'with matching tags' do + include_context 'DD_TRACE_SAMPLING_RULES configuration' do + let(:rule) { { tags: { tag: 'tag_value', tag2: 'tag_value2' }, sample_rate: 1.0 } } + end + + it_behaves_like 'flushed trace' + it_behaves_like 'priority sampled', Datadog::Tracing::Sampling::Ext::Priority::USER_KEEP + it_behaves_like 'rule sampling rate metric', 1.0 + it_behaves_like 'rate limit metric', 1.0 + it_behaves_like 'sampling decision', '-3' + end + + context 'with matching tags and matching service and matching resource' do + include_context 'DD_TRACE_SAMPLING_RULES configuration' do + let(:rule) do + { resource: 'my.resource', service: 'my.service', tags: { tag: 'tag_value', tag2: 'tag_value2' }, + sample_rate: 1.0 } + end + end + + it_behaves_like 'flushed trace' + it_behaves_like 'priority sampled', Datadog::Tracing::Sampling::Ext::Priority::USER_KEEP + it_behaves_like 'rule sampling rate metric', 1.0 + it_behaves_like 'rate limit metric', 1.0 + it_behaves_like 'sampling decision', '-3' + end + + context 'with not matching tags and matching service and matching resource' do + include_context 'DD_TRACE_SAMPLING_RULES configuration' do + let(:rule) do + { resource: 'my.resource', service: 'my.service', tags: { tag: 'wrong_tag_value' }, + sample_rate: 1.0 } + end + end + + it_behaves_like 'flushed trace' + it_behaves_like 'priority sampled', Datadog::Tracing::Sampling::Ext::Priority::AUTO_KEEP + it_behaves_like 'rule sampling rate metric', nil # Rule is not applied + it_behaves_like 'rate limit metric', nil # Rate limiter is never reached, thus has no value to provide + it_behaves_like 'sampling decision', '-0' + end + + context 'drop with matching tags and matching service and matching resource' do + include_context 'DD_TRACE_SAMPLING_RULES configuration' do + let(:rule) do + { resource: 'my.resource', service: 'my.service', tags: { tag: 'tag_value' }, + sample_rate: 0 } + end + end + + it_behaves_like 'flushed trace' + it_behaves_like 'priority sampled', Datadog::Tracing::Sampling::Ext::Priority::USER_REJECT + it_behaves_like 'rule sampling rate metric', 0.0 + it_behaves_like 'rate limit metric', nil # Rate limiter is never reached, thus has no value to provide + it_behaves_like 'sampling decision', nil + end + context 'with low sample rate' do let(:rule) { Datadog::Tracing::Sampling::SimpleRule.new(sample_rate: Float::MIN) } diff --git a/spec/datadog/tracing/metadata/errors_spec.rb b/spec/datadog/tracing/metadata/errors_spec.rb index 1d9d61ca09a..7ac7392a500 100644 --- a/spec/datadog/tracing/metadata/errors_spec.rb +++ b/spec/datadog/tracing/metadata/errors_spec.rb @@ -12,21 +12,23 @@ end end - describe '#set_error_tags' do - subject(:set_error_tags) { test_object.set_error_tags(error) } + Array(['set_error', 'set_error_tags']) do |method_name| + describe "##{method_name}" do + subject(:error_setter) { test_object.send(method_name) } - let(:error) { RuntimeError.new('oops') } - let(:backtrace) { %w[method1 method2 method3] } + let(:error) { RuntimeError.new('oops') } + let(:backtrace) { %w[method1 method2 method3] } - before { error.set_backtrace(backtrace) } + before { error.set_backtrace(backtrace) } - it do - set_error_tags + it do + error_setter - expect(test_object).to have_error_message('oops') - expect(test_object).to have_error_type('RuntimeError') - backtrace.each do |method| - expect(test_object).to have_error_stack(include(method)) + expect(test_object).to have_error_message('oops') + expect(test_object).to have_error_type('RuntimeError') + backtrace.each do |method| + expect(test_object).to have_error_stack(include(method)) + end end end end diff --git a/spec/datadog/tracing/remote_spec.rb b/spec/datadog/tracing/remote_spec.rb index 00d57036f39..5755a1903e3 100644 --- a/spec/datadog/tracing/remote_spec.rb +++ b/spec/datadog/tracing/remote_spec.rb @@ -9,11 +9,13 @@ end it 'declares rule sampling capabilities' do - expect(remote.capabilities).to eq([1 << 29]) + expect(remote.capabilities).to contain_exactly(1 << 12, 1 << 13, 1 << 14, 1 << 29) end it 'declares matches that match APM_TRACING' do - expect(remote.receivers).to all( + telemetry = instance_double(Datadog::Core::Telemetry::Component) + + expect(remote.receivers(telemetry)).to all( match( lambda do |receiver| receiver.match? Datadog::Core::Remote::Configuration::Path.parse(path) diff --git a/spec/datadog/tracing/sampling/matcher_spec.rb b/spec/datadog/tracing/sampling/matcher_spec.rb index d50de571cc9..e1f28b63363 100644 --- a/spec/datadog/tracing/sampling/matcher_spec.rb +++ b/spec/datadog/tracing/sampling/matcher_spec.rb @@ -120,6 +120,20 @@ let(:tags) { { 'metric1' => '1', 'metric2' => '3' } } it { is_expected.to eq(false) } + + context 'with a float that has a non-zero decimal' do + let(:tags) { { 'metric1' => '2*' } } + let(:trace_tags) { { 'metric1' => 20.1 } } + + it { is_expected.to eq(false) } + end + + context 'with a float that has a zero decimal' do + let(:tags) { { 'metric1' => '2*' } } + let(:trace_tags) { { 'metric1' => 20.0 } } + + it { is_expected.to eq(true) } + end end end @@ -151,6 +165,13 @@ it { is_expected.to eq(true) } end + + context 'when multiple *s are used' do + let(:trace_service) { 'hello_service' } + let(:service) { '***' } + + it { is_expected.to eq(true) } + end end context 'with a resource matcher' do diff --git a/spec/datadog/tracing/sampling/rate_sampler_spec.rb b/spec/datadog/tracing/sampling/rate_sampler_spec.rb index 5c26c02b47f..993efb1d0b4 100644 --- a/spec/datadog/tracing/sampling/rate_sampler_spec.rb +++ b/spec/datadog/tracing/sampling/rate_sampler_spec.rb @@ -22,6 +22,12 @@ it_behaves_like 'sampler with sample rate', 1.0 do let(:trace) { nil } end + + it do + expect(Datadog.logger).to receive(:warn).with('sample rate is not between 0 and 1, falling back to 1') + + sampler + end end context 'that is 0' do @@ -46,6 +52,12 @@ let(:sample_rate) { 1.5 } it_behaves_like 'sampler with sample rate', 1.0 + + it do + expect(Datadog.logger).to receive(:warn).with('sample rate is not between 0 and 1, falling back to 1') + + sampler + end end end end diff --git a/spec/datadog/tracing/sampling/rule_sampler_spec.rb b/spec/datadog/tracing/sampling/rule_sampler_spec.rb index 80ad835debd..d4eb379f82d 100644 --- a/spec/datadog/tracing/sampling/rule_sampler_spec.rb +++ b/spec/datadog/tracing/sampling/rule_sampler_spec.rb @@ -2,14 +2,13 @@ require 'datadog/tracing' require 'datadog/tracing/sampling/rate_by_service_sampler' -require 'datadog/tracing/sampling/rate_limiter' require 'datadog/tracing/sampling/rule_sampler' require 'datadog/tracing/sampling/rule' RSpec.describe Datadog::Tracing::Sampling::RuleSampler do let(:rule_sampler) { described_class.new(rules, rate_limiter: rate_limiter, default_sampler: default_sampler) } let(:rules) { [] } - let(:rate_limiter) { instance_double(Datadog::Tracing::Sampling::RateLimiter) } + let(:rate_limiter) { instance_double(Datadog::Core::RateLimiter) } let(:default_sampler) { instance_double(Datadog::Tracing::Sampling::RateByServiceSampler) } let(:effective_rate) { 0.9 } let(:allow?) { true } @@ -18,7 +17,7 @@ before do allow(rate_limiter).to receive(:effective_rate).and_return(effective_rate) - allow(rate_limiter).to receive(:allow?).with(1).and_return(allow?) + allow(rate_limiter).to receive(:allow?).and_return(allow?) end shared_examples 'a simple rule that matches all span operations' do |options = { sample_rate: 1.0 }| @@ -29,10 +28,18 @@ end end + shared_examples 'a token bucket rate limiter' do |options = { rate: 100, max_tokens: nil }| + it do + expect(rule_sampler.rate_limiter).to be_a(Datadog::Core::TokenBucket) + expect(rule_sampler.rate_limiter.rate).to eq(options[:rate]) + expect(rule_sampler.rate_limiter.max_tokens).to eq(options[:max_tokens] || options[:rate]) + end + end + describe '#initialize' do subject(:rule_sampler) { described_class.new(rules) } - it { expect(rule_sampler.rate_limiter).to be_a(Datadog::Tracing::Sampling::TokenBucket) } + it_behaves_like 'a token bucket rate limiter', rate: 100 it { expect(rule_sampler.default_sampler).to be_a(Datadog::Tracing::Sampling::RateByServiceSampler) } context 'with rate_limit ENV' do @@ -41,7 +48,7 @@ .and_return(20.0) end - it { expect(rule_sampler.rate_limiter).to be_a(Datadog::Tracing::Sampling::TokenBucket) } + it_behaves_like 'a token bucket rate limiter', rate: 20.0 end context 'with default_sample_rate ENV' do @@ -58,13 +65,13 @@ context 'with rate_limit' do subject(:rule_sampler) { described_class.new(rules, rate_limit: 1.0) } - it { expect(rule_sampler.rate_limiter).to be_a(Datadog::Tracing::Sampling::TokenBucket) } + it_behaves_like 'a token bucket rate limiter', rate: 1.0 end context 'with nil rate_limit' do subject(:rule_sampler) { described_class.new(rules, rate_limit: nil) } - it { expect(rule_sampler.rate_limiter).to be_a(Datadog::Tracing::Sampling::UnlimitedLimiter) } + it { expect(rule_sampler.rate_limiter).to be_a(Datadog::Core::UnlimitedLimiter) } end context 'with default_sample_rate' do @@ -174,7 +181,7 @@ let(:rule) { { sample_rate: 'oops' } } it 'does not accept rule with a non-float sample_rate' do - expect(Datadog.logger).to receive(:error) + expect(Datadog.logger).to receive(:warn) is_expected.to be_nil end end @@ -183,7 +190,7 @@ let(:rule) { { name: 'test' } } it 'does not accept rule missing the mandatory sample_rate' do - expect(Datadog.logger).to receive(:error) + expect(Datadog.logger).to receive(:warn) is_expected.to be_nil end @@ -191,7 +198,7 @@ let(:rules) { [{ sample_rate: 0.1 }, { name: 'test' }] } it 'rejects all rules if one is missing the mandatory sample_rate' do - expect(Datadog.logger).to receive(:error) + expect(Datadog.logger).to receive(:warn) is_expected.to be_nil end end @@ -201,7 +208,7 @@ let(:rules) { 'not a json array' } it 'returns nil in case of parsing error' do - expect(Datadog.logger).to receive(:error) + expect(Datadog.logger).to receive(:warn) is_expected.to be_nil end end diff --git a/spec/datadog/tracing/sampling/rule_spec.rb b/spec/datadog/tracing/sampling/rule_spec.rb index 6451c32e51d..305eb4a41ac 100644 --- a/spec/datadog/tracing/sampling/rule_spec.rb +++ b/spec/datadog/tracing/sampling/rule_spec.rb @@ -53,6 +53,8 @@ expect(Datadog.logger).to receive(:error) .with(a_string_including("Matcher failed. Cause: #{error}")) + expect(Datadog::Core::Telemetry::Logger).to receive(:report) + .with(error, description: 'Matcher failed') end it { is_expected.to be nil } diff --git a/spec/datadog/tracing/span_operation_spec.rb b/spec/datadog/tracing/span_operation_spec.rb index 6b10bebeb22..5eef0d6a69c 100644 --- a/spec/datadog/tracing/span_operation_spec.rb +++ b/spec/datadog/tracing/span_operation_spec.rb @@ -872,6 +872,27 @@ expect(span_op.end_time - span_op.start_time).to eq 0 end end + + context 'with get_time_provider set' do + let(:clock_increment) { 0.42 } + before do + incr = clock_increment + clock_time = clock_increment + Datadog.configure do |c| + # Use a custom clock provider that increments by `clock_increment` + c.get_time_provider = ->(_unit = :float_second) { clock_time += incr } + end + end + + after { without_warnings { Datadog.configuration.reset! } } + + it 'sets the duration to the provider increment' do + span_op.start + span_op.stop + + expect(span_op.duration).to be_within(0.01).of(clock_increment) + end + end end context 'with start_time provided' do diff --git a/spec/datadog/tracing/trace_operation_spec.rb b/spec/datadog/tracing/trace_operation_spec.rb index 64e4de4ac26..d168a99f73c 100644 --- a/spec/datadog/tracing/trace_operation_spec.rb +++ b/spec/datadog/tracing/trace_operation_spec.rb @@ -136,6 +136,22 @@ end context 'given' do + context ':trace_operation_samples' do + let(:tracer) { instance_double(Datadog::Tracing::Tracer) } + let(:trace_op) { described_class.new(tracer: tracer) } + + describe '#to_digest' do + before do + allow(tracer).to receive(:sample_trace) + end + + it 'calls tracer.sample_trace' do + expect(tracer).to receive(:sample_trace).with(trace_op) + trace_op.to_digest + end + end + end + context ':agent_sample_rate' do subject(:options) { { agent_sample_rate: agent_sample_rate } } let(:agent_sample_rate) { 0.5 } @@ -301,6 +317,57 @@ end end + context 'when trace operation returns root span values as well' do + let(:options) { { tags: { ok: 'test' } } } + context 'for tags' do + it do + # When tags are added to the root span they should be accessible through the trace operation + span = trace_op.build_span('test', tags: { 'foo' => 'bar' }) + span.start + expect(trace_op.get_tag('foo')).to eq('bar') + expect(trace_op.get_tag('ok')).to eq('test') + expect(trace_op.tags).to eq('foo' => 'bar', 'ok' => 'test') + span.finish + end + + context 'trace operation tags take precedent over root span tags' do + it do + # When tags are added to the root span they should be accessible through the trace operation + span = trace_op.build_span('test', tags: { 'ok' => 'should_not_be' }) + span.start + expect(trace_op.tags).to eq('ok' => 'test') + span.finish + end + + context 'for metrics' do + let(:options) { { metrics: { metric1: 123 } } } + it do + # When tags are added to the root span they should be accessible through the trace operation + span = trace_op.build_span('test', tags: { 'metric2' => 456 }) + span.start + expect(trace_op.get_metric('metric1')).to eq(123) + expect(trace_op.get_metric('metric2')).to eq(456) + + span.finish + end + end + + context 'for metrics override' do + let(:options) { { metrics: { metric1: 123 } } } + + it do + # When tags are added to the root span they should be accessible through the trace operation + span = trace_op.build_span('test', tags: { 'metric1' => 456 }) + span.start + expect(trace_op.get_metric('metric1')).to eq(123) + expect(trace_op.tags).to eq({ 'metric1' => 123 }) + span.finish + end + end + end + end + end + context 'when :max_length is non-zero' do let(:options) { { max_length: 3 } } diff --git a/spec/datadog/tracing/tracer_spec.rb b/spec/datadog/tracing/tracer_spec.rb index 3e587b6d6e6..ed0b8de2b99 100644 --- a/spec/datadog/tracing/tracer_spec.rb +++ b/spec/datadog/tracing/tracer_spec.rb @@ -762,7 +762,7 @@ tracer.trace('operation') do |span, trace| expect(trace).to have_attributes( origin: nil, - sampling_priority: 1 + sampling_priority: nil ) expect(span).to have_attributes( @@ -805,7 +805,7 @@ tracer.trace('operation') do |span, trace| expect(trace).to have_attributes( origin: nil, - sampling_priority: 1 + sampling_priority: nil ) expect(span).to have_attributes( @@ -886,7 +886,7 @@ tracer.trace('second') do |span, trace| expect(trace).to have_attributes( origin: nil, - sampling_priority: 1 + sampling_priority: nil ) expect(span.trace_id).to_not eq(digest.trace_id) @@ -926,7 +926,7 @@ tracer.trace('operation') do |span, trace| expect(trace).to have_attributes( origin: nil, - sampling_priority: 1 + sampling_priority: nil ) expect(span).to have_attributes( diff --git a/spec/datadog/tracing/transport/http/adapters/net_integration_spec.rb b/spec/datadog/tracing/transport/http/adapters/net_integration_spec.rb index 9edf8756dc0..e10bbe4d1f5 100644 --- a/spec/datadog/tracing/transport/http/adapters/net_integration_spec.rb +++ b/spec/datadog/tracing/transport/http/adapters/net_integration_spec.rb @@ -7,7 +7,7 @@ require 'datadog/core/transport/http/adapters/net' RSpec.describe 'Adapters::Net tracing integration tests' do - before { skip('Skipping test as ENV["TEST_DATADOG_INTEGRATION"] is not set') unless ENV['TEST_DATADOG_INTEGRATION'] } + skip_unless_integration_testing_enabled subject(:adapter) { Datadog::Core::Transport::HTTP::Adapters::Net.new(agent_settings) } diff --git a/spec/datadog/tracing/transport/http/adapters/unix_socket_integration_spec.rb b/spec/datadog/tracing/transport/http/adapters/unix_socket_integration_spec.rb index 4e3230cc31a..41b1efb5494 100644 --- a/spec/datadog/tracing/transport/http/adapters/unix_socket_integration_spec.rb +++ b/spec/datadog/tracing/transport/http/adapters/unix_socket_integration_spec.rb @@ -7,7 +7,7 @@ require 'datadog/core/transport/http/adapters/unix_socket' RSpec.describe 'Adapters::UnixSocket integration tests' do - before { skip unless ENV['TEST_DATADOG_INTEGRATION'] } + skip_unless_integration_testing_enabled subject(:adapter) { Datadog::Core::Transport::HTTP::Adapters::UnixSocket.new(**options) } diff --git a/spec/datadog/tracing/transport/http/benchmark_spec.rb b/spec/datadog/tracing/transport/http/benchmark_spec.rb deleted file mode 100644 index ef1258ef7f3..00000000000 --- a/spec/datadog/tracing/transport/http/benchmark_spec.rb +++ /dev/null @@ -1,50 +0,0 @@ -require 'spec_helper' - -require 'benchmark' -require 'datadog' -require 'datadog/tracing/transport/http' - -RSpec.describe 'Transport::HTTP benchmarks' do - let(:iterations) { 100 } - - before { skip('Performance test does not run in CI.') } - - describe '#send' do - let!(:default_transport) { Datadog::Tracing::Transport::HTTP.default } - let!(:net_transport) { Datadog::Tracing::Transport::HTTP.default { |t| t.adapter :net_http } } - let!(:unix_transport) { Datadog::Tracing::Transport::HTTP.default { |t| t.adapter :unix } } - let!(:test_transport) { Datadog::Tracing::Transport::HTTP.default { |t| t.adapter :test } } - - let!(:traces) { get_test_traces(2) } - - it do - Benchmark.bm do |x| - x.report('Default Datadog::Tracing::Transport::HTTP') do - iterations.times do - default_transport.send_traces(traces) - end - end - - x.report('Datadog::Tracing::Transport::HTTP with Net::HTTP adapter') do - iterations.times do - net_transport.send_traces(traces) - end - end - - # TODO: Enable me when Unix socket support for Datadog agent is released in 6.13. - # Then update the agent configuration for the test suite to enable Unix sockets. - # x.report('Datadog::Tracing::Transport::HTTP with Unix socket adapter') do - # iterations.times do - # unix_transport.send_traces(traces) - # end - # end - - x.report('Datadog::Tracing::Transport::HTTP with test adapter') do - iterations.times do - test_transport.send_traces(traces) - end - end - end - end - end -end diff --git a/spec/datadog/tracing/transport/http/integration_spec.rb b/spec/datadog/tracing/transport/http/integration_spec.rb index 9dc6a558eba..e93926a7c80 100644 --- a/spec/datadog/tracing/transport/http/integration_spec.rb +++ b/spec/datadog/tracing/transport/http/integration_spec.rb @@ -6,7 +6,7 @@ require 'datadog/tracing/transport/traces' RSpec.describe 'Datadog::Tracing::Transport::HTTP integration tests' do - before { skip unless ENV['TEST_DATADOG_INTEGRATION'] } + skip_unless_integration_testing_enabled describe 'HTTP#default' do subject(:transport) { Datadog::Tracing::Transport::HTTP.default(&client_options) } diff --git a/spec/datadog/tracing/transport/http_spec.rb b/spec/datadog/tracing/transport/http_spec.rb index 830f9d372f1..f7af5db609c 100644 --- a/spec/datadog/tracing/transport/http_spec.rb +++ b/spec/datadog/tracing/transport/http_spec.rb @@ -180,6 +180,22 @@ it { is_expected.to_not include(Datadog::Core::Transport::Ext::HTTP::HEADER_CONTAINER_ID) } end end + + context 'when Datadog.configuration.appsec.standalone.enabled' do + before { expect(Datadog.configuration.appsec.standalone).to receive(:enabled).and_return(asm_standalone_enabled) } + + context 'is true' do + let(:asm_standalone_enabled) { true } + + it { is_expected.to include(Datadog::Core::Transport::Ext::HTTP::HEADER_CLIENT_COMPUTED_STATS => 'yes') } + end + + context 'is false' do + let(:asm_standalone_enabled) { false } + + it { is_expected.to_not include(Datadog::Core::Transport::Ext::HTTP::HEADER_CLIENT_COMPUTED_STATS) } + end + end end describe '.default_adapter' do diff --git a/spec/datadog/tracing/validate_benchmarks_spec.rb b/spec/datadog/tracing/validate_benchmarks_spec.rb index 595ed3a3f22..f54a2c5d6d3 100644 --- a/spec/datadog/tracing/validate_benchmarks_spec.rb +++ b/spec/datadog/tracing/validate_benchmarks_spec.rb @@ -9,7 +9,24 @@ end end - describe 'tracing_trace' do - it('runs without raising errors') { expect_in_fork { load './benchmarks/tracing_trace.rb' } } + benchmarks_to_validate = %w[ + tracing_trace + ] + + benchmarks_to_validate.each do |benchmark| + describe benchmark do + it 'runs without raising errors' do + expect_in_fork do + load "./benchmarks/#{benchmark}.rb" + end + end + end + end + + # This test validates that we don't forget to add new benchmarks to benchmarks_to_validate + it 'tests all expected benchmarks in the benchmarks folder' do + all_benchmarks = Dir['./benchmarks/tracing_*'].map { |it| it.gsub('./benchmarks/', '').gsub('.rb', '') } + + expect(benchmarks_to_validate).to contain_exactly(*all_benchmarks) end end diff --git a/spec/datadog/tracing/workers_spec.rb b/spec/datadog/tracing/workers_spec.rb index 2932890453e..841ef3978ed 100644 --- a/spec/datadog/tracing/workers_spec.rb +++ b/spec/datadog/tracing/workers_spec.rb @@ -40,30 +40,10 @@ end describe 'thread naming and fork-safety marker' do - context 'on Ruby < 2.3' do - before do - skip 'Only applies to old Rubies' if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.3') - end - - it 'does not try to set a thread name' do - without_partial_double_verification do - expect_any_instance_of(Thread).not_to receive(:name=) - end - - worker.start - end - end - - context 'on Ruby >= 2.3' do - before do - skip 'Not supported on old Rubies' if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3') - end - - it do - worker.start + it do + worker.start - expect(worker.instance_variable_get(:@worker).name).to eq described_class.name - end + expect(worker.instance_variable_get(:@worker).name).to eq described_class.name end # See https://github.com/puma/puma/blob/32e011ab9e029c757823efb068358ed255fb7ef4/lib/puma/cluster.rb#L353-L359 diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 8add7625230..33980773165 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -38,6 +38,7 @@ require 'support/synchronization_helpers' require 'support/test_helpers' require 'support/tracer_helpers' +require 'support/crashtracking_helpers' begin # Ignore interpreter warnings from external libraries diff --git a/spec/support/core_helpers.rb b/spec/support/core_helpers.rb index 9764d74d28d..27e3f94320f 100644 --- a/spec/support/core_helpers.rb +++ b/spec/support/core_helpers.rb @@ -44,4 +44,18 @@ def supports_value_expectations? false end end + + module ClassMethods + def skip_unless_integration_testing_enabled + unless ENV['TEST_DATADOG_INTEGRATION'] + before(:all) do + skip 'Set TEST_DATADOG_INTEGRATION=1 in environment to run this test' + end + end + end + end + + def self.included(base) + base.extend ClassMethods + end end diff --git a/spec/support/crashtracking_helpers.rb b/spec/support/crashtracking_helpers.rb new file mode 100644 index 00000000000..dcd7291e57e --- /dev/null +++ b/spec/support/crashtracking_helpers.rb @@ -0,0 +1,17 @@ +require 'datadog/core/crashtracking/component' +require 'support/platform_helpers' + +module CrashtrackingHelpers + def self.supported? + # Only works with MRI on Linux + if PlatformHelpers.mri? && PlatformHelpers.linux? + if Datadog::Core::Crashtracking::Component::LIBDATADOG_API_FAILURE + raise " does not seem to be available: #{Datadog::Core::Crashtracking::Component::LIBDATADOG_API_FAILURE}. " \ + 'Try running `bundle exec rake compile` before running this test.' + end + true + else + false + end + end +end diff --git a/spec/support/test_helpers.rb b/spec/support/test_helpers.rb index 40d10b98c54..06f49b94d5f 100644 --- a/spec/support/test_helpers.rb +++ b/spec/support/test_helpers.rb @@ -11,11 +11,7 @@ module RSpec module Integration def self.included(base) base.class_exec do - before do - unless ENV['TEST_DATADOG_INTEGRATION'] - skip('Integration tests can be enabled by setting the environment variable `TEST_DATADOG_INTEGRATION=1`') - end - end + skip_unless_integration_testing_enabled include_context 'non-development execution environment' end diff --git a/spec/validate_benchmarks_spec.rb b/spec/validate_benchmarks_spec.rb new file mode 100644 index 00000000000..a1bab0ae44c --- /dev/null +++ b/spec/validate_benchmarks_spec.rb @@ -0,0 +1,32 @@ +require 'spec_helper' + +RSpec.describe 'Library benchmarks' do + before { skip('Spec requires Ruby VM supporting fork') unless PlatformHelpers.supports_fork? } + + around do |example| + ClimateControl.modify('VALIDATE_BENCHMARK' => 'true') do + example.run + end + end + + benchmarks_to_validate = %w[ + library_gem_loading + ] + + benchmarks_to_validate.each do |benchmark| + describe benchmark do + it 'runs without raising errors' do + expect_in_fork do + load "./benchmarks/#{benchmark}.rb" + end + end + end + end + + # This test validates that we don't forget to add new benchmarks to benchmarks_to_validate + it 'tests all expected benchmarks in the benchmarks folder' do + all_benchmarks = Dir['./benchmarks/library_*'].map { |it| it.gsub('./benchmarks/', '').gsub('.rb', '') } + + expect(benchmarks_to_validate).to contain_exactly(*all_benchmarks) + end +end diff --git a/static-analysis.datadog.yml b/static-analysis.datadog.yml index 671cae3598f..cb011ad28a7 100644 --- a/static-analysis.datadog.yml +++ b/static-analysis.datadog.yml @@ -4,6 +4,12 @@ rulesets: - ruby-security - ruby-best-practices: rules: + hash-fetch: + ignore: + - "**" percent-w: ignore: - - '**' + - "**" + symbols-as-keys: + ignore: + - "**" diff --git a/suppressions/lsan.supp b/suppressions/lsan.supp new file mode 100644 index 00000000000..6038088e133 --- /dev/null +++ b/suppressions/lsan.supp @@ -0,0 +1,9 @@ +# This is a Leak Sanitizer ("lsan") suppression configuration file. +# +# We use it together with special builds for Ruby +# (https://github.com/ruby/ruby/blob/master/doc/contributing/building_ruby.md#building-with-address-sanitizer) +# to find issues and memory leaks in the dd-trace-rb native extensions; in some cases +# we need to ignore potential issues as they're not something we can fix (e.g. outside our code.) +# +# See https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer for details. +leak:native_thread_create diff --git a/suppressions/ruby-3.4.supp b/suppressions/ruby-3.4.supp new file mode 100644 index 00000000000..9910e76b275 --- /dev/null +++ b/suppressions/ruby-3.4.supp @@ -0,0 +1,64 @@ +# This is a valgrind suppression configuration file. +# +# We use it together with the ruby_memcheck gem to find issues in the dd-trace-rb native extensions; in some cases +# we need to ignore potential issues as they're not something we can fix (e.g. outside our code.) +# +# See https://valgrind.org/docs/manual/manual-core.html#manual-core.suppress for details. + +# Ruby weak maps seem to be able to cause invalid reads? +{ + ruby-weak-map + Memcheck:Addr8 + fun:wmap_cmp + fun:find_table_bin_ind + fun:st_general_foreach + fun:rb_st_foreach + ... +} + +# When a Ruby process forks, it looks like Ruby doesn't clean up the memory of old threads? +{ + ruby-native-thread-memory + Memcheck:Leak + fun:calloc + fun:calloc1 + fun:rb_gc_impl_calloc + fun:native_thread_alloc + fun:native_thread_create_dedicated + fun:native_thread_create + fun:thread_create_core + ... +} + +# When a Ruby process forks, it looks like Ruby doesn't clean up the memory of old threads? +{ + ruby-native-thread-memory-2 + Memcheck:Leak + fun:calloc + fun:calloc1 + fun:objspace_xcalloc + fun:ruby_xcalloc_body + fun:native_thread_alloc + fun:native_thread_create_dedicated + fun:native_thread_create + fun:thread_create_core + ... +} + +# We don't care about the pkg-config external tool +{ + pkg-config-memory + Memcheck:Leak + ... + obj:/usr/bin/pkg-config + ... +} + +# We don't care about the tr external tool +{ + pkg-config-memory + Memcheck:Leak + ... + obj:/usr/bin/tr + ... +} diff --git a/tasks/appraisal.rake b/tasks/appraisal.rake index fd3de1a85e9..e037c987062 100644 --- a/tasks/appraisal.rake +++ b/tasks/appraisal.rake @@ -2,6 +2,8 @@ require 'pry' +# TODO: This is a work in progress, the rake tasks to be replaced by automation + namespace :appraisal do # rubocop:disable Metrics/BlockLength def ruby_versions(versions) return TRACER_VERSIONS if versions.empty? @@ -209,10 +211,7 @@ TRACER_VERSIONS = [ ].freeze FORCE_BUNDLER_VERSION = { - # Some groups require bundler 1.x https://github.com/DataDog/dd-trace-rb/issues/2444 - '2.3' => '1.17.3', - - # 2.4.x seems to cause problems with appraisal + '2.5' => '2.3.26', '2.6' => '2.3.26', '2.7' => '2.3.26', '3.0' => '2.3.26', diff --git a/tasks/appraisal_conversion.rb b/tasks/appraisal_conversion.rb new file mode 100644 index 00000000000..685c544911f --- /dev/null +++ b/tasks/appraisal_conversion.rb @@ -0,0 +1,49 @@ +require 'pathname' + +# This module translates our custom mapping between appraisal and bundler. +# +# It cannot be included into `Appraisal` file, because it was invoked via `instance_eval`. +module AppraisalConversion + module_function + + @gemfile_dir = 'gemfiles' + @definition_dir = 'appraisal' + + def to_bundle_gemfile(group) + gemfile = "#{runtime_identifier}_#{group}.gemfile".tr('-', '_') + path = root_path.join(gemfile_dir, gemfile) + + if path.exist? + path.to_s + else + raise "Gemfile not found at #{path}" + end + end + + def definition + path = root_path.join(@definition_dir, "#{runtime_identifier}.rb") + + if path.exist? + path.to_s + else + raise "Definition not found at #{path}" + end + end + + def runtime_identifier + major, minor, = Gem::Version.new(RUBY_ENGINE_VERSION).segments + "#{RUBY_ENGINE}-#{major}.#{minor}" + end + + def gemfile_pattern + root_path + gemfile_dir + "#{runtime_identifier.tr('-', '_')}_*.gemfile" + end + + def gemfile_dir + @gemfile_dir + end + + def root_path + Pathname.pwd + end +end diff --git a/tasks/appsec.rake b/tasks/appsec.rake index 9e3dad94bf4..af2fade602d 100644 --- a/tasks/appsec.rake +++ b/tasks/appsec.rake @@ -5,11 +5,38 @@ namespace :appsec do require 'net/http' version = args.to_a[0] + raise ArgumentError, 'You must provide a version' if version.nil? + + # You need to generate a token with the `repo` scope + # and configure SSO for DataDog's GitHub organization + token = ENV['GITHUB_TOKEN'] + raise ArgumentError, 'You must set GITHUB_TOKEN env variable' if token.nil? ['recommended', 'strict'].each do |ruleset| - uri = URI("https://raw.githubusercontent.com/DataDog/appsec-event-rules/#{version}/build/#{ruleset}.json") + uri = URI("https://api.github.com/repos/DataDog/appsec-event-rules/contents/build/#{ruleset}.json?ref=#{version}") + + http = Net::HTTP.new(uri.host, uri.port) + http.use_ssl = true + + req = Net::HTTP::Get.new(uri) + req['Authorization'] = "Bearer #{token}" + req['Accept'] = 'application/vnd.github.raw+json' + + http.request(req) do |res| + case res + when Net::HTTPSuccess + filename = "lib/datadog/appsec/assets/waf_rules/#{ruleset}.json" + raise "File '#{filename}' was moved or deleted, please review the rake task" unless File.exist?(filename) - File.open("lib/datadog/appsec/assets/waf_rules/#{ruleset}.json", 'wb') { |f| f << Net::HTTP::get(uri) } + File.open(filename, 'wb') do |f| + res.read_body do |chunk| + f << chunk + end + end + else + raise "Failed to download #{ruleset}.json: #{response.code} #{response.message}" + end + end end end end diff --git a/tasks/dependency.rake b/tasks/dependency.rake new file mode 100644 index 00000000000..4af85eb1e9f --- /dev/null +++ b/tasks/dependency.rake @@ -0,0 +1,49 @@ +require 'open3' + +require_relative 'appraisal_conversion' + +task :dep => :dependency +task :dependency => %w[dependency:lock] +namespace :dependency do + # rubocop:disable Style/MultilineBlockChain + Dir.glob(AppraisalConversion.gemfile_pattern).each do |gemfile| + # desc "Lock the dependencies for #{gemfile}" + task gemfile do + Bundler.with_unbundled_env do + command = +'bundle lock' + command << ' --add-platform x86_64-linux aarch64-linux' unless RUBY_PLATFORM == 'java' + output, = Open3.capture2e({ 'BUNDLE_GEMFILE' => gemfile.to_s }, command) + + puts output + end + end + end.tap do |gemfiles| + desc "Lock the dependencies for #{AppraisalConversion.runtime_identifier}" + # WHY can't we use `multitask :lock => gemfiles` here? + # + # Running bundler in parallel has various race conditions + # + # Race condition with the file system, particularly worse with JRuby. + # For instance, `Errno::ENOENT: No such file or directory - bundle` is raised with JRuby 9.2 + + # Even with CRuby, `simplcov` declaration with `github` in Gemfile causes + # race condition for the local gem cache with the following error: + + # ``` + # [/usr/local/bundle/bundler/gems/simplecov-3bb6b7ee58bf/simplecov.gemspec] isn't a Gem::Specification (NilClass instead). + # ``` + + # and + + # ``` + # fatal: Unable to create '/usr/local/bundle/bundler/gems/simplecov-3bb6b7ee58bf/.git/index.lock': File exists. + # Another git process seems to be running in this repository, e.g. + # an editor opened by 'git commit'. Please make sure all processes + # are terminated then try again. If it still fails, a git process + # may have crashed in this repository earlier: + # remove the file manually to continue. + # ``` + task :lock => gemfiles + end + # rubocop:enable Style/MultilineBlockChain +end diff --git a/tasks/edge.rake b/tasks/edge.rake new file mode 100644 index 00000000000..881b9d8d071 --- /dev/null +++ b/tasks/edge.rake @@ -0,0 +1,80 @@ +require 'open3' + +require_relative 'appraisal_conversion' + +# rubocop:disable Metrics/BlockLength +namespace :edge do + desc 'Update all the groups from the matrix' + task :update do |_t, args| + ruby_version = RUBY_VERSION[0..2] + allowlist = { + 'stripe' => 'stripe', + 'elasticsearch' => 'elasticsearch', + 'opensearch' => 'opensearch-ruby', + 'rack' => 'rack', + # Add more integrations here, when they are extracted to its own isolated group + } + + allowlist = allowlist.slice(*args.extras) if args.extras.any? + + allowlist.each do |integration, gem| + candidates = TEST_METADATA.fetch(integration).select do |_, rubies| + if RUBY_PLATFORM == 'java' + rubies.include?("✅ #{ruby_version}") && rubies.include?('✅ jruby') + else + rubies.include?("✅ #{ruby_version}") + end + end + + candidates.each do |group, _| + gemfile = AppraisalConversion.to_bundle_gemfile(group) + + Bundler.with_unbundled_env do + puts "======== Updating #{integration} in #{gemfile} ========\n" + output, = Open3.capture2e({ 'BUNDLE_GEMFILE' => gemfile.to_s }, "bundle lock --update=#{gem}") + + puts output + end + end + end + end + + desc 'Update the `latest` group from the matrix' + task :latest do |_t, args| + ruby_version = RUBY_VERSION[0..2] + allowlist = { + 'stripe' => 'stripe', + 'elasticsearch' => 'elasticsearch', + 'opensearch' => 'opensearch-ruby', + 'rack' => 'rack', + # Add more integrations here, when hey are extracted to its own isolated group + } + + allowlist = allowlist.slice(*args.extras) if args.extras.any? + + allowlist.each do |integration, gem| + candidates = TEST_METADATA.fetch(integration).select do |_, rubies| + if RUBY_PLATFORM == 'java' + rubies.include?("✅ #{ruby_version}") && rubies.include?('✅ jruby') + else + rubies.include?("✅ #{ruby_version}") + end + end + + candidates.each do |group, _| + # ONLY pick the latest group + next unless group.end_with?('-latest') + + gemfile = AppraisalConversion.to_bundle_gemfile(group) + + Bundler.with_unbundled_env do + puts "======== Updating #{integration} in #{gemfile} ========\n" + output, = Open3.capture2e({ 'BUNDLE_GEMFILE' => gemfile.to_s }, "bundle lock --update=#{gem}") + + puts output + end + end + end + end +end +# rubocop:enable Metrics/BlockLength diff --git a/tasks/yard.rake b/tasks/yard.rake new file mode 100644 index 00000000000..658af1b71c0 --- /dev/null +++ b/tasks/yard.rake @@ -0,0 +1,18 @@ + +if Gem.loaded_specs["yard"] + require 'yard' +else + warn "'yard' gem not loaded: skipping tasks..." if Rake.verbose == true + return +end + +YARD::Rake::YardocTask.new(:docs) do |t| + # Options defined in `.yardopts` are read first, then merged with + # options defined here. + # + # It's recommended to define options in `.yardopts` instead of here, + # as `.yardopts` can be read by external YARD tools, like the + # hot-reload YARD server `yard server --reload`. + + t.options += ['--title', "datadog #{Datadog::VERSION::STRING} documentation"] +end diff --git a/tools/yard.gemfile b/tools/yard.gemfile new file mode 100644 index 00000000000..593e37dbfb7 --- /dev/null +++ b/tools/yard.gemfile @@ -0,0 +1,7 @@ +source 'https://rubygems.org' + +gemspec path: '..' + +gem 'rake' +gem 'yard' +gem 'redcarpet' diff --git a/vendor/rbs/datadog-ci/0/datadog_ci.rbs b/vendor/rbs/datadog-ci/0/datadog_ci.rbs new file mode 100644 index 00000000000..760b6da041d --- /dev/null +++ b/vendor/rbs/datadog-ci/0/datadog_ci.rbs @@ -0,0 +1,7 @@ +module Datadog + module CI + module VERSION + STRING: String + end + end +end diff --git a/vendor/rbs/graphql/0/graphql.rbs b/vendor/rbs/graphql/0/graphql.rbs index 81f931ae6c7..9b7e34f137d 100644 --- a/vendor/rbs/graphql/0/graphql.rbs +++ b/vendor/rbs/graphql/0/graphql.rbs @@ -22,11 +22,15 @@ module GraphQL class Field end + + class Argument + end end end class Query class Result + def initialize: (query: ::GraphQL::Query, values: Hash[String, untyped]) -> void end end diff --git a/vendor/rbs/libdatadog/0/libdatadog.rbs b/vendor/rbs/libdatadog/0/libdatadog.rbs index 04a25f36cfd..bd30d8e9922 100644 --- a/vendor/rbs/libdatadog/0/libdatadog.rbs +++ b/vendor/rbs/libdatadog/0/libdatadog.rbs @@ -2,4 +2,6 @@ module Libdatadog def self.path_to_crashtracking_receiver_binary: () -> ::String? def self.ld_library_path: () -> ::String? def self.pkgconfig_folder: () -> ::String? + + VERSION: ::String end diff --git a/vendor/rbs/libddwaf/0/datadog/appsec/waf.rbs b/vendor/rbs/libddwaf/0/datadog/appsec/waf.rbs index 0418c3e1247..af8c30dd3e5 100644 --- a/vendor/rbs/libddwaf/0/datadog/appsec/waf.rbs +++ b/vendor/rbs/libddwaf/0/datadog/appsec/waf.rbs @@ -182,7 +182,8 @@ module Datadog attr_reader events: data attr_reader total_runtime: ::Float attr_reader timeout: bool - attr_reader actions: data + # Until we update libddwaf, actions is an array + attr_reader actions: ::Array[data] attr_reader derivatives: data def initialize: (::Symbol, data, ::Float, bool, data, data) -> void