Skip to content

fix: use WeakRef for storing req and res for AppSec #7706

fix: use WeakRef for storing req and res for AppSec

fix: use WeakRef for storing req and res for AppSec #7706

Workflow file for this run

name: Platform
on:
pull_request:
push:
branches: [master]
schedule:
- cron: 0 4 * * *
workflow_dispatch:
inputs:
latest-version:
description: 'Node version to use'
required: false
type: string
concurrency:
group: ${{ github.workflow }}-${{ inputs.latest-version }}-${{ github.ref || github.run_id }}"
cancel-in-progress: true
env:
MOCHA_OPTIONS: ${{ github.ref == 'refs/heads/master' && '--retries 1' || '' }}
LATEST_VERSION: ${{ inputs.latest-version }}
# TODO: upstream jobs
jobs:
package-manager:
strategy:
fail-fast: false
matrix:
manager:
- name: npm
install: npm install
- name: pnpm
install: pnpm add
- name: yarn
install: yarn add
- name: yarn-berry
install: npm install -g corepack && yarn set version stable && yarn config set nodeLinker node-modules && yarn add
- name: bun
install: bun add
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/node/active-lts
- run: FILENAME=$(npm pack --pack-destination /tmp) && mv /tmp/$FILENAME /tmp/dd-trace.tgz
- run: mkdir -p /tmp/app
- run: npm i -g pnpm
if: matrix.manager.name == 'pnpm'
- run: cd /tmp/app && ${{ matrix.manager.install }} /tmp/dd-trace.tgz
- run: echo "require('dd-trace').init()" >> /tmp/app/index.js
- run: node /tmp/app
bun-pack:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/node/active-lts
- uses: ./.github/actions/install
- run: mkdir npm bun
- run: FILENAME=$(npm pack) && tar -zxf $FILENAME -C npm
- run: ./node_modules/.bin/bun pm pack --gzip-level 0 --filename bun.tgz && tar -zxf bun.tgz -C bun
- run: diff -r npm bun
bundle-validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/node/active-lts
# Running `yarn` also automatically runs Rspack as a postinstall script.
- run: yarn --frozen-lockfile
working-directory: vendor
- run: git diff --exit-code
core:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/node/oldest-maintenance-lts
- uses: ./.github/actions/install
- run: yarn test:core:ci
- uses: ./.github/actions/node/latest
- run: yarn test:core:ci
- uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
- uses: DataDog/junit-upload-github-action@762867566348d59ac9bcf479ebb4ec040db8940a # v2.0.0
if: always() && github.actor != 'dependabot[bot]'
with:
api_key: ${{ secrets.DD_API_KEY }}
service: dd-trace-js-tests
dd-trace-api:
runs-on: ubuntu-latest
env:
PLUGINS: dd-trace-api
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/plugins/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
esbuild:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/node/oldest-maintenance-lts
- uses: ./.github/actions/install
- run: yarn test:esbuild:ci
- uses: ./.github/actions/node/latest
- run: yarn test:esbuild:ci
- uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
instrumentation-bluebird:
runs-on: ubuntu-latest
env:
PLUGINS: bluebird
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-body-parser:
runs-on: ubuntu-latest
env:
PLUGINS: body-parser
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-child_process:
runs-on: ubuntu-latest
env:
PLUGINS: child_process
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-cookie-parser:
runs-on: ubuntu-latest
env:
PLUGINS: cookie-parser
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-express-mongo-sanitize:
runs-on: ubuntu-latest
services:
mongodb:
image: circleci/mongo
ports:
- 27017:27017
env:
PLUGINS: express-mongo-sanitize
SERVICES: mongo
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-express-session:
runs-on: ubuntu-latest
env:
PLUGINS: express-session
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-express:
runs-on: ubuntu-latest
env:
PLUGINS: express
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-fs:
runs-on: ubuntu-latest
env:
PLUGINS: fs
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-generic-pool:
runs-on: ubuntu-latest
env:
PLUGINS: generic-pool
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-http:
runs-on: ubuntu-latest
env:
PLUGINS: http
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-knex:
runs-on: ubuntu-latest
env:
PLUGINS: knex
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-mongoose:
runs-on: ubuntu-latest
services:
mongodb:
image: circleci/mongo
ports:
- 27017:27017
env:
PLUGINS: mongoose
SERVICES: mongo
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-multer:
runs-on: ubuntu-latest
env:
PLUGINS: multer
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-mysql2:
runs-on: ubuntu-latest
services:
mysql:
image: mariadb:10.4
env:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_DATABASE: 'db'
ports:
- 3306:3306
env:
PLUGINS: mysql2
SERVICES: mysql2
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-passport:
runs-on: ubuntu-latest
env:
PLUGINS: passport
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-passport-http:
runs-on: ubuntu-latest
env:
PLUGINS: passport-http
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-passport-local:
runs-on: ubuntu-latest
env:
PLUGINS: passport-local
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-pg:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:9.5
env:
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
env:
PG_TEST_NATIVE: 'true'
PLUGINS: pg
SERVICES: postgres
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-promise-js:
runs-on: ubuntu-latest
env:
PLUGINS: promise-js
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-promise:
runs-on: ubuntu-latest
env:
PLUGINS: promise
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-q:
runs-on: ubuntu-latest
env:
PLUGINS: q
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-url:
runs-on: ubuntu-latest
env:
PLUGINS: url
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentation-when:
runs-on: ubuntu-latest
env:
PLUGINS: when
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/instrumentations/test
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
instrumentations-misc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/testagent/start
- uses: ./.github/actions/node/oldest-maintenance-lts
- uses: ./.github/actions/install
- run: yarn test:instrumentations:misc:ci
shell: bash
- uses: ./.github/actions/node/newest-maintenance-lts
- run: yarn test:instrumentations:misc:ci
shell: bash
- uses: ./.github/actions/node/active-lts
- run: yarn test:instrumentations:misc:ci
shell: bash
- uses: ./.github/actions/node/latest
- run: yarn test:instrumentations:misc:ci
shell: bash
- uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
- if: always()
uses: ./.github/actions/testagent/logs
with:
suffix: test-${{ github.job }}
- uses: DataDog/junit-upload-github-action@762867566348d59ac9bcf479ebb4ec040db8940a # v2.0.0
if: always() && github.actor != 'dependabot[bot]'
with:
api_key: ${{ secrets.DD_API_KEY }}
service: dd-trace-js-tests
# TODO: Split this up as it runs tests for multiple different teams.
integration:
strategy:
# when one version fails, say 14, all the other versions are stopped
# setting fail-fast to false in an attempt to prevent this from happening
fail-fast: false
matrix:
version: [oldest, maintenance, active, latest]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/testagent/start
- uses: ./.github/actions/node
with:
version: ${{ matrix.version }}
# Disable core dumps since some integration tests intentionally abort and core dump generation takes around 5-10s
- uses: ./.github/actions/install
- run: sudo sysctl -w kernel.core_pattern='|/bin/false'
- run: yarn test:integration
- run: yarn test:integration:esbuild
- uses: DataDog/junit-upload-github-action@762867566348d59ac9bcf479ebb4ec040db8940a # v2.0.0
if: always() && github.actor != 'dependabot[bot]'
with:
api_key: ${{ secrets.DD_API_KEY }}
service: dd-trace-js-tests
unit-guardrails:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/node/latest
- uses: ./.github/actions/install
- run: yarn test:trace:guardrails:ci
- uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
- uses: DataDog/junit-upload-github-action@762867566348d59ac9bcf479ebb4ec040db8940a # v2.0.0
if: always() && github.actor != 'dependabot[bot]'
with:
api_key: ${{ secrets.DD_API_KEY }}
service: dd-trace-js-tests
# We'll run these separately for earlier (i.e. unsupported) versions
integration-guardrails:
strategy:
fail-fast: false
matrix:
version: [14.0.0, 14, 16.0.0, 18.0.0, 20.0.0, 22.0.0, 24.0.0]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/node
with:
version: ${{ matrix.version }}
- uses: ./.github/actions/install
- run: bun add --ignore-scripts mocha@10 # Use older mocha to support old Node.js versions
- run: bun add --ignore-scripts express@4 # Use older express to support old Node.js versions
- run: node node_modules/.bin/mocha --colors --timeout 30000 integration-tests/init.spec.js
- uses: DataDog/junit-upload-github-action@762867566348d59ac9bcf479ebb4ec040db8940a # v2.0.0
if: always() && github.actor != 'dependabot[bot]'
with:
api_key: ${{ secrets.DD_API_KEY }}
service: dd-trace-js-tests
integration-guardrails-unsupported:
strategy:
fail-fast: false
matrix:
version: ['0.8', '0.10', '0.12', '4', '6', '8', '10', '12']
runs-on: ubuntu-latest
env:
DD_TRACE_DEBUG: 'true' # This exercises more of the guardrails code
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/node
with:
version: ${{ matrix.version }}
- run: node ./init
- run: node ./init
env:
DD_INJECTION_ENABLED: 'true'
shimmer:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/node/oldest-maintenance-lts
- uses: ./.github/actions/install
- run: yarn test:shimmer:ci
- uses: ./.github/actions/node/latest
- run: yarn test:shimmer:ci
- uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
- uses: DataDog/junit-upload-github-action@762867566348d59ac9bcf479ebb4ec040db8940a # v2.0.0
if: always() && github.actor != 'dependabot[bot]'
with:
api_key: ${{ secrets.DD_API_KEY }}
service: dd-trace-js-tests