Skip to content

chore(antithesis): Alter dogstatsd generation to is_malformed regime - #2215

Open
blt wants to merge 1 commit into
mainfrom
blt/chore_antithesis_alter_dogstatsd_generation_to_is_malformed_regime
Open

chore(antithesis): Alter dogstatsd generation to is_malformed regime#2215
blt wants to merge 1 commit into
mainfrom
blt/chore_antithesis_alter_dogstatsd_generation_to_is_malformed_regime

Conversation

@blt

@blt blt commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Our previous approach to generating dogstatsd load for use in the
Antithesis rig was very Datadog/lading inspired: generate something
that is correct-by-construction and then bias the result to be
'interesting'. This works well but the biasing systematically avoids
conditions that are not-malformed -- that is, accepted by the SUT --
but are demonstrative of goofy behavior. This commit changes the
generator to be a hybrid of that approach with a state search approach.
We define a predicate is_malformed that confirms whether or not
a payload will be accepted by the SUT and then payloads which are not
malformed, however strange, are transmitted.

Change Type

  • Bug fix
  • New feature
  • Non-functional (chore, refactoring, docs)
  • Performance

How did you test this PR?

References

@datadog-datadog-prod-us1

This comment has been minimized.

@pr-commenter

pr-commenter Bot commented Jul 27, 2026

Copy link
Copy Markdown

Binary Size Analysis (Agent Data Plane)

Baseline: 7f0ba13 · Comparison: eaf9e7e · diff
Analysis Configuration: stripped binaries · Pass/Fail Threshold: +5%
Sizes: 41.60 MiB (baseline) vs 41.60 MiB (comparison)
Size Change: +0 B (+0.00%)

✅ Binary size difference within threshold

Changes by Module
Module File Size Symbols
anon.44a0faa3240fa409baa379409d152aec.1.llvm.17202424994989785089 -130 B 1
anon.44a0faa3240fa409baa379409d152aec.1.llvm.7551628282365772059 +129 B 1
anon.44a0faa3240fa409baa379409d152aec.4.llvm.17202424994989785089 -114 B 1
anon.44a0faa3240fa409baa379409d152aec.4.llvm.7551628282365772059 +113 B 1
anon.44a0faa3240fa409baa379409d152aec.3.llvm.17202424994989785089 -109 B 1
anon.44a0faa3240fa409baa379409d152aec.3.llvm.7551628282365772059 +108 B 1
anon.44a0faa3240fa409baa379409d152aec.0.llvm.17202424994989785089 -97 B 1
anon.44a0faa3240fa409baa379409d152aec.0.llvm.7551628282365772059 +96 B 1
anon.44a0faa3240fa409baa379409d152aec.2.llvm.17202424994989785089 -95 B 1
anon.44a0faa3240fa409baa379409d152aec.2.llvm.7551628282365772059 +94 B 1
[Unmapped] +5 B 1
Detailed Symbol Changes
    FILE SIZE        VM SIZE    
 --------------  -------------- 
  [NEW]    +129  [NEW]     +40    anon.44a0faa3240fa409baa379409d152aec.1.llvm.7551628282365772059
  [NEW]    +113  [NEW]     +24    anon.44a0faa3240fa409baa379409d152aec.4.llvm.7551628282365772059
  [NEW]    +108  [NEW]     +19    anon.44a0faa3240fa409baa379409d152aec.3.llvm.7551628282365772059
  [NEW]     +96  [NEW]      +7    anon.44a0faa3240fa409baa379409d152aec.0.llvm.7551628282365772059
  [NEW]     +94  [NEW]      +5    anon.44a0faa3240fa409baa379409d152aec.2.llvm.7551628282365772059
   +10%      +5  [ = ]       0    [Unmapped]
  [DEL]     -95  [DEL]      -5    anon.44a0faa3240fa409baa379409d152aec.2.llvm.17202424994989785089
  [DEL]     -97  [DEL]      -7    anon.44a0faa3240fa409baa379409d152aec.0.llvm.17202424994989785089
  [DEL]    -109  [DEL]     -19    anon.44a0faa3240fa409baa379409d152aec.3.llvm.17202424994989785089
  [DEL]    -114  [DEL]     -24    anon.44a0faa3240fa409baa379409d152aec.4.llvm.17202424994989785089
  [DEL]    -130  [DEL]     -40    anon.44a0faa3240fa409baa379409d152aec.1.llvm.17202424994989785089
  [ = ]       0  [ = ]       0    TOTAL

@blt
blt marked this pull request as ready for review July 27, 2026 23:19
@blt
blt requested review from a team as code owners July 27, 2026 23:19

@datadog-datadog-prod-us1 datadog-datadog-prod-us1 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.

Datadog Autotest: PASS

More details

The generator redesign did not reveal a clear diff-only behavioral regression. Adversarial cases covered delimiter-bearing fields, packed values, optional fields, framing, fallback sizing, and malformed-input repair; harness execution was blocked by the sandbox's unavailable hyper-http-proxy Git dependency.

Was this helpful? React 👍 or 👎

Open Bits AI session

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

@pr-commenter

pr-commenter Bot commented Jul 27, 2026

Copy link
Copy Markdown

Regression Detector (Agent Data Plane)

Run ID: baa98e60-f0ea-421f-b44f-80085b9b4867
Baseline: 7f0ba132 · Comparison: eaf9e7ea · diff

Optimization Goals: ✅ No significant changes detected

Fine details of change detection per experiment (5)

Experiments configured erratic: true are tagged (ignored) and skipped when determining which experiments regressed or improved. Experiments which are detected as erratic at runtime are tagged (erratic) to flag that the run's sample dispersion was high, but their regression / improvement signal still counts.

experiment goal Δ mean % links
quality_gates_rss_dsd_low memory ⚪ +0.21 metrics profiles logs
quality_gates_rss_dsd_medium memory ⚪ -0.04 metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory ⚪ -0.08 metrics profiles logs
quality_gates_rss_idle memory ⚪ -0.09 metrics profiles logs
quality_gates_rss_dsd_heavy memory ⚪ -0.18 metrics profiles logs
Bounds Checks: ✅ Passed (5)
experiment check replicates observed links
quality_gates_rss_dsd_heavy memory_usage 10/10 ✅ 142 MiB ≤ 145 MiB metrics profiles logs
quality_gates_rss_dsd_low memory_usage 10/10 ✅ 49.7 MiB ≤ 50 MiB metrics profiles logs
quality_gates_rss_dsd_medium memory_usage 10/10 ✅ 76.5 MiB ≤ 80 MiB metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory_usage 10/10 ✅ 203 MiB ≤ 205 MiB metrics profiles logs
quality_gates_rss_idle memory_usage 10/10 ✅ 31.8 MiB ≤ 40 MiB metrics profiles logs
Explanation

A change is flagged as a regression when |Δ mean %| > 5.00% in the regressing direction for its optimization goal AND SMP marks the experiment as a regression (is_regression: true). Improvements use the matching criteria for the improving direction. Experiments configured erratic: true (tagged (ignored)) are skipped outright; experiments detected as erratic at runtime (tagged (erratic)) still count, since that flag describes sample dispersion rather than directional certainty. The Δ mean % cell is colored accordingly: 🟢 = improvement, 🔴 = regression, ⚪ = neutral. Reduction in CPU or memory is an improvement; reduction in ingress throughput is a regression.

@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: e4ff7fa8ae

ℹ️ 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".

Comment thread test/antithesis/harness/src/payload/dogstatsd.rs Outdated
@blt
blt force-pushed the blt/chore_antithesis_alter_dogstatsd_generation_to_is_malformed_regime branch from e4ff7fa to f89d2be Compare July 29, 2026 17:15
@blt
blt force-pushed the blt/chore_antithesis_intro_intake_v3 branch 2 times, most recently from aad38fb to e6183a6 Compare July 29, 2026 20:37
@blt
blt force-pushed the blt/chore_antithesis_alter_dogstatsd_generation_to_is_malformed_regime branch from f89d2be to 07e1995 Compare July 29, 2026 20:37

@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: 07e1995aed

ℹ️ 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".

Comment thread test/antithesis/harness/src/payload/dogstatsd.rs Outdated
Comment thread test/antithesis/harness/src/dogstatsd.rs Outdated
@blt
blt force-pushed the blt/chore_antithesis_intro_intake_v3 branch from e6183a6 to ae4f370 Compare July 29, 2026 20:50
@blt
blt force-pushed the blt/chore_antithesis_alter_dogstatsd_generation_to_is_malformed_regime branch from 07e1995 to b943695 Compare July 29, 2026 20:50
@blt
blt force-pushed the blt/chore_antithesis_intro_intake_v3 branch from ae4f370 to dbfb781 Compare July 29, 2026 21:18
@blt
blt force-pushed the blt/chore_antithesis_alter_dogstatsd_generation_to_is_malformed_regime branch from b943695 to a6dd29d Compare July 29, 2026 21:18

@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: a6dd29db83

ℹ️ 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".

Comment thread test/antithesis/harness/src/dogstatsd.rs
Comment thread test/antithesis/harness/src/dogstatsd.rs
@blt
blt force-pushed the blt/chore_antithesis_alter_dogstatsd_generation_to_is_malformed_regime branch from a6dd29d to 212be47 Compare July 29, 2026 22:42
@blt
blt force-pushed the blt/chore_antithesis_intro_intake_v3 branch 2 times, most recently from c3941f6 to cd8f1f4 Compare July 29, 2026 22:55
@blt
blt force-pushed the blt/chore_antithesis_alter_dogstatsd_generation_to_is_malformed_regime branch from 212be47 to 57f3d76 Compare July 29, 2026 22:55
@blt
blt force-pushed the blt/chore_antithesis_intro_intake_v3 branch from cd8f1f4 to c1edde3 Compare July 29, 2026 23:00
@blt
blt force-pushed the blt/chore_antithesis_alter_dogstatsd_generation_to_is_malformed_regime branch 2 times, most recently from 170d7ed to 56c2a83 Compare July 29, 2026 23:06
@blt
blt force-pushed the blt/chore_antithesis_intro_intake_v3 branch from c1edde3 to 513666b Compare July 29, 2026 23:06
@blt
blt force-pushed the blt/chore_antithesis_alter_dogstatsd_generation_to_is_malformed_regime branch 3 times, most recently from e6fcbf2 to 8f3b592 Compare July 30, 2026 00:22
@blt
blt force-pushed the blt/chore_antithesis_intro_intake_v3 branch from 513666b to da79efc Compare July 31, 2026 18:26
@blt
blt force-pushed the blt/chore_antithesis_alter_dogstatsd_generation_to_is_malformed_regime branch 2 times, most recently from 0e9a907 to 4bcdae0 Compare July 31, 2026 22:51
@blt
blt force-pushed the blt/chore_antithesis_intro_intake_v3 branch from da79efc to 5974b21 Compare July 31, 2026 22:51
/// index but are never malformed.
///
/// One variant per Agent drop rule, across all three message types. The metric `T` timestamp rule is
/// intentionally absent. See the note in [`classify_metric`].

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.

We should to fix this, because it's easy to fix... but I'll look into having the API docs job skip trying to generate docs for anything under test/antithesis since none of this code needs polished docs that way that we want Saluki to have.

@tobz tobz left a comment

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.

One small nit to fix.

@blt
blt changed the base branch from blt/chore_antithesis_intro_intake_v3 to graphite-base/2215 August 3, 2026 18:34
@blt
blt force-pushed the blt/chore_antithesis_alter_dogstatsd_generation_to_is_malformed_regime branch from 4bcdae0 to c33ffb4 Compare August 3, 2026 18:34
@blt
blt force-pushed the graphite-base/2215 branch from 5974b21 to 7f0ba13 Compare August 3, 2026 18:34
@graphite-app
graphite-app Bot changed the base branch from graphite-base/2215 to main August 3, 2026 18:35
Our previous approach to generating dogstatsd load for use in the
Antithesis rig was very Datadog/lading inspired: generate something
that is correct-by-construction and then bias the result to be
'interesting'. This works well but the biasing systematically avoids
conditions that are not-malformed -- that is, accepted by the SUT --
but are demonstrative of goofy behavior. This commit changes the
generator to be a hybrid of that approach with a state search approach.
We define a predicate `is_malformed` that confirms whether or not
a payload will be accepted by the SUT and then payloads which are not
malformed, however strange, are transmitted.
@blt
blt force-pushed the blt/chore_antithesis_alter_dogstatsd_generation_to_is_malformed_regime branch from c33ffb4 to eaf9e7e Compare August 3, 2026 18:35

@datadog-datadog-prod-us1 datadog-datadog-prod-us1 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.

Datadog Autotest: PASS

More details

The generator now constructs and validates serialized DogStatsD lines before sending, including delimiter, malformed-input, and boundary-budget paths. No clear diff-only behavioral regression was identified; focused execution was blocked by the sandbox being unable to fetch the pinned Rust git dependency.

Was this helpful? React 👍 or 👎

Open Bits AI session

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

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

Labels

area/test All things testing: unit/integration, correctness, SMP regression, etc.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants