Reinstate integration tests skipped in #611 to surface current failure state - #613

Draft
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests
Draft

Reinstate integration tests skipped in #611 to surface current failure state#613
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests

Conversation

@nathantournant

Copy link
Copy Markdown
Member

Summary

PR #611 added @pytest.mark.skip override stubs for 12 integration tests, citing two broken test-org fixtures:

  • The S3 destination bucket for the logs-archives fixture was deleted.
  • The metric-tag-configurations fixture set on the test org is empty.

This PR removes those skip-override stubs (deletes the override methods so the tests fall back to the inherited BaseResourcesTestClass implementations of the same name), reinstating:

  • tests/integration/resources/test_logs_archives.py: test_resource_sync, test_resource_sync_per_file, test_resource_update_sync, test_resource_update_sync_per_file, test_resource_cleanup, test_no_resource_diffs
  • tests/integration/resources/test_logs_archives_order.py: test_resource_sync, test_resource_sync_per_file
  • tests/integration/resources/test_metric_tag_configurations.py: test_resource_import, test_resource_import_per_file, test_resource_cleanup, test_no_resource_diffs

This PR is intentionally expected to fail CI. It is not meant to be merged as-is. Its purpose is diagnostic: to get a fresh, concrete, dated read on the actual current state of:

  1. the logs-archives S3 destination bucket fixture, and
  2. the metric-tag-configurations fixture on the test org,

and to convert the vague "fixture drift" explanation from #611 into an actionable, checkable state (either the tests still fail with the documented error, confirming the fixtures need re-provisioning, or they unexpectedly pass, meaning #611's skips can be reverted for real).

Related to #611.

Test plan

…e state
PR #611 added @pytest.mark.skip override stubs for 12 integration tests
across test_logs_archives.py, test_logs_archives_order.py, and
test_metric_tag_configurations.py, citing a deleted S3 destination
bucket for the logs-archives fixture and an empty
metric-tag-configurations fixture on the test org. This removes those
skip-override stubs so the tests fall back to the inherited
BaseResourcesTestClass implementations and actually run again in CI,
producing a fresh, concrete, dated signal on whether those two
fixtures are still broken instead of letting the "temporary" skip go
stale unnoticed.
This change is intentionally diagnostic: CI is expected to fail here
until the underlying fixtures are (re)provisioned.
Ref #611.
Environment: Datadog workspace
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@nathantournant

Copy link
Copy Markdown
MemberAuthor

Findings on the two broken fixtures

I dug through the test source and the recorded VCR cassettes (tests/integration/resources/cassettes/) to pin down concrete identifiers. CI hasn't produced a fresh failure log yet for this PR — the Run Integrations Tests workflow is currently queued behind another in-flight run (this repo's integration-test workflow uses a single global concurrency group, cancel-in-progress: false, so runs queue rather than run in parallel) — so the below is derived from cassette/config data, not a live failure trace. I'll follow up once a run actually executes.

1. logs-archives S3 destination bucket

From the recorded cassettes for test_logs_archives / test_logs_archives_order (e.g. TestLogsArchivesResources.test_resource_sync.yaml), the archive's destination config is:

"destination": {
"bucket": "hamr-logs-archive-for-internal-testing",
"path": "/logs-archive-testing",
"type": "s3",
"encryption": {"type": "NO_OVERRIDE"},
"storage_class": "STANDARD",
"integration": {
"role_name": "datadog-aws-integration-role",
"account_id": "267727855951"
}
}

The sync flow reads the archive from the source org (api.datadoghq.eu, i.e. DD_SOURCE_API_URL) and re-creates it against the destination org (api.us5.datadoghq.com, i.e. DD_DESTINATION_API_URL). The recorded source archive's state was already "FAILING" at capture time, consistent with the bucket having since been deleted.

What needs to be (re)provisioned, as concretely as this repo shows it:

  • An S3 bucket literally named hamr-logs-archive-for-internal-testing, in the AWS account 267727855951, with the archive path /logs-archive-testing.
  • The AWS integration role datadog-aws-integration-role needs to exist in that account and be attached as the Datadog AWS integration (the archive references it by role_name + account_id, not raw credentials), with whatever bucket policy Datadog's log-archive S3 destination requires (s3:PutObject/s3:GetBucketLocation/etc. for the Datadog log-archiving principal).
  • Once the bucket + role exist again, the destination org's logs_archives config should be re-pointed at it (or simply let datadog-sync sync recreate it, since the destination side is created fresh by the sync itself).

I could not find any indication in the repo of who owns/owned that AWS account or bucket, or a Terraform/CloudFormation definition for it — this looks like infra that lived outside this repo. If a live run does fail, the next diagnostic step is to pull the actual POST .../logs/config/archives response body from the CI log (gh run view <run-id> --log-failed) to get the exact API error (e.g. a 400 with a message naming the bucket/role) — I did not yet have a fresh failing run to pull that from.

2. metric-tag-configurations fixture

BaseResourcesTestClass.test_resource_import (in tests/integration/helpers.py) asserts len(source_resources) > 0 after importing — i.e. it requires the source org (DD_SOURCE_API_URL, the EU org) to have at least one metric with a tag configuration (manage_tags) already set. No filter is set on TestMetricConfigurationResources, so any configured metric satisfies the test — this isn't about one specific metric name being required by the test logic itself.

That said, the recorded cassette (TestMetricConfigurationResources.test_resource_import.yaml) shows what was previously configured on the source org, for concreteness:

  • msr.distribution — tags ["environment", "host"], type distribution, include_percentiles: true
  • msr.histogram.95percentile, msr.histogram.avg, msr.histogram.count, msr.histogram.max, msr.histogram.median — each tagged ["action_type"], aggregation {"time": "sum", "space": "sum"}

What needs to be provisioned: on the source (EU) test org, create/restore a metric tag configuration for at least one metric (ideally re-create the ones above, e.g. msr.distribution with tags environment/host, or any of the msr.histogram.* metrics with tag action_type) via POST /api/v2/metrics/{metric_name}/tags (or the Datadog UI's "Manage Tags" on a metric). Any single configured metric will unblock test_resource_import/test_resource_import_per_file; test_resource_cleanup and test_no_resource_diffs depend transitively on a prior successful sync, so they should follow once the import/sync tests pass.

I did not find a script or fixture-seeding tool in this repo that provisions test-org metrics/tags automatically — this looks like it needs to be done manually against the test org (or the metric needs to naturally exist with tag configs from real traffic).


This PR is expected to fail CI as-is; the intent is to get a dated, concrete signal (rather than the vague "fixture drift" note in #611) on whether these two fixtures are still broken, so they can be actually fixed instead of the skip going stale.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@nathantournant
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Reinstate integration tests skipped in #611 to surface current failure state - #613

Draft
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests
Draft

Reinstate integration tests skipped in #611 to surface current failure state#613
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests

Conversation

@nathantournant

Copy link
Copy Markdown
Member

Summary

PR #611 added @pytest.mark.skip override stubs for 12 integration tests, citing two broken test-org fixtures:

  • The S3 destination bucket for the logs-archives fixture was deleted.
  • The metric-tag-configurations fixture set on the test org is empty.

This PR removes those skip-override stubs (deletes the override methods so the tests fall back to the inherited BaseResourcesTestClass implementations of the same name), reinstating:

  • tests/integration/resources/test_logs_archives.py: test_resource_sync, test_resource_sync_per_file, test_resource_update_sync, test_resource_update_sync_per_file, test_resource_cleanup, test_no_resource_diffs
  • tests/integration/resources/test_logs_archives_order.py: test_resource_sync, test_resource_sync_per_file
  • tests/integration/resources/test_metric_tag_configurations.py: test_resource_import, test_resource_import_per_file, test_resource_cleanup, test_no_resource_diffs

This PR is intentionally expected to fail CI. It is not meant to be merged as-is. Its purpose is diagnostic: to get a fresh, concrete, dated read on the actual current state of:

  1. the logs-archives S3 destination bucket fixture, and
  2. the metric-tag-configurations fixture on the test org,

and to convert the vague "fixture drift" explanation from #611 into an actionable, checkable state (either the tests still fail with the documented error, confirming the fixtures need re-provisioning, or they unexpectedly pass, meaning #611's skips can be reverted for real).

Related to #611.

Test plan

…e state
PR #611 added @pytest.mark.skip override stubs for 12 integration tests
across test_logs_archives.py, test_logs_archives_order.py, and
test_metric_tag_configurations.py, citing a deleted S3 destination
bucket for the logs-archives fixture and an empty
metric-tag-configurations fixture on the test org. This removes those
skip-override stubs so the tests fall back to the inherited
BaseResourcesTestClass implementations and actually run again in CI,
producing a fresh, concrete, dated signal on whether those two
fixtures are still broken instead of letting the "temporary" skip go
stale unnoticed.
This change is intentionally diagnostic: CI is expected to fail here
until the underlying fixtures are (re)provisioned.
Ref #611.
Environment: Datadog workspace
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@nathantournant

Copy link
Copy Markdown
MemberAuthor

Findings on the two broken fixtures

I dug through the test source and the recorded VCR cassettes (tests/integration/resources/cassettes/) to pin down concrete identifiers. CI hasn't produced a fresh failure log yet for this PR — the Run Integrations Tests workflow is currently queued behind another in-flight run (this repo's integration-test workflow uses a single global concurrency group, cancel-in-progress: false, so runs queue rather than run in parallel) — so the below is derived from cassette/config data, not a live failure trace. I'll follow up once a run actually executes.

1. logs-archives S3 destination bucket

From the recorded cassettes for test_logs_archives / test_logs_archives_order (e.g. TestLogsArchivesResources.test_resource_sync.yaml), the archive's destination config is:

"destination": {
"bucket": "hamr-logs-archive-for-internal-testing",
"path": "/logs-archive-testing",
"type": "s3",
"encryption": {"type": "NO_OVERRIDE"},
"storage_class": "STANDARD",
"integration": {
"role_name": "datadog-aws-integration-role",
"account_id": "267727855951"
}
}

The sync flow reads the archive from the source org (api.datadoghq.eu, i.e. DD_SOURCE_API_URL) and re-creates it against the destination org (api.us5.datadoghq.com, i.e. DD_DESTINATION_API_URL). The recorded source archive's state was already "FAILING" at capture time, consistent with the bucket having since been deleted.

What needs to be (re)provisioned, as concretely as this repo shows it:

  • An S3 bucket literally named hamr-logs-archive-for-internal-testing, in the AWS account 267727855951, with the archive path /logs-archive-testing.
  • The AWS integration role datadog-aws-integration-role needs to exist in that account and be attached as the Datadog AWS integration (the archive references it by role_name + account_id, not raw credentials), with whatever bucket policy Datadog's log-archive S3 destination requires (s3:PutObject/s3:GetBucketLocation/etc. for the Datadog log-archiving principal).
  • Once the bucket + role exist again, the destination org's logs_archives config should be re-pointed at it (or simply let datadog-sync sync recreate it, since the destination side is created fresh by the sync itself).

I could not find any indication in the repo of who owns/owned that AWS account or bucket, or a Terraform/CloudFormation definition for it — this looks like infra that lived outside this repo. If a live run does fail, the next diagnostic step is to pull the actual POST .../logs/config/archives response body from the CI log (gh run view <run-id> --log-failed) to get the exact API error (e.g. a 400 with a message naming the bucket/role) — I did not yet have a fresh failing run to pull that from.

2. metric-tag-configurations fixture

BaseResourcesTestClass.test_resource_import (in tests/integration/helpers.py) asserts len(source_resources) > 0 after importing — i.e. it requires the source org (DD_SOURCE_API_URL, the EU org) to have at least one metric with a tag configuration (manage_tags) already set. No filter is set on TestMetricConfigurationResources, so any configured metric satisfies the test — this isn't about one specific metric name being required by the test logic itself.

That said, the recorded cassette (TestMetricConfigurationResources.test_resource_import.yaml) shows what was previously configured on the source org, for concreteness:

  • msr.distribution — tags ["environment", "host"], type distribution, include_percentiles: true
  • msr.histogram.95percentile, msr.histogram.avg, msr.histogram.count, msr.histogram.max, msr.histogram.median — each tagged ["action_type"], aggregation {"time": "sum", "space": "sum"}

What needs to be provisioned: on the source (EU) test org, create/restore a metric tag configuration for at least one metric (ideally re-create the ones above, e.g. msr.distribution with tags environment/host, or any of the msr.histogram.* metrics with tag action_type) via POST /api/v2/metrics/{metric_name}/tags (or the Datadog UI's "Manage Tags" on a metric). Any single configured metric will unblock test_resource_import/test_resource_import_per_file; test_resource_cleanup and test_no_resource_diffs depend transitively on a prior successful sync, so they should follow once the import/sync tests pass.

I did not find a script or fixture-seeding tool in this repo that provisions test-org metrics/tags automatically — this looks like it needs to be done manually against the test org (or the metric needs to naturally exist with tag configs from real traffic).


This PR is expected to fail CI as-is; the intent is to get a dated, concrete signal (rather than the vague "fixture drift" note in #611) on whether these two fixtures are still broken, so they can be actually fixed instead of the skip going stale.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@nathantournant
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Reinstate integration tests skipped in #611 to surface current failure state - #613

Draft
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests
Draft

Reinstate integration tests skipped in #611 to surface current failure state#613
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests

Conversation

@nathantournant

Copy link
Copy Markdown
Member

Summary

PR #611 added @pytest.mark.skip override stubs for 12 integration tests, citing two broken test-org fixtures:

  • The S3 destination bucket for the logs-archives fixture was deleted.
  • The metric-tag-configurations fixture set on the test org is empty.

This PR removes those skip-override stubs (deletes the override methods so the tests fall back to the inherited BaseResourcesTestClass implementations of the same name), reinstating:

  • tests/integration/resources/test_logs_archives.py: test_resource_sync, test_resource_sync_per_file, test_resource_update_sync, test_resource_update_sync_per_file, test_resource_cleanup, test_no_resource_diffs
  • tests/integration/resources/test_logs_archives_order.py: test_resource_sync, test_resource_sync_per_file
  • tests/integration/resources/test_metric_tag_configurations.py: test_resource_import, test_resource_import_per_file, test_resource_cleanup, test_no_resource_diffs

This PR is intentionally expected to fail CI. It is not meant to be merged as-is. Its purpose is diagnostic: to get a fresh, concrete, dated read on the actual current state of:

  1. the logs-archives S3 destination bucket fixture, and
  2. the metric-tag-configurations fixture on the test org,

and to convert the vague "fixture drift" explanation from #611 into an actionable, checkable state (either the tests still fail with the documented error, confirming the fixtures need re-provisioning, or they unexpectedly pass, meaning #611's skips can be reverted for real).

Related to #611.

Test plan

…e state
PR #611 added @pytest.mark.skip override stubs for 12 integration tests
across test_logs_archives.py, test_logs_archives_order.py, and
test_metric_tag_configurations.py, citing a deleted S3 destination
bucket for the logs-archives fixture and an empty
metric-tag-configurations fixture on the test org. This removes those
skip-override stubs so the tests fall back to the inherited
BaseResourcesTestClass implementations and actually run again in CI,
producing a fresh, concrete, dated signal on whether those two
fixtures are still broken instead of letting the "temporary" skip go
stale unnoticed.
This change is intentionally diagnostic: CI is expected to fail here
until the underlying fixtures are (re)provisioned.
Ref #611.
Environment: Datadog workspace
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@nathantournant

Copy link
Copy Markdown
MemberAuthor

Findings on the two broken fixtures

I dug through the test source and the recorded VCR cassettes (tests/integration/resources/cassettes/) to pin down concrete identifiers. CI hasn't produced a fresh failure log yet for this PR — the Run Integrations Tests workflow is currently queued behind another in-flight run (this repo's integration-test workflow uses a single global concurrency group, cancel-in-progress: false, so runs queue rather than run in parallel) — so the below is derived from cassette/config data, not a live failure trace. I'll follow up once a run actually executes.

1. logs-archives S3 destination bucket

From the recorded cassettes for test_logs_archives / test_logs_archives_order (e.g. TestLogsArchivesResources.test_resource_sync.yaml), the archive's destination config is:

"destination": {
"bucket": "hamr-logs-archive-for-internal-testing",
"path": "/logs-archive-testing",
"type": "s3",
"encryption": {"type": "NO_OVERRIDE"},
"storage_class": "STANDARD",
"integration": {
"role_name": "datadog-aws-integration-role",
"account_id": "267727855951"
}
}

The sync flow reads the archive from the source org (api.datadoghq.eu, i.e. DD_SOURCE_API_URL) and re-creates it against the destination org (api.us5.datadoghq.com, i.e. DD_DESTINATION_API_URL). The recorded source archive's state was already "FAILING" at capture time, consistent with the bucket having since been deleted.

What needs to be (re)provisioned, as concretely as this repo shows it:

  • An S3 bucket literally named hamr-logs-archive-for-internal-testing, in the AWS account 267727855951, with the archive path /logs-archive-testing.
  • The AWS integration role datadog-aws-integration-role needs to exist in that account and be attached as the Datadog AWS integration (the archive references it by role_name + account_id, not raw credentials), with whatever bucket policy Datadog's log-archive S3 destination requires (s3:PutObject/s3:GetBucketLocation/etc. for the Datadog log-archiving principal).
  • Once the bucket + role exist again, the destination org's logs_archives config should be re-pointed at it (or simply let datadog-sync sync recreate it, since the destination side is created fresh by the sync itself).

I could not find any indication in the repo of who owns/owned that AWS account or bucket, or a Terraform/CloudFormation definition for it — this looks like infra that lived outside this repo. If a live run does fail, the next diagnostic step is to pull the actual POST .../logs/config/archives response body from the CI log (gh run view <run-id> --log-failed) to get the exact API error (e.g. a 400 with a message naming the bucket/role) — I did not yet have a fresh failing run to pull that from.

2. metric-tag-configurations fixture

BaseResourcesTestClass.test_resource_import (in tests/integration/helpers.py) asserts len(source_resources) > 0 after importing — i.e. it requires the source org (DD_SOURCE_API_URL, the EU org) to have at least one metric with a tag configuration (manage_tags) already set. No filter is set on TestMetricConfigurationResources, so any configured metric satisfies the test — this isn't about one specific metric name being required by the test logic itself.

That said, the recorded cassette (TestMetricConfigurationResources.test_resource_import.yaml) shows what was previously configured on the source org, for concreteness:

  • msr.distribution — tags ["environment", "host"], type distribution, include_percentiles: true
  • msr.histogram.95percentile, msr.histogram.avg, msr.histogram.count, msr.histogram.max, msr.histogram.median — each tagged ["action_type"], aggregation {"time": "sum", "space": "sum"}

What needs to be provisioned: on the source (EU) test org, create/restore a metric tag configuration for at least one metric (ideally re-create the ones above, e.g. msr.distribution with tags environment/host, or any of the msr.histogram.* metrics with tag action_type) via POST /api/v2/metrics/{metric_name}/tags (or the Datadog UI's "Manage Tags" on a metric). Any single configured metric will unblock test_resource_import/test_resource_import_per_file; test_resource_cleanup and test_no_resource_diffs depend transitively on a prior successful sync, so they should follow once the import/sync tests pass.

I did not find a script or fixture-seeding tool in this repo that provisions test-org metrics/tags automatically — this looks like it needs to be done manually against the test org (or the metric needs to naturally exist with tag configs from real traffic).


This PR is expected to fail CI as-is; the intent is to get a dated, concrete signal (rather than the vague "fixture drift" note in #611) on whether these two fixtures are still broken, so they can be actually fixed instead of the skip going stale.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@nathantournant
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Reinstate integration tests skipped in #611 to surface current failure state - #613

Draft
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests
Draft

Reinstate integration tests skipped in #611 to surface current failure state#613
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests

Conversation

@nathantournant

Copy link
Copy Markdown
Member

Summary

PR #611 added @pytest.mark.skip override stubs for 12 integration tests, citing two broken test-org fixtures:

  • The S3 destination bucket for the logs-archives fixture was deleted.
  • The metric-tag-configurations fixture set on the test org is empty.

This PR removes those skip-override stubs (deletes the override methods so the tests fall back to the inherited BaseResourcesTestClass implementations of the same name), reinstating:

  • tests/integration/resources/test_logs_archives.py: test_resource_sync, test_resource_sync_per_file, test_resource_update_sync, test_resource_update_sync_per_file, test_resource_cleanup, test_no_resource_diffs
  • tests/integration/resources/test_logs_archives_order.py: test_resource_sync, test_resource_sync_per_file
  • tests/integration/resources/test_metric_tag_configurations.py: test_resource_import, test_resource_import_per_file, test_resource_cleanup, test_no_resource_diffs

This PR is intentionally expected to fail CI. It is not meant to be merged as-is. Its purpose is diagnostic: to get a fresh, concrete, dated read on the actual current state of:

  1. the logs-archives S3 destination bucket fixture, and
  2. the metric-tag-configurations fixture on the test org,

and to convert the vague "fixture drift" explanation from #611 into an actionable, checkable state (either the tests still fail with the documented error, confirming the fixtures need re-provisioning, or they unexpectedly pass, meaning #611's skips can be reverted for real).

Related to #611.

Test plan

…e state
PR #611 added @pytest.mark.skip override stubs for 12 integration tests
across test_logs_archives.py, test_logs_archives_order.py, and
test_metric_tag_configurations.py, citing a deleted S3 destination
bucket for the logs-archives fixture and an empty
metric-tag-configurations fixture on the test org. This removes those
skip-override stubs so the tests fall back to the inherited
BaseResourcesTestClass implementations and actually run again in CI,
producing a fresh, concrete, dated signal on whether those two
fixtures are still broken instead of letting the "temporary" skip go
stale unnoticed.
This change is intentionally diagnostic: CI is expected to fail here
until the underlying fixtures are (re)provisioned.
Ref #611.
Environment: Datadog workspace
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@nathantournant

Copy link
Copy Markdown
MemberAuthor

Findings on the two broken fixtures

I dug through the test source and the recorded VCR cassettes (tests/integration/resources/cassettes/) to pin down concrete identifiers. CI hasn't produced a fresh failure log yet for this PR — the Run Integrations Tests workflow is currently queued behind another in-flight run (this repo's integration-test workflow uses a single global concurrency group, cancel-in-progress: false, so runs queue rather than run in parallel) — so the below is derived from cassette/config data, not a live failure trace. I'll follow up once a run actually executes.

1. logs-archives S3 destination bucket

From the recorded cassettes for test_logs_archives / test_logs_archives_order (e.g. TestLogsArchivesResources.test_resource_sync.yaml), the archive's destination config is:

"destination": {
"bucket": "hamr-logs-archive-for-internal-testing",
"path": "/logs-archive-testing",
"type": "s3",
"encryption": {"type": "NO_OVERRIDE"},
"storage_class": "STANDARD",
"integration": {
"role_name": "datadog-aws-integration-role",
"account_id": "267727855951"
}
}

The sync flow reads the archive from the source org (api.datadoghq.eu, i.e. DD_SOURCE_API_URL) and re-creates it against the destination org (api.us5.datadoghq.com, i.e. DD_DESTINATION_API_URL). The recorded source archive's state was already "FAILING" at capture time, consistent with the bucket having since been deleted.

What needs to be (re)provisioned, as concretely as this repo shows it:

  • An S3 bucket literally named hamr-logs-archive-for-internal-testing, in the AWS account 267727855951, with the archive path /logs-archive-testing.
  • The AWS integration role datadog-aws-integration-role needs to exist in that account and be attached as the Datadog AWS integration (the archive references it by role_name + account_id, not raw credentials), with whatever bucket policy Datadog's log-archive S3 destination requires (s3:PutObject/s3:GetBucketLocation/etc. for the Datadog log-archiving principal).
  • Once the bucket + role exist again, the destination org's logs_archives config should be re-pointed at it (or simply let datadog-sync sync recreate it, since the destination side is created fresh by the sync itself).

I could not find any indication in the repo of who owns/owned that AWS account or bucket, or a Terraform/CloudFormation definition for it — this looks like infra that lived outside this repo. If a live run does fail, the next diagnostic step is to pull the actual POST .../logs/config/archives response body from the CI log (gh run view <run-id> --log-failed) to get the exact API error (e.g. a 400 with a message naming the bucket/role) — I did not yet have a fresh failing run to pull that from.

2. metric-tag-configurations fixture

BaseResourcesTestClass.test_resource_import (in tests/integration/helpers.py) asserts len(source_resources) > 0 after importing — i.e. it requires the source org (DD_SOURCE_API_URL, the EU org) to have at least one metric with a tag configuration (manage_tags) already set. No filter is set on TestMetricConfigurationResources, so any configured metric satisfies the test — this isn't about one specific metric name being required by the test logic itself.

That said, the recorded cassette (TestMetricConfigurationResources.test_resource_import.yaml) shows what was previously configured on the source org, for concreteness:

  • msr.distribution — tags ["environment", "host"], type distribution, include_percentiles: true
  • msr.histogram.95percentile, msr.histogram.avg, msr.histogram.count, msr.histogram.max, msr.histogram.median — each tagged ["action_type"], aggregation {"time": "sum", "space": "sum"}

What needs to be provisioned: on the source (EU) test org, create/restore a metric tag configuration for at least one metric (ideally re-create the ones above, e.g. msr.distribution with tags environment/host, or any of the msr.histogram.* metrics with tag action_type) via POST /api/v2/metrics/{metric_name}/tags (or the Datadog UI's "Manage Tags" on a metric). Any single configured metric will unblock test_resource_import/test_resource_import_per_file; test_resource_cleanup and test_no_resource_diffs depend transitively on a prior successful sync, so they should follow once the import/sync tests pass.

I did not find a script or fixture-seeding tool in this repo that provisions test-org metrics/tags automatically — this looks like it needs to be done manually against the test org (or the metric needs to naturally exist with tag configs from real traffic).


This PR is expected to fail CI as-is; the intent is to get a dated, concrete signal (rather than the vague "fixture drift" note in #611) on whether these two fixtures are still broken, so they can be actually fixed instead of the skip going stale.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@nathantournant
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Reinstate integration tests skipped in #611 to surface current failure state - #613

Draft
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests
Draft

Reinstate integration tests skipped in #611 to surface current failure state#613
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests

Conversation

@nathantournant

Copy link
Copy Markdown
Member

Summary

PR #611 added @pytest.mark.skip override stubs for 12 integration tests, citing two broken test-org fixtures:

  • The S3 destination bucket for the logs-archives fixture was deleted.
  • The metric-tag-configurations fixture set on the test org is empty.

This PR removes those skip-override stubs (deletes the override methods so the tests fall back to the inherited BaseResourcesTestClass implementations of the same name), reinstating:

  • tests/integration/resources/test_logs_archives.py: test_resource_sync, test_resource_sync_per_file, test_resource_update_sync, test_resource_update_sync_per_file, test_resource_cleanup, test_no_resource_diffs
  • tests/integration/resources/test_logs_archives_order.py: test_resource_sync, test_resource_sync_per_file
  • tests/integration/resources/test_metric_tag_configurations.py: test_resource_import, test_resource_import_per_file, test_resource_cleanup, test_no_resource_diffs

This PR is intentionally expected to fail CI. It is not meant to be merged as-is. Its purpose is diagnostic: to get a fresh, concrete, dated read on the actual current state of:

  1. the logs-archives S3 destination bucket fixture, and
  2. the metric-tag-configurations fixture on the test org,

and to convert the vague "fixture drift" explanation from #611 into an actionable, checkable state (either the tests still fail with the documented error, confirming the fixtures need re-provisioning, or they unexpectedly pass, meaning #611's skips can be reverted for real).

Related to #611.

Test plan

…e state
PR #611 added @pytest.mark.skip override stubs for 12 integration tests
across test_logs_archives.py, test_logs_archives_order.py, and
test_metric_tag_configurations.py, citing a deleted S3 destination
bucket for the logs-archives fixture and an empty
metric-tag-configurations fixture on the test org. This removes those
skip-override stubs so the tests fall back to the inherited
BaseResourcesTestClass implementations and actually run again in CI,
producing a fresh, concrete, dated signal on whether those two
fixtures are still broken instead of letting the "temporary" skip go
stale unnoticed.
This change is intentionally diagnostic: CI is expected to fail here
until the underlying fixtures are (re)provisioned.
Ref #611.
Environment: Datadog workspace
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@nathantournant

Copy link
Copy Markdown
MemberAuthor

Findings on the two broken fixtures

I dug through the test source and the recorded VCR cassettes (tests/integration/resources/cassettes/) to pin down concrete identifiers. CI hasn't produced a fresh failure log yet for this PR — the Run Integrations Tests workflow is currently queued behind another in-flight run (this repo's integration-test workflow uses a single global concurrency group, cancel-in-progress: false, so runs queue rather than run in parallel) — so the below is derived from cassette/config data, not a live failure trace. I'll follow up once a run actually executes.

1. logs-archives S3 destination bucket

From the recorded cassettes for test_logs_archives / test_logs_archives_order (e.g. TestLogsArchivesResources.test_resource_sync.yaml), the archive's destination config is:

"destination": {
"bucket": "hamr-logs-archive-for-internal-testing",
"path": "/logs-archive-testing",
"type": "s3",
"encryption": {"type": "NO_OVERRIDE"},
"storage_class": "STANDARD",
"integration": {
"role_name": "datadog-aws-integration-role",
"account_id": "267727855951"
}
}

The sync flow reads the archive from the source org (api.datadoghq.eu, i.e. DD_SOURCE_API_URL) and re-creates it against the destination org (api.us5.datadoghq.com, i.e. DD_DESTINATION_API_URL). The recorded source archive's state was already "FAILING" at capture time, consistent with the bucket having since been deleted.

What needs to be (re)provisioned, as concretely as this repo shows it:

  • An S3 bucket literally named hamr-logs-archive-for-internal-testing, in the AWS account 267727855951, with the archive path /logs-archive-testing.
  • The AWS integration role datadog-aws-integration-role needs to exist in that account and be attached as the Datadog AWS integration (the archive references it by role_name + account_id, not raw credentials), with whatever bucket policy Datadog's log-archive S3 destination requires (s3:PutObject/s3:GetBucketLocation/etc. for the Datadog log-archiving principal).
  • Once the bucket + role exist again, the destination org's logs_archives config should be re-pointed at it (or simply let datadog-sync sync recreate it, since the destination side is created fresh by the sync itself).

I could not find any indication in the repo of who owns/owned that AWS account or bucket, or a Terraform/CloudFormation definition for it — this looks like infra that lived outside this repo. If a live run does fail, the next diagnostic step is to pull the actual POST .../logs/config/archives response body from the CI log (gh run view <run-id> --log-failed) to get the exact API error (e.g. a 400 with a message naming the bucket/role) — I did not yet have a fresh failing run to pull that from.

2. metric-tag-configurations fixture

BaseResourcesTestClass.test_resource_import (in tests/integration/helpers.py) asserts len(source_resources) > 0 after importing — i.e. it requires the source org (DD_SOURCE_API_URL, the EU org) to have at least one metric with a tag configuration (manage_tags) already set. No filter is set on TestMetricConfigurationResources, so any configured metric satisfies the test — this isn't about one specific metric name being required by the test logic itself.

That said, the recorded cassette (TestMetricConfigurationResources.test_resource_import.yaml) shows what was previously configured on the source org, for concreteness:

  • msr.distribution — tags ["environment", "host"], type distribution, include_percentiles: true
  • msr.histogram.95percentile, msr.histogram.avg, msr.histogram.count, msr.histogram.max, msr.histogram.median — each tagged ["action_type"], aggregation {"time": "sum", "space": "sum"}

What needs to be provisioned: on the source (EU) test org, create/restore a metric tag configuration for at least one metric (ideally re-create the ones above, e.g. msr.distribution with tags environment/host, or any of the msr.histogram.* metrics with tag action_type) via POST /api/v2/metrics/{metric_name}/tags (or the Datadog UI's "Manage Tags" on a metric). Any single configured metric will unblock test_resource_import/test_resource_import_per_file; test_resource_cleanup and test_no_resource_diffs depend transitively on a prior successful sync, so they should follow once the import/sync tests pass.

I did not find a script or fixture-seeding tool in this repo that provisions test-org metrics/tags automatically — this looks like it needs to be done manually against the test org (or the metric needs to naturally exist with tag configs from real traffic).


This PR is expected to fail CI as-is; the intent is to get a dated, concrete signal (rather than the vague "fixture drift" note in #611) on whether these two fixtures are still broken, so they can be actually fixed instead of the skip going stale.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@nathantournant
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Reinstate integration tests skipped in #611 to surface current failure state - #613

Draft
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests
Draft

Reinstate integration tests skipped in #611 to surface current failure state#613
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests

Conversation

@nathantournant

Copy link
Copy Markdown
Member

Summary

PR #611 added @pytest.mark.skip override stubs for 12 integration tests, citing two broken test-org fixtures:

  • The S3 destination bucket for the logs-archives fixture was deleted.
  • The metric-tag-configurations fixture set on the test org is empty.

This PR removes those skip-override stubs (deletes the override methods so the tests fall back to the inherited BaseResourcesTestClass implementations of the same name), reinstating:

  • tests/integration/resources/test_logs_archives.py: test_resource_sync, test_resource_sync_per_file, test_resource_update_sync, test_resource_update_sync_per_file, test_resource_cleanup, test_no_resource_diffs
  • tests/integration/resources/test_logs_archives_order.py: test_resource_sync, test_resource_sync_per_file
  • tests/integration/resources/test_metric_tag_configurations.py: test_resource_import, test_resource_import_per_file, test_resource_cleanup, test_no_resource_diffs

This PR is intentionally expected to fail CI. It is not meant to be merged as-is. Its purpose is diagnostic: to get a fresh, concrete, dated read on the actual current state of:

  1. the logs-archives S3 destination bucket fixture, and
  2. the metric-tag-configurations fixture on the test org,

and to convert the vague "fixture drift" explanation from #611 into an actionable, checkable state (either the tests still fail with the documented error, confirming the fixtures need re-provisioning, or they unexpectedly pass, meaning #611's skips can be reverted for real).

Related to #611.

Test plan

…e state
PR #611 added @pytest.mark.skip override stubs for 12 integration tests
across test_logs_archives.py, test_logs_archives_order.py, and
test_metric_tag_configurations.py, citing a deleted S3 destination
bucket for the logs-archives fixture and an empty
metric-tag-configurations fixture on the test org. This removes those
skip-override stubs so the tests fall back to the inherited
BaseResourcesTestClass implementations and actually run again in CI,
producing a fresh, concrete, dated signal on whether those two
fixtures are still broken instead of letting the "temporary" skip go
stale unnoticed.
This change is intentionally diagnostic: CI is expected to fail here
until the underlying fixtures are (re)provisioned.
Ref #611.
Environment: Datadog workspace
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@nathantournant

Copy link
Copy Markdown
MemberAuthor

Findings on the two broken fixtures

I dug through the test source and the recorded VCR cassettes (tests/integration/resources/cassettes/) to pin down concrete identifiers. CI hasn't produced a fresh failure log yet for this PR — the Run Integrations Tests workflow is currently queued behind another in-flight run (this repo's integration-test workflow uses a single global concurrency group, cancel-in-progress: false, so runs queue rather than run in parallel) — so the below is derived from cassette/config data, not a live failure trace. I'll follow up once a run actually executes.

1. logs-archives S3 destination bucket

From the recorded cassettes for test_logs_archives / test_logs_archives_order (e.g. TestLogsArchivesResources.test_resource_sync.yaml), the archive's destination config is:

"destination": {
"bucket": "hamr-logs-archive-for-internal-testing",
"path": "/logs-archive-testing",
"type": "s3",
"encryption": {"type": "NO_OVERRIDE"},
"storage_class": "STANDARD",
"integration": {
"role_name": "datadog-aws-integration-role",
"account_id": "267727855951"
}
}

The sync flow reads the archive from the source org (api.datadoghq.eu, i.e. DD_SOURCE_API_URL) and re-creates it against the destination org (api.us5.datadoghq.com, i.e. DD_DESTINATION_API_URL). The recorded source archive's state was already "FAILING" at capture time, consistent with the bucket having since been deleted.

What needs to be (re)provisioned, as concretely as this repo shows it:

  • An S3 bucket literally named hamr-logs-archive-for-internal-testing, in the AWS account 267727855951, with the archive path /logs-archive-testing.
  • The AWS integration role datadog-aws-integration-role needs to exist in that account and be attached as the Datadog AWS integration (the archive references it by role_name + account_id, not raw credentials), with whatever bucket policy Datadog's log-archive S3 destination requires (s3:PutObject/s3:GetBucketLocation/etc. for the Datadog log-archiving principal).
  • Once the bucket + role exist again, the destination org's logs_archives config should be re-pointed at it (or simply let datadog-sync sync recreate it, since the destination side is created fresh by the sync itself).

I could not find any indication in the repo of who owns/owned that AWS account or bucket, or a Terraform/CloudFormation definition for it — this looks like infra that lived outside this repo. If a live run does fail, the next diagnostic step is to pull the actual POST .../logs/config/archives response body from the CI log (gh run view <run-id> --log-failed) to get the exact API error (e.g. a 400 with a message naming the bucket/role) — I did not yet have a fresh failing run to pull that from.

2. metric-tag-configurations fixture

BaseResourcesTestClass.test_resource_import (in tests/integration/helpers.py) asserts len(source_resources) > 0 after importing — i.e. it requires the source org (DD_SOURCE_API_URL, the EU org) to have at least one metric with a tag configuration (manage_tags) already set. No filter is set on TestMetricConfigurationResources, so any configured metric satisfies the test — this isn't about one specific metric name being required by the test logic itself.

That said, the recorded cassette (TestMetricConfigurationResources.test_resource_import.yaml) shows what was previously configured on the source org, for concreteness:

  • msr.distribution — tags ["environment", "host"], type distribution, include_percentiles: true
  • msr.histogram.95percentile, msr.histogram.avg, msr.histogram.count, msr.histogram.max, msr.histogram.median — each tagged ["action_type"], aggregation {"time": "sum", "space": "sum"}

What needs to be provisioned: on the source (EU) test org, create/restore a metric tag configuration for at least one metric (ideally re-create the ones above, e.g. msr.distribution with tags environment/host, or any of the msr.histogram.* metrics with tag action_type) via POST /api/v2/metrics/{metric_name}/tags (or the Datadog UI's "Manage Tags" on a metric). Any single configured metric will unblock test_resource_import/test_resource_import_per_file; test_resource_cleanup and test_no_resource_diffs depend transitively on a prior successful sync, so they should follow once the import/sync tests pass.

I did not find a script or fixture-seeding tool in this repo that provisions test-org metrics/tags automatically — this looks like it needs to be done manually against the test org (or the metric needs to naturally exist with tag configs from real traffic).


This PR is expected to fail CI as-is; the intent is to get a dated, concrete signal (rather than the vague "fixture drift" note in #611) on whether these two fixtures are still broken, so they can be actually fixed instead of the skip going stale.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@nathantournant
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Reinstate integration tests skipped in #611 to surface current failure state - #613

Draft
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests
Draft

Reinstate integration tests skipped in #611 to surface current failure state#613
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests

Conversation

@nathantournant

Copy link
Copy Markdown
Member

Summary

PR #611 added @pytest.mark.skip override stubs for 12 integration tests, citing two broken test-org fixtures:

  • The S3 destination bucket for the logs-archives fixture was deleted.
  • The metric-tag-configurations fixture set on the test org is empty.

This PR removes those skip-override stubs (deletes the override methods so the tests fall back to the inherited BaseResourcesTestClass implementations of the same name), reinstating:

  • tests/integration/resources/test_logs_archives.py: test_resource_sync, test_resource_sync_per_file, test_resource_update_sync, test_resource_update_sync_per_file, test_resource_cleanup, test_no_resource_diffs
  • tests/integration/resources/test_logs_archives_order.py: test_resource_sync, test_resource_sync_per_file
  • tests/integration/resources/test_metric_tag_configurations.py: test_resource_import, test_resource_import_per_file, test_resource_cleanup, test_no_resource_diffs

This PR is intentionally expected to fail CI. It is not meant to be merged as-is. Its purpose is diagnostic: to get a fresh, concrete, dated read on the actual current state of:

  1. the logs-archives S3 destination bucket fixture, and
  2. the metric-tag-configurations fixture on the test org,

and to convert the vague "fixture drift" explanation from #611 into an actionable, checkable state (either the tests still fail with the documented error, confirming the fixtures need re-provisioning, or they unexpectedly pass, meaning #611's skips can be reverted for real).

Related to #611.

Test plan

…e state
PR #611 added @pytest.mark.skip override stubs for 12 integration tests
across test_logs_archives.py, test_logs_archives_order.py, and
test_metric_tag_configurations.py, citing a deleted S3 destination
bucket for the logs-archives fixture and an empty
metric-tag-configurations fixture on the test org. This removes those
skip-override stubs so the tests fall back to the inherited
BaseResourcesTestClass implementations and actually run again in CI,
producing a fresh, concrete, dated signal on whether those two
fixtures are still broken instead of letting the "temporary" skip go
stale unnoticed.
This change is intentionally diagnostic: CI is expected to fail here
until the underlying fixtures are (re)provisioned.
Ref #611.
Environment: Datadog workspace
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@nathantournant

Copy link
Copy Markdown
MemberAuthor

Findings on the two broken fixtures

I dug through the test source and the recorded VCR cassettes (tests/integration/resources/cassettes/) to pin down concrete identifiers. CI hasn't produced a fresh failure log yet for this PR — the Run Integrations Tests workflow is currently queued behind another in-flight run (this repo's integration-test workflow uses a single global concurrency group, cancel-in-progress: false, so runs queue rather than run in parallel) — so the below is derived from cassette/config data, not a live failure trace. I'll follow up once a run actually executes.

1. logs-archives S3 destination bucket

From the recorded cassettes for test_logs_archives / test_logs_archives_order (e.g. TestLogsArchivesResources.test_resource_sync.yaml), the archive's destination config is:

"destination": {
"bucket": "hamr-logs-archive-for-internal-testing",
"path": "/logs-archive-testing",
"type": "s3",
"encryption": {"type": "NO_OVERRIDE"},
"storage_class": "STANDARD",
"integration": {
"role_name": "datadog-aws-integration-role",
"account_id": "267727855951"
}
}

The sync flow reads the archive from the source org (api.datadoghq.eu, i.e. DD_SOURCE_API_URL) and re-creates it against the destination org (api.us5.datadoghq.com, i.e. DD_DESTINATION_API_URL). The recorded source archive's state was already "FAILING" at capture time, consistent with the bucket having since been deleted.

What needs to be (re)provisioned, as concretely as this repo shows it:

  • An S3 bucket literally named hamr-logs-archive-for-internal-testing, in the AWS account 267727855951, with the archive path /logs-archive-testing.
  • The AWS integration role datadog-aws-integration-role needs to exist in that account and be attached as the Datadog AWS integration (the archive references it by role_name + account_id, not raw credentials), with whatever bucket policy Datadog's log-archive S3 destination requires (s3:PutObject/s3:GetBucketLocation/etc. for the Datadog log-archiving principal).
  • Once the bucket + role exist again, the destination org's logs_archives config should be re-pointed at it (or simply let datadog-sync sync recreate it, since the destination side is created fresh by the sync itself).

I could not find any indication in the repo of who owns/owned that AWS account or bucket, or a Terraform/CloudFormation definition for it — this looks like infra that lived outside this repo. If a live run does fail, the next diagnostic step is to pull the actual POST .../logs/config/archives response body from the CI log (gh run view <run-id> --log-failed) to get the exact API error (e.g. a 400 with a message naming the bucket/role) — I did not yet have a fresh failing run to pull that from.

2. metric-tag-configurations fixture

BaseResourcesTestClass.test_resource_import (in tests/integration/helpers.py) asserts len(source_resources) > 0 after importing — i.e. it requires the source org (DD_SOURCE_API_URL, the EU org) to have at least one metric with a tag configuration (manage_tags) already set. No filter is set on TestMetricConfigurationResources, so any configured metric satisfies the test — this isn't about one specific metric name being required by the test logic itself.

That said, the recorded cassette (TestMetricConfigurationResources.test_resource_import.yaml) shows what was previously configured on the source org, for concreteness:

  • msr.distribution — tags ["environment", "host"], type distribution, include_percentiles: true
  • msr.histogram.95percentile, msr.histogram.avg, msr.histogram.count, msr.histogram.max, msr.histogram.median — each tagged ["action_type"], aggregation {"time": "sum", "space": "sum"}

What needs to be provisioned: on the source (EU) test org, create/restore a metric tag configuration for at least one metric (ideally re-create the ones above, e.g. msr.distribution with tags environment/host, or any of the msr.histogram.* metrics with tag action_type) via POST /api/v2/metrics/{metric_name}/tags (or the Datadog UI's "Manage Tags" on a metric). Any single configured metric will unblock test_resource_import/test_resource_import_per_file; test_resource_cleanup and test_no_resource_diffs depend transitively on a prior successful sync, so they should follow once the import/sync tests pass.

I did not find a script or fixture-seeding tool in this repo that provisions test-org metrics/tags automatically — this looks like it needs to be done manually against the test org (or the metric needs to naturally exist with tag configs from real traffic).


This PR is expected to fail CI as-is; the intent is to get a dated, concrete signal (rather than the vague "fixture drift" note in #611) on whether these two fixtures are still broken, so they can be actually fixed instead of the skip going stale.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@nathantournant
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Reinstate integration tests skipped in #611 to surface current failure state - #613

Draft
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests
Draft

Reinstate integration tests skipped in #611 to surface current failure state#613
nathantournant wants to merge 1 commit into
mainfrom
nathan.tournant/reinstate-skipped-integration-tests

Conversation

@nathantournant

Copy link
Copy Markdown
Member

Summary

PR #611 added @pytest.mark.skip override stubs for 12 integration tests, citing two broken test-org fixtures:

  • The S3 destination bucket for the logs-archives fixture was deleted.
  • The metric-tag-configurations fixture set on the test org is empty.

This PR removes those skip-override stubs (deletes the override methods so the tests fall back to the inherited BaseResourcesTestClass implementations of the same name), reinstating:

  • tests/integration/resources/test_logs_archives.py: test_resource_sync, test_resource_sync_per_file, test_resource_update_sync, test_resource_update_sync_per_file, test_resource_cleanup, test_no_resource_diffs
  • tests/integration/resources/test_logs_archives_order.py: test_resource_sync, test_resource_sync_per_file
  • tests/integration/resources/test_metric_tag_configurations.py: test_resource_import, test_resource_import_per_file, test_resource_cleanup, test_no_resource_diffs

This PR is intentionally expected to fail CI. It is not meant to be merged as-is. Its purpose is diagnostic: to get a fresh, concrete, dated read on the actual current state of:

  1. the logs-archives S3 destination bucket fixture, and
  2. the metric-tag-configurations fixture on the test org,

and to convert the vague "fixture drift" explanation from #611 into an actionable, checkable state (either the tests still fail with the documented error, confirming the fixtures need re-provisioning, or they unexpectedly pass, meaning #611's skips can be reverted for real).

Related to #611.

Test plan

…e state
PR #611 added @pytest.mark.skip override stubs for 12 integration tests
across test_logs_archives.py, test_logs_archives_order.py, and
test_metric_tag_configurations.py, citing a deleted S3 destination
bucket for the logs-archives fixture and an empty
metric-tag-configurations fixture on the test org. This removes those
skip-override stubs so the tests fall back to the inherited
BaseResourcesTestClass implementations and actually run again in CI,
producing a fresh, concrete, dated signal on whether those two
fixtures are still broken instead of letting the "temporary" skip go
stale unnoticed.
This change is intentionally diagnostic: CI is expected to fail here
until the underlying fixtures are (re)provisioned.
Ref #611.
Environment: Datadog workspace
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@nathantournant

Copy link
Copy Markdown
MemberAuthor

Findings on the two broken fixtures

I dug through the test source and the recorded VCR cassettes (tests/integration/resources/cassettes/) to pin down concrete identifiers. CI hasn't produced a fresh failure log yet for this PR — the Run Integrations Tests workflow is currently queued behind another in-flight run (this repo's integration-test workflow uses a single global concurrency group, cancel-in-progress: false, so runs queue rather than run in parallel) — so the below is derived from cassette/config data, not a live failure trace. I'll follow up once a run actually executes.

1. logs-archives S3 destination bucket

From the recorded cassettes for test_logs_archives / test_logs_archives_order (e.g. TestLogsArchivesResources.test_resource_sync.yaml), the archive's destination config is:

"destination": {
"bucket": "hamr-logs-archive-for-internal-testing",
"path": "/logs-archive-testing",
"type": "s3",
"encryption": {"type": "NO_OVERRIDE"},
"storage_class": "STANDARD",
"integration": {
"role_name": "datadog-aws-integration-role",
"account_id": "267727855951"
}
}

The sync flow reads the archive from the source org (api.datadoghq.eu, i.e. DD_SOURCE_API_URL) and re-creates it against the destination org (api.us5.datadoghq.com, i.e. DD_DESTINATION_API_URL). The recorded source archive's state was already "FAILING" at capture time, consistent with the bucket having since been deleted.

What needs to be (re)provisioned, as concretely as this repo shows it:

  • An S3 bucket literally named hamr-logs-archive-for-internal-testing, in the AWS account 267727855951, with the archive path /logs-archive-testing.
  • The AWS integration role datadog-aws-integration-role needs to exist in that account and be attached as the Datadog AWS integration (the archive references it by role_name + account_id, not raw credentials), with whatever bucket policy Datadog's log-archive S3 destination requires (s3:PutObject/s3:GetBucketLocation/etc. for the Datadog log-archiving principal).
  • Once the bucket + role exist again, the destination org's logs_archives config should be re-pointed at it (or simply let datadog-sync sync recreate it, since the destination side is created fresh by the sync itself).

I could not find any indication in the repo of who owns/owned that AWS account or bucket, or a Terraform/CloudFormation definition for it — this looks like infra that lived outside this repo. If a live run does fail, the next diagnostic step is to pull the actual POST .../logs/config/archives response body from the CI log (gh run view <run-id> --log-failed) to get the exact API error (e.g. a 400 with a message naming the bucket/role) — I did not yet have a fresh failing run to pull that from.

2. metric-tag-configurations fixture

BaseResourcesTestClass.test_resource_import (in tests/integration/helpers.py) asserts len(source_resources) > 0 after importing — i.e. it requires the source org (DD_SOURCE_API_URL, the EU org) to have at least one metric with a tag configuration (manage_tags) already set. No filter is set on TestMetricConfigurationResources, so any configured metric satisfies the test — this isn't about one specific metric name being required by the test logic itself.

That said, the recorded cassette (TestMetricConfigurationResources.test_resource_import.yaml) shows what was previously configured on the source org, for concreteness:

  • msr.distribution — tags ["environment", "host"], type distribution, include_percentiles: true
  • msr.histogram.95percentile, msr.histogram.avg, msr.histogram.count, msr.histogram.max, msr.histogram.median — each tagged ["action_type"], aggregation {"time": "sum", "space": "sum"}

What needs to be provisioned: on the source (EU) test org, create/restore a metric tag configuration for at least one metric (ideally re-create the ones above, e.g. msr.distribution with tags environment/host, or any of the msr.histogram.* metrics with tag action_type) via POST /api/v2/metrics/{metric_name}/tags (or the Datadog UI's "Manage Tags" on a metric). Any single configured metric will unblock test_resource_import/test_resource_import_per_file; test_resource_cleanup and test_no_resource_diffs depend transitively on a prior successful sync, so they should follow once the import/sync tests pass.

I did not find a script or fixture-seeding tool in this repo that provisions test-org metrics/tags automatically — this looks like it needs to be done manually against the test org (or the metric needs to naturally exist with tag configs from real traffic).


This PR is expected to fail CI as-is; the intent is to get a dated, concrete signal (rather than the vague "fixture drift" note in #611) on whether these two fixtures are still broken, so they can be actually fixed instead of the skip going stale.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@nathantournant