Skip to content

[ACIX-1891] Disable internet in all host tests by default, add an option to enable it - #54158

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 9 commits into
mainfrom
kfairise/acix-1891-disable-vm-internet-access
Aug 10, 2026
Merged

[ACIX-1891] Disable internet in all host tests by default, add an option to enable it#54158
gh-worker-dd-mergequeue-cf854d[bot] merged 9 commits into
mainfrom
kfairise/acix-1891-disable-vm-internet-access

Conversation

@KevinFairise2

@KevinFairise2 KevinFairise2 commented Jul 28, 2026

Copy link
Copy Markdown
Member

What does this PR do?

Use a dedicated security group for hosts, that will not allow reaching internet by default, tests that still need internet must call it explicitly in the test definition. Long term goal is to reduce the number of tests that need to reach internet, to improve reliability of those tests

Motivation

Improve reliability enforce best practices

Describe how you validated your changes

Additional Notes

@dd-octo-sts dd-octo-sts Bot added internal Identify a non-fork PR team/agent-devx labels Jul 28, 2026
@github-actions github-actions Bot added the medium review PR review might take time label Jul 28, 2026
chatgpt-codex-connector[bot]

This comment was marked as outdated.

@datadog-datadog-prod-us1-2

datadog-datadog-prod-us1-2 Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

🎯 Code Coverage (details)
Patch Coverage: 100.00%
Overall Coverage: 52.18% (+0.13%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: a83d830 | Docs | Datadog PR Page | Give us feedback!

@dd-octo-sts

dd-octo-sts Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Files inventory check summary

File checks results against ancestor 36c2cf97:

Results for datadog-agent_7.83.0~devel.git.466.a83d830.pipeline.128051181-1_amd64.deb:

No change detected

Add two new VMOption functions to ec2/vmargs.go:
- WithoutInternetAccess(): replaces the default security groups with the
  no-internet ones (existing feature, now with a proper VM-level option)
- WithInternetAccess(): the explicit opt-in counterpart — overrides any
  no-internet default set by a provisioner

Both options manipulate the same withoutInternetAccess bool on vmArgs.
No behavior change: neither function is called by any provisioner default yet.
…27765169)

All tests that use awshost.Provisioner (or variants) now opt-in to internet
access via ec2.WithInternetAccess() / scenec2.WithInternetAccess(). This
unblocks the 41 E2E test suites that were failing because the host provisioner
now defaults to no-internet.

Tests changed:
- fleet/suite: fleet upgrade/config/extensions suites
- installer/script, installer/unix: installer script/package suites
- agent-platform/tests: install-script, ddot, package-signing suites
- apm/vm_test: VM fakeintake suite (pulls docker images from ghcr.io)
- ndm/snmp: snmp VM and autodiscovery suites
- cws/ec2_test: CWS EC2 agent suite
- cws/windows_test: CWS Windows agent suite
- cspm/host_benchmarks_nix_test: CSPM host benchmark suites (RHEL/AlmaLinux repos)
- remote-config/tracer_test: RC tracer suite
- agent-subcommands: linux + windows subcommand suites
- agent-configuration: linux + windows configuration suites
- agent-runtimes: Windows agent runtime suites
- netpath/netpath_int_win: Windows network path integration suite
- agent-log-pipelines/file-tailing: Windows file tailing suite
This is the behavioral change: the Host provisioner now defaults to
no-internet access unless the test explicitly calls ec2.WithInternetAccess().

Changes:
- resources/aws/ec2/vm.go: security group selection based on WithoutInternetAccess
- resources/aws/environment.go: add NoInternetSecurityGroupNames() helper
- resources/aws/environmentDefaults.go: set no-internet for agentQa environment
- scenarios/aws/ec2/vm.go: pass withoutInternetAccess through to InstanceArgs
- testing/provisioners/aws/host/host.go: prepend WithoutInternetAccess as the
  provisioner default (caller-provided opts including WithInternetAccess() run
  after and can override it)
- components/datadog/agent/host_linuxos.go: use S3 URL (no internet needed)
- components/datadog/updater/install_script.sh: use S3 URL
- tests/agent-platform/install/install.go: use S3/internal URL
- tests/fleet/agent/install.go: use S3/internal URL
- examples: add WithoutInternetAccess() to examples that need it
- remote-config/tracer_test.go: switch to Provisioner (fakeintake) so the
  test no longer needs internet at all
@KevinFairise2
KevinFairise2 force-pushed the kfairise/acix-1891-disable-vm-internet-access branch from 94c0ed6 to 3a328e1 Compare July 30, 2026 10:51

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a83d830db8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

TESTING_YUM_URL="yumtesting.datad0g.com" \
TESTING_YUM_VERSION_PATH="testing/pipeline-${DD_PIPELINE_ID}-a7/7" \
bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"
bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Route all updater installation dependencies through S3

When an AWS host enables the updater while using the new default no-internet security group, changing only the initial script URL is insufficient: this embedded script still passes keys.datadoghq.com, apttesting.datad0g.com, and yumtesting.datad0g.com to the downloaded installer, which subsequently contacts those public endpoints. They are not reachable through the S3 VPC gateway, so updater provisioning fails during repository/key setup; use the corresponding s3.amazonaws.com/... paths here as the normal host installer now does.

Useful? React with 👍 / 👎.

Comment on lines +51 to +53
sgNames := e.NoInternetSecurityGroupNames()
if len(sgNames) == 0 {
return nil, fmt.Errorf("no security groups configured to block internet access, set the %s config parameter", aws.DDInfraNoInternetSecurityGroupNamesParamName)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Supply no-internet groups for every supported AWS environment

When a host suite selects the supported aws/sandbox or aws/tse-playground environment without explicitly opting into internet access, the provisioner now always reaches this error because both corresponding defaults leave noInternetSecurityGroupNames empty. Although the earlier agent-qa gap is fixed in the current code, these two environments remain unset, so their host suites abort before creating an EC2 instance unless callers provide an undocumented per-stack override; seed their defaults or avoid enabling the restriction where no group is configured.

Useful? React with 👍 / 👎.

@datadog-datadog-prod-us1-2 datadog-datadog-prod-us1-2 Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Datadog Autotest: FAIL

The new host default blocks two supported AWS environments before VM creation and leaves the NPM external-traffic suite unable to run; updater installs also retain internet-only package endpoints, so the restricted-host rollout will break multiple real E2E paths.

📊 Validated against 5 scenarios · Open Bits AI session

🤖 Datadog Autotest · Commit a83d830 · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest

// We ALWAYS need to make a deep copy of `params`, as the provisioner can be called multiple times.
// and it's easy to forget about it, leading to hard to debug issues.
// Prepend the no-internet default so that caller-provided opts (e.g. ec2.WithInternetAccess()) can override it.
opts = append([]ProvisionerOption{WithRunOptions(ec2.WithEC2InstanceOptions(ec2.WithoutInternetAccess()))}, opts...)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Do not restrict hosts without a configured group

Every stock host E2E using either supported AWS environment fails during provisioning.

Assertion details
  • Input: Run the stock AWS host provisioner in the supported aws/sandbox or aws/tse-playground environment without an explicit aws/noInternetSecurityGroupNames override.
  • Expected: The provisioner should attach a configured restrictive security group, or preserve the previous usable host behavior until that environment has such a group.
  • Actual: The new universal default enables WithoutInternetAccess, but sandboxDefault() and tsePlaygroundDefault() leave noInternetSecurityGroupNames empty. NewInstance therefore returns no security groups configured to block internet access before creating a VM.

Was this helpful? React 👍 or 👎
🤖 Datadog Autotest · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest

// We ALWAYS need to make a deep copy of `params`, as the provisioner can be called multiple times.
// and it's easy to forget about it, leading to hard to debug issues.
// Prepend the no-internet default so that caller-provided opts (e.g. ec2.WithInternetAccess()) can override it.
opts = append([]ProvisionerOption{WithRunOptions(ec2.WithEC2InstanceOptions(ec2.WithoutInternetAccess()))}, opts...)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Opt the NPM traffic suite back into internet access

The existing agent-host NPM E2E becomes a deterministic failure rather than validating network monitoring.

Assertion details
  • Input: Run TestVMSuiteEx6 in test/new-e2e/tests/npm/agentenv_npm_test.go through the stock AWS host provisioner.
  • Expected: The suite should curl www.datadoghq.com to create an observed network connection and then assert the NPM payload in fakeintake.
  • Actual: The changed provisioner now attaches the no-internet group, while this caller has no WithInternetAccess option. Its first MustExecute(curl http://www.datadoghq.com) fails before payload assertions run.

Was this helpful? React 👍 or 👎
🤖 Datadog Autotest · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest

TESTING_YUM_URL="yumtesting.datad0g.com" \
TESTING_YUM_VERSION_PATH="testing/pipeline-${DD_PIPELINE_ID}-a7/7" \
bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"
bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Route updater package downloads through S3

Updater-based host provisioning cannot install the Agent once internet access is disabled by default.

Assertion details
  • Input: Provision a default restricted AWS host with the updater enabled for pipeline 127765169 on either x86_64 or arm64.
  • Expected: The installer script and every key/APT/YUM package download should use direct S3 URLs reachable through the VPC S3 gateway endpoint.
  • Actual: Executing the embedded script with a fake installer payload showed that only the installer URL changed to S3; it still exports keys.datadoghq.com, apttesting.datad0g.com, and yumtesting.datad0g.com. The fetched installer then cannot reach those package endpoints from the new security group.

Was this helpful? React 👍 or 👎
🤖 Datadog Autotest · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest

Suggested change
bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"
TESTING_KEYS_URL="s3.amazonaws.com/apttesting.datad0g.com/test-keys" \
TESTING_APT_URL="s3.amazonaws.com/apttesting.datad0g.com/datadog-agent/pipeline-${DD_PIPELINE_ID}-a7" \
TESTING_YUM_URL="s3.amazonaws.com/yumtesting.datad0g.com" \
bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR changes the AWS host E2E infrastructure so EC2 instances run without public internet access by default (via a dedicated “no-internet” security group set), and introduces an explicit opt-in (WithInternetAccess) for tests that still require outbound internet. It also updates many existing host-based tests to explicitly enable internet access where needed, and adjusts install-script/repo URLs to S3 endpoints to work better with S3 VPC gateway access.

Changes:

  • Default AWS host provisioner instances to no internet access, with an explicit WithInternetAccess() override.
  • Add EC2 VM options WithoutInternetAccess() / WithInternetAccess() and plumb the flag through to instance provisioning (security-group selection).
  • Update a large set of new-e2e suites to explicitly opt into internet access where required; switch several installer URLs to s3.amazonaws.com/....

Reviewed changes

Copilot reviewed 72 out of 72 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
test/new-e2e/tests/remote-config/tracer_test.go Opts suite into internet access explicitly
test/new-e2e/tests/netpath/network-path-integration/remote_config_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/netpath/network-path-integration/netpath_int_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/ndm/snmp/snmp_vm_test.go Opts suite into internet access explicitly
test/new-e2e/tests/ndm/snmp/autodiscovery_test.go Opts suite into internet access explicitly
test/new-e2e/tests/installer/unix/all_packages_test.go Opts suite into internet access explicitly
test/new-e2e/tests/installer/script/all_scripts_test.go Opts suite into internet access explicitly
test/new-e2e/tests/fleet/suite/suite.go Enables internet access for fleet host runs
test/new-e2e/tests/fleet/agent/install.go Switches installer script URLs to S3 endpoints
test/new-e2e/tests/discovery/process_autodiscovery_test.go Opts suite into internet access explicitly
test/new-e2e/tests/cws/windows_test.go Opts suite into internet access explicitly
test/new-e2e/tests/cws/ec2_test.go Opts suite into internet access explicitly
test/new-e2e/tests/cspm/host_benchmarks_nix_test.go Opts suite into internet access explicitly
test/new-e2e/tests/apm/vm_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-subcommands/status_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-subcommands/secret_win_test.go Opts suites into internet access explicitly
test/new-e2e/tests/agent-subcommands/secret_nix_test.go Opts suites into internet access explicitly
test/new-e2e/tests/agent-subcommands/run_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-subcommands/run_nix_test.go Adds scenec2 import + opts suite into internet access
test/new-e2e/tests/agent-subcommands/hostname_ec2_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-subcommands/hostname_ec2_nix_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-subcommands/health_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-subcommands/flare_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-subcommands/flare_nix_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-subcommands/diagnose_win_test.go Opts suite(s) into internet access explicitly
test/new-e2e/tests/agent-subcommands/diagnose_nix_test.go Opts suite(s) into internet access explicitly
test/new-e2e/tests/agent-subcommands/configcheck_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-subcommands/configcheck_nix_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-subcommands/config_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-subcommands/check_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-runtimes/shared_library_common_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-runtimes/rtloader_multiprocessing_lib_common_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-runtimes/procmgr/procmgr_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-runtimes/procmgr/par_procmgr_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-runtimes/ipc_security_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-runtimes/infra_eudm_common_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-runtimes/infra_basic_common_test.go Opts suite/update path into internet access explicitly
test/new-e2e/tests/agent-runtimes/hostname_drift_common_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-runtimes/auth_artifact_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-platform/tests/upgrade_test.go Defaults vmOpts to internet access
test/new-e2e/tests/agent-platform/tests/step_by_step_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-platform/tests/persisting_integrations_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-platform/tests/package_signing_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-platform/tests/macos_install_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-platform/tests/install_script_test.go Opts suite(s) into internet access explicitly
test/new-e2e/tests/agent-platform/tests/ddot_install_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-platform/install/install.go Switches install-script download URL to S3
test/new-e2e/tests/agent-log-pipelines/windows-log/file-tailing/file_tailing_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-configuration/sgc-embedded/sgc_multi_backend_nix_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-configuration/sgc_win_test.go Opts suite/update path into internet access explicitly
test/new-e2e/tests/agent-configuration/sgc_nix_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-configuration/sgc_aws_win_test.go Switches to NoFakeIntake + opts into internet access
test/new-e2e/tests/agent-configuration/sgc_aws_nix_test.go Opts update path into internet access explicitly
test/new-e2e/tests/agent-configuration/secret_win_test.go Opts suite/update path into internet access explicitly
test/new-e2e/tests/agent-configuration/secret_nix_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-configuration/inventory_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-configuration/gui_win_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-configuration/gui_nix_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-configuration/configrefresh_win_test.go Opts suite/update path into internet access explicitly
test/new-e2e/tests/agent-configuration/configrefresh_nix_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-configuration/configrefresh_api_key_refresh_test.go Opts suite into internet access explicitly
test/new-e2e/tests/agent-configuration/api_test.go Opts suite into internet access explicitly
test/new-e2e/examples/vm_test.go Updates example to explicitly configure no-internet
test/new-e2e/examples/agentenv_logs_test.go Updates example to explicitly configure no-internet
test/e2e-framework/testing/provisioners/aws/host/host.go Makes no-internet the default for host provisioners
test/e2e-framework/scenarios/aws/ec2/vmargs.go Adds VM options for internet access control
test/e2e-framework/scenarios/aws/ec2/vm.go Plumbs flag to resource-layer instance args
test/e2e-framework/resources/aws/environmentDefaults.go Adds no-internet SG names to selected env defaults
test/e2e-framework/resources/aws/environment.go Adds env accessor for no-internet SG names
test/e2e-framework/resources/aws/ec2/vm.go Selects security groups based on no-internet flag
test/e2e-framework/components/datadog/updater/install_script.sh Switches updater install script URL to S3
test/e2e-framework/components/datadog/agent/host_linuxos.go Switches repo/script URLs to S3 endpoints for installs

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 75 to 79
// We ALWAYS need to make a deep copy of `params`, as the provisioner can be called multiple times.
// and it's easy to forget about it, leading to hard to debug issues.
// Prepend the no-internet default so that caller-provided opts (e.g. ec2.WithInternetAccess()) can override it.
opts = append([]ProvisionerOption{WithRunOptions(ec2.WithEC2InstanceOptions(ec2.WithoutInternetAccess()))}, opts...)
params := getProvisionerParams(opts...)
Comment on lines 26 to 30
// - [WithHostID]
// - [WithTenancy]
// - [WithVolumeThroughput]
// - [WithoutInternetAccess]
// - [WithPulumiResourceOptions]
Comment on lines 40 to 44
defaultVPCID string
defaultSubnets []SubnetConfig
defaultSecurityGroups []string
noInternetSecurityGroupNames []string
defaultInstanceType string

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do all these tests really need internet ?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will try removing the flag progressively on all tests
Objective is first to add it, second to progressively remove it (and refactor tests when needed)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah ok from the description I thought it was being set on the proper tests directly, but that makes sense
I think most tests owned by my team don't need internet

tests that still need internet must call it explicitly in the test definition.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be worth asking some AI tool to check which tests might not need it (keeping it if there is any doubt) to reduce changes/reviewers in this PR
CI would show directly if a test fails anyway

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we plan at having some agents progressively doing it yep
likely split in multiple PRs so we can isolate failures + accelerate reviews

@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854d Bot merged commit 691a63b into main Aug 10, 2026
663 of 670 checks passed
@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854d Bot deleted the kfairise/acix-1891-disable-vm-internet-access branch August 10, 2026 10:44
@github-actions github-actions Bot added this to the 7.84.0 milestone Aug 10, 2026
@cit-pr-commenter-54b7da

Copy link
Copy Markdown

Regression Detector

Regression Detector Results

Metrics dashboard
Target profiles
Run ID: df79a835-e7fd-42a7-a3de-d7e0820fd19f

Baseline: e98625f
Comparison: 691a63b
Diff

Optimization Goals: ✅ No significant changes detected

Fine details of change detection per experiment

perf experiment goal Δ mean % Δ mean % CI trials links
quality_gate_metrics_logs memory utilization +0.57 [+0.33, +0.82] 1 Logs bounds checks dashboard
quality_gate_private_action_runner memory utilization +0.21 [+0.09, +0.33] 1 Logs bounds checks dashboard
quality_gate_security_mean_fs_load memory utilization +0.04 [+0.01, +0.08] 1 Logs bounds checks dashboard
quality_gate_security_no_fs_load memory utilization -0.02 [-0.11, +0.07] 1 Logs bounds checks dashboard
quality_gate_security_idle memory utilization -0.02 [-0.08, +0.03] 1 Logs bounds checks dashboard
quality_gate_idle memory utilization -0.10 [-0.15, -0.06] 1 Logs bounds checks dashboard
quality_gate_idle_all_features memory utilization -0.14 [-0.18, -0.11] 1 Logs bounds checks dashboard
quality_gate_logs % cpu utilization -3.98 [-4.84, -3.11] 1 Logs bounds checks dashboard

Bounds Checks: ✅ Passed

perf experiment bounds_check_name replicates_passed observed_value links
quality_gate_idle intake_connections 10/10 3 ≤ 4 bounds checks dashboard
quality_gate_idle memory_usage 10/10 148.41MiB ≤ 154MiB bounds checks dashboard
quality_gate_idle total_bytes_received 10/10 731.04KiB ≤ 819.20KiB bounds checks dashboard
quality_gate_idle_all_features intake_connections 10/10 3 ≤ 4 bounds checks dashboard
quality_gate_idle_all_features memory_usage 10/10 487.51MiB ≤ 512MiB bounds checks dashboard
quality_gate_idle_all_features total_bytes_received 10/10 1.13MiB ≤ 1.25MiB bounds checks dashboard
quality_gate_logs intake_connections 10/10 17 ≤ 40 bounds checks dashboard
quality_gate_logs memory_usage 10/10 183.14MiB ≤ 195MiB bounds checks dashboard
quality_gate_logs missed_bytes 10/10 0B = 0B bounds checks dashboard
quality_gate_logs total_bytes_received 10/10 264.17MiB ≤ 292MiB bounds checks dashboard
quality_gate_metrics_logs cpu_usage 10/10 356.39 ≤ 2000 bounds checks dashboard
quality_gate_metrics_logs intake_connections 10/10 18 ≤ 40 bounds checks dashboard
quality_gate_metrics_logs memory_usage 10/10 403.11MiB ≤ 430MiB bounds checks dashboard
quality_gate_metrics_logs missed_bytes 10/10 0B = 0B bounds checks dashboard
quality_gate_metrics_logs total_bytes_received 10/10 0.94GiB ≤ 1.04GiB bounds checks dashboard
quality_gate_private_action_runner memory_usage 10/10 71.61MiB ≤ 75MiB bounds checks dashboard
quality_gate_security_idle cpu_usage 10/10 26.42 ≤ 100 bounds checks dashboard
quality_gate_security_idle memory_usage 10/10 302.87MiB ≤ 330MiB bounds checks dashboard
quality_gate_security_mean_fs_load cpu_usage 10/10 58.16 ≤ 200 bounds checks dashboard
quality_gate_security_mean_fs_load memory_usage 10/10 282.55MiB ≤ 310MiB bounds checks dashboard
quality_gate_security_no_fs_load cpu_usage 10/10 20.48 ≤ 100 bounds checks dashboard
quality_gate_security_no_fs_load memory_usage 10/10 289.43MiB ≤ 320MiB bounds checks dashboard

Explanation

Confidence level: 90.00%
Effect size tolerance: |Δ mean %| ≥ 5.00%

Performance changes are noted in the perf column of each table:

  • ✅ = significantly better comparison variant performance
  • ❌ = significantly worse comparison variant performance
  • ➖ = no significant change in performance

A regression test is an A/B test of target performance in a repeatable rig, where "performance" is measured as "comparison variant minus baseline variant" for an optimization goal (e.g., ingress throughput). Due to intrinsic variability in measuring that goal, we can only estimate its mean value for each experiment; we report uncertainty in that value as a 90.00% confidence interval denoted "Δ mean % CI".

For each experiment, we decide whether a change in performance is a "regression" -- a change worth investigating further -- if all of the following criteria are true:

  1. Its estimated |Δ mean %| ≥ 5.00%, indicating the change is big enough to merit a closer look.

  2. Its 90.00% confidence interval "Δ mean % CI" does not contain zero, indicating that if our statistical model is accurate, there is at least a 90.00% chance there is a difference in performance between baseline and comparison variants.

  3. Its configuration does not mark it "erratic".

Replicate Execution Details

We run multiple replicates for each experiment/variant. However, we allow replicates to be automatically retried if there are any failures, up to 8 times, at which point the replicate is marked dead and we are unable to run analysis for the entire experiment. We call each of these attempts at running replicates a replicate execution. This section lists all replicate executions that failed due to the target crashing or being oom killed.

Note: In the below tables we bucket failures by experiment, variant, and failure type. For each of these buckets we list out the replicate indexes that failed with an annotation signifying how many times said replicate failed with the given failure mode. In the below example the baseline variant of the experiment named experiment_with_failures had two replicates that failed by oom kills. Replicate 0, which failed 8 executions, and replicate 1 which failed 6 executions, all with the same failure mode.

Experiment Variant Replicates Failure Logs Debug Dashboard
experiment_with_failures baseline 0 (x8) 1 (x6) Oom killed Debug Dashboard

The debug dashboard links will take you to a debugging dashboard specifically designed to investigate replicate execution failures.

❌ Retried Profiling Replicate Execution Failures (ddprof)

Note: Profiling replicas may still be executing. See the debug dashboard for up to date status.

Experiment Variant Replicates Failure Debug Dashboard
quality_gate_logs baseline 10 Oom killed Debug Dashboard
quality_gate_logs comparison 10 Oom killed Debug Dashboard
quality_gate_security_idle comparison 10 Oom killed Debug Dashboard

CI Pass/Fail Decision

Passed. All Quality Gates passed.

  • quality_gate_logs, bounds check intake_connections: 10/10 replicas passed. Gate passed.
  • quality_gate_logs, bounds check total_bytes_received: 10/10 replicas passed. Gate passed.
  • quality_gate_logs, bounds check missed_bytes: 10/10 replicas passed. Gate passed.
  • quality_gate_logs, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_security_no_fs_load, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_security_no_fs_load, bounds check cpu_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_idle, bounds check intake_connections: 10/10 replicas passed. Gate passed.
  • quality_gate_idle, bounds check total_bytes_received: 10/10 replicas passed. Gate passed.
  • quality_gate_idle, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_private_action_runner, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_security_idle, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_security_idle, bounds check cpu_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_security_mean_fs_load, bounds check cpu_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_security_mean_fs_load, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_idle_all_features, bounds check intake_connections: 10/10 replicas passed. Gate passed.
  • quality_gate_idle_all_features, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_idle_all_features, bounds check total_bytes_received: 10/10 replicas passed. Gate passed.
  • quality_gate_metrics_logs, bounds check intake_connections: 10/10 replicas passed. Gate passed.
  • quality_gate_metrics_logs, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_metrics_logs, bounds check cpu_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_metrics_logs, bounds check total_bytes_received: 10/10 replicas passed. Gate passed.
  • quality_gate_metrics_logs, bounds check missed_bytes: 10/10 replicas passed. Gate passed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.