Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput - #9762

Merged
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests
Apr 1, 2025
Merged

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput#9762
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented Mar 31, 2025

Copy link
Copy Markdown
Contributor

Summary

Fixes#9551

Reset ETDumpGen instances in each test iteration to avoid shared state to correctly trigger ET_EXPECT_DEATH when no DataSink is set.

Test plan

buck2 run devtools/etdump/tests:etdump_test --

@pytorch-bot

pytorch-botBot commented Mar 31, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/9762

Note: Links to docs will display an error until the docs builds have been completed.

✅ No Failures

As of commit f27d896 with merge base bc3d437 (image):
💚 Looks good so far! There are no failures yet. 💚

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Mar 31, 2025
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@pytorchbot label "topic: not user facing"

@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

Hi @Gasoonjia, would you mind taking a look at my changes to confirm they match what you had in mind?

I noticed that the DebugEvent test (starting at line 188) follows the same pattern as LogDelegateIntermediateOutput before I added the additional ET_EXPECT_DEATH checks. Do you think similar checks should be added there as well?

@Gasoonjia

Copy link
Copy Markdown
Contributor

hi @keyprocedure thanks for your great work!
Yes please update all of them:
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L214
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L513
Thanks!

@keyprocedurekeyprocedure changed the title Refactor and add ET_EXPECT_DEATH tests to LogDelegateIntermediateOutputAdd try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutputApr 1, 2025
@keyprocedure
keyprocedure marked this pull request as ready for review April 1, 2025 03:20
auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

perhapes we can move this line under if (j == 0) to make more structural.

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.

same as above!

@keyprocedurekeyprocedureApr 1, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good catch! I moved line 544 under the if (j==0) condition

Does the second comment, "same as above", refer to line 209 in the most recently changed file?
It looks like that call creates a target block where values logged via log_evalue in the following lines are appended

@GasoonjiaGasoonjia 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.

Overall LGTM! Thanks @keyprocedure for your contribution! Will stamp it after ci pass.

}

// Triggers ET_EXPECT_DEATH if log_intermediate_output_delegate has no data sink
static void expect_log_intermediate_delegate_death(

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.

Love this helper function! Please make it as a protected member function of ProfilerETDumpTest to prohibit misuse. See https://github.com/pytorch/executorch/blob/main/kernels/test/op_split_copy_test.cpp#L94 for an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Moved the helper function, I appreciate the example!

auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

same as above!

@Gasoonjia
Gasoonjia merged commit 354c57e into pytorch:mainApr 1, 2025
@Gasoonjia

Copy link
Copy Markdown
Contributor

Thanks for your great work! Merged!

kirklandsign pushed a commit that referenced this pull request Apr 11, 2025
…termediateOutput (#9762)
### Summary
Fixes#9551 Reset ETDumpGen instances in each test iteration to avoid shared state
to correctly trigger ET_EXPECT_DEATH when no DataSink is set.
### Test plan
buck2 run devtools/etdump/tests:etdump_test --
---------
Co-authored-by: Gasoonjia <gasoonjia@meta.com>
@mergennachinmergennachin added the community: contribution PRs coming from community (excluding hardware partners) label Apr 28, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.community: contributionPRs coming from community (excluding hardware partners)topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing try-before-set tests for datasink in etdumpgen tests

4 participants

@keyprocedure@Gasoonjia@mergennachin@facebook-github-bot
, '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

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput - #9762

Merged
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests
Apr 1, 2025
Merged

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput#9762
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented Mar 31, 2025

Copy link
Copy Markdown
Contributor

Summary

Fixes#9551

Reset ETDumpGen instances in each test iteration to avoid shared state to correctly trigger ET_EXPECT_DEATH when no DataSink is set.

Test plan

buck2 run devtools/etdump/tests:etdump_test --

@pytorch-bot

pytorch-botBot commented Mar 31, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/9762

Note: Links to docs will display an error until the docs builds have been completed.

✅ No Failures

As of commit f27d896 with merge base bc3d437 (image):
💚 Looks good so far! There are no failures yet. 💚

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Mar 31, 2025
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@pytorchbot label "topic: not user facing"

@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

Hi @Gasoonjia, would you mind taking a look at my changes to confirm they match what you had in mind?

I noticed that the DebugEvent test (starting at line 188) follows the same pattern as LogDelegateIntermediateOutput before I added the additional ET_EXPECT_DEATH checks. Do you think similar checks should be added there as well?

@Gasoonjia

Copy link
Copy Markdown
Contributor

hi @keyprocedure thanks for your great work!
Yes please update all of them:
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L214
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L513
Thanks!

@keyprocedurekeyprocedure changed the title Refactor and add ET_EXPECT_DEATH tests to LogDelegateIntermediateOutputAdd try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutputApr 1, 2025
@keyprocedure
keyprocedure marked this pull request as ready for review April 1, 2025 03:20
auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

perhapes we can move this line under if (j == 0) to make more structural.

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.

same as above!

@keyprocedurekeyprocedureApr 1, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good catch! I moved line 544 under the if (j==0) condition

Does the second comment, "same as above", refer to line 209 in the most recently changed file?
It looks like that call creates a target block where values logged via log_evalue in the following lines are appended

@GasoonjiaGasoonjia 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.

Overall LGTM! Thanks @keyprocedure for your contribution! Will stamp it after ci pass.

}

// Triggers ET_EXPECT_DEATH if log_intermediate_output_delegate has no data sink
static void expect_log_intermediate_delegate_death(

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.

Love this helper function! Please make it as a protected member function of ProfilerETDumpTest to prohibit misuse. See https://github.com/pytorch/executorch/blob/main/kernels/test/op_split_copy_test.cpp#L94 for an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Moved the helper function, I appreciate the example!

auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

same as above!

@Gasoonjia
Gasoonjia merged commit 354c57e into pytorch:mainApr 1, 2025
@Gasoonjia

Copy link
Copy Markdown
Contributor

Thanks for your great work! Merged!

kirklandsign pushed a commit that referenced this pull request Apr 11, 2025
…termediateOutput (#9762)
### Summary
Fixes#9551 Reset ETDumpGen instances in each test iteration to avoid shared state
to correctly trigger ET_EXPECT_DEATH when no DataSink is set.
### Test plan
buck2 run devtools/etdump/tests:etdump_test --
---------
Co-authored-by: Gasoonjia <gasoonjia@meta.com>
@mergennachinmergennachin added the community: contribution PRs coming from community (excluding hardware partners) label Apr 28, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.community: contributionPRs coming from community (excluding hardware partners)topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing try-before-set tests for datasink in etdumpgen tests

4 participants

@keyprocedure@Gasoonjia@mergennachin@facebook-github-bot
, '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

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput - #9762

Merged
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests
Apr 1, 2025
Merged

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput#9762
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented Mar 31, 2025

Copy link
Copy Markdown
Contributor

Summary

Fixes#9551

Reset ETDumpGen instances in each test iteration to avoid shared state to correctly trigger ET_EXPECT_DEATH when no DataSink is set.

Test plan

buck2 run devtools/etdump/tests:etdump_test --

@pytorch-bot

pytorch-botBot commented Mar 31, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/9762

Note: Links to docs will display an error until the docs builds have been completed.

✅ No Failures

As of commit f27d896 with merge base bc3d437 (image):
💚 Looks good so far! There are no failures yet. 💚

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Mar 31, 2025
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@pytorchbot label "topic: not user facing"

@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

Hi @Gasoonjia, would you mind taking a look at my changes to confirm they match what you had in mind?

I noticed that the DebugEvent test (starting at line 188) follows the same pattern as LogDelegateIntermediateOutput before I added the additional ET_EXPECT_DEATH checks. Do you think similar checks should be added there as well?

@Gasoonjia

Copy link
Copy Markdown
Contributor

hi @keyprocedure thanks for your great work!
Yes please update all of them:
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L214
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L513
Thanks!

@keyprocedurekeyprocedure changed the title Refactor and add ET_EXPECT_DEATH tests to LogDelegateIntermediateOutputAdd try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutputApr 1, 2025
@keyprocedure
keyprocedure marked this pull request as ready for review April 1, 2025 03:20
auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

perhapes we can move this line under if (j == 0) to make more structural.

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.

same as above!

@keyprocedurekeyprocedureApr 1, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good catch! I moved line 544 under the if (j==0) condition

Does the second comment, "same as above", refer to line 209 in the most recently changed file?
It looks like that call creates a target block where values logged via log_evalue in the following lines are appended

@GasoonjiaGasoonjia 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.

Overall LGTM! Thanks @keyprocedure for your contribution! Will stamp it after ci pass.

}

// Triggers ET_EXPECT_DEATH if log_intermediate_output_delegate has no data sink
static void expect_log_intermediate_delegate_death(

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.

Love this helper function! Please make it as a protected member function of ProfilerETDumpTest to prohibit misuse. See https://github.com/pytorch/executorch/blob/main/kernels/test/op_split_copy_test.cpp#L94 for an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Moved the helper function, I appreciate the example!

auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

same as above!

@Gasoonjia
Gasoonjia merged commit 354c57e into pytorch:mainApr 1, 2025
@Gasoonjia

Copy link
Copy Markdown
Contributor

Thanks for your great work! Merged!

kirklandsign pushed a commit that referenced this pull request Apr 11, 2025
…termediateOutput (#9762)
### Summary
Fixes#9551 Reset ETDumpGen instances in each test iteration to avoid shared state
to correctly trigger ET_EXPECT_DEATH when no DataSink is set.
### Test plan
buck2 run devtools/etdump/tests:etdump_test --
---------
Co-authored-by: Gasoonjia <gasoonjia@meta.com>
@mergennachinmergennachin added the community: contribution PRs coming from community (excluding hardware partners) label Apr 28, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.community: contributionPRs coming from community (excluding hardware partners)topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing try-before-set tests for datasink in etdumpgen tests

4 participants

@keyprocedure@Gasoonjia@mergennachin@facebook-github-bot
, '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

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput - #9762

Merged
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests
Apr 1, 2025
Merged

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput#9762
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented Mar 31, 2025

Copy link
Copy Markdown
Contributor

Summary

Fixes#9551

Reset ETDumpGen instances in each test iteration to avoid shared state to correctly trigger ET_EXPECT_DEATH when no DataSink is set.

Test plan

buck2 run devtools/etdump/tests:etdump_test --

@pytorch-bot

pytorch-botBot commented Mar 31, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/9762

Note: Links to docs will display an error until the docs builds have been completed.

✅ No Failures

As of commit f27d896 with merge base bc3d437 (image):
💚 Looks good so far! There are no failures yet. 💚

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Mar 31, 2025
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@pytorchbot label "topic: not user facing"

@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

Hi @Gasoonjia, would you mind taking a look at my changes to confirm they match what you had in mind?

I noticed that the DebugEvent test (starting at line 188) follows the same pattern as LogDelegateIntermediateOutput before I added the additional ET_EXPECT_DEATH checks. Do you think similar checks should be added there as well?

@Gasoonjia

Copy link
Copy Markdown
Contributor

hi @keyprocedure thanks for your great work!
Yes please update all of them:
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L214
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L513
Thanks!

@keyprocedurekeyprocedure changed the title Refactor and add ET_EXPECT_DEATH tests to LogDelegateIntermediateOutputAdd try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutputApr 1, 2025
@keyprocedure
keyprocedure marked this pull request as ready for review April 1, 2025 03:20
auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

perhapes we can move this line under if (j == 0) to make more structural.

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.

same as above!

@keyprocedurekeyprocedureApr 1, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good catch! I moved line 544 under the if (j==0) condition

Does the second comment, "same as above", refer to line 209 in the most recently changed file?
It looks like that call creates a target block where values logged via log_evalue in the following lines are appended

@GasoonjiaGasoonjia 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.

Overall LGTM! Thanks @keyprocedure for your contribution! Will stamp it after ci pass.

}

// Triggers ET_EXPECT_DEATH if log_intermediate_output_delegate has no data sink
static void expect_log_intermediate_delegate_death(

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.

Love this helper function! Please make it as a protected member function of ProfilerETDumpTest to prohibit misuse. See https://github.com/pytorch/executorch/blob/main/kernels/test/op_split_copy_test.cpp#L94 for an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Moved the helper function, I appreciate the example!

auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

same as above!

@Gasoonjia
Gasoonjia merged commit 354c57e into pytorch:mainApr 1, 2025
@Gasoonjia

Copy link
Copy Markdown
Contributor

Thanks for your great work! Merged!

kirklandsign pushed a commit that referenced this pull request Apr 11, 2025
…termediateOutput (#9762)
### Summary
Fixes#9551 Reset ETDumpGen instances in each test iteration to avoid shared state
to correctly trigger ET_EXPECT_DEATH when no DataSink is set.
### Test plan
buck2 run devtools/etdump/tests:etdump_test --
---------
Co-authored-by: Gasoonjia <gasoonjia@meta.com>
@mergennachinmergennachin added the community: contribution PRs coming from community (excluding hardware partners) label Apr 28, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.community: contributionPRs coming from community (excluding hardware partners)topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing try-before-set tests for datasink in etdumpgen tests

4 participants

@keyprocedure@Gasoonjia@mergennachin@facebook-github-bot
, '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

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput - #9762

Merged
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests
Apr 1, 2025
Merged

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput#9762
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented Mar 31, 2025

Copy link
Copy Markdown
Contributor

Summary

Fixes#9551

Reset ETDumpGen instances in each test iteration to avoid shared state to correctly trigger ET_EXPECT_DEATH when no DataSink is set.

Test plan

buck2 run devtools/etdump/tests:etdump_test --

@pytorch-bot

pytorch-botBot commented Mar 31, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/9762

Note: Links to docs will display an error until the docs builds have been completed.

✅ No Failures

As of commit f27d896 with merge base bc3d437 (image):
💚 Looks good so far! There are no failures yet. 💚

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Mar 31, 2025
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@pytorchbot label "topic: not user facing"

@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

Hi @Gasoonjia, would you mind taking a look at my changes to confirm they match what you had in mind?

I noticed that the DebugEvent test (starting at line 188) follows the same pattern as LogDelegateIntermediateOutput before I added the additional ET_EXPECT_DEATH checks. Do you think similar checks should be added there as well?

@Gasoonjia

Copy link
Copy Markdown
Contributor

hi @keyprocedure thanks for your great work!
Yes please update all of them:
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L214
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L513
Thanks!

@keyprocedurekeyprocedure changed the title Refactor and add ET_EXPECT_DEATH tests to LogDelegateIntermediateOutputAdd try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutputApr 1, 2025
@keyprocedure
keyprocedure marked this pull request as ready for review April 1, 2025 03:20
auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

perhapes we can move this line under if (j == 0) to make more structural.

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.

same as above!

@keyprocedurekeyprocedureApr 1, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good catch! I moved line 544 under the if (j==0) condition

Does the second comment, "same as above", refer to line 209 in the most recently changed file?
It looks like that call creates a target block where values logged via log_evalue in the following lines are appended

@GasoonjiaGasoonjia 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.

Overall LGTM! Thanks @keyprocedure for your contribution! Will stamp it after ci pass.

}

// Triggers ET_EXPECT_DEATH if log_intermediate_output_delegate has no data sink
static void expect_log_intermediate_delegate_death(

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.

Love this helper function! Please make it as a protected member function of ProfilerETDumpTest to prohibit misuse. See https://github.com/pytorch/executorch/blob/main/kernels/test/op_split_copy_test.cpp#L94 for an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Moved the helper function, I appreciate the example!

auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

same as above!

@Gasoonjia
Gasoonjia merged commit 354c57e into pytorch:mainApr 1, 2025
@Gasoonjia

Copy link
Copy Markdown
Contributor

Thanks for your great work! Merged!

kirklandsign pushed a commit that referenced this pull request Apr 11, 2025
…termediateOutput (#9762)
### Summary
Fixes#9551 Reset ETDumpGen instances in each test iteration to avoid shared state
to correctly trigger ET_EXPECT_DEATH when no DataSink is set.
### Test plan
buck2 run devtools/etdump/tests:etdump_test --
---------
Co-authored-by: Gasoonjia <gasoonjia@meta.com>
@mergennachinmergennachin added the community: contribution PRs coming from community (excluding hardware partners) label Apr 28, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.community: contributionPRs coming from community (excluding hardware partners)topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing try-before-set tests for datasink in etdumpgen tests

4 participants

@keyprocedure@Gasoonjia@mergennachin@facebook-github-bot
, '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

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput - #9762

Merged
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests
Apr 1, 2025
Merged

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput#9762
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented Mar 31, 2025

Copy link
Copy Markdown
Contributor

Summary

Fixes#9551

Reset ETDumpGen instances in each test iteration to avoid shared state to correctly trigger ET_EXPECT_DEATH when no DataSink is set.

Test plan

buck2 run devtools/etdump/tests:etdump_test --

@pytorch-bot

pytorch-botBot commented Mar 31, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/9762

Note: Links to docs will display an error until the docs builds have been completed.

✅ No Failures

As of commit f27d896 with merge base bc3d437 (image):
💚 Looks good so far! There are no failures yet. 💚

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Mar 31, 2025
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@pytorchbot label "topic: not user facing"

@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

Hi @Gasoonjia, would you mind taking a look at my changes to confirm they match what you had in mind?

I noticed that the DebugEvent test (starting at line 188) follows the same pattern as LogDelegateIntermediateOutput before I added the additional ET_EXPECT_DEATH checks. Do you think similar checks should be added there as well?

@Gasoonjia

Copy link
Copy Markdown
Contributor

hi @keyprocedure thanks for your great work!
Yes please update all of them:
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L214
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L513
Thanks!

@keyprocedurekeyprocedure changed the title Refactor and add ET_EXPECT_DEATH tests to LogDelegateIntermediateOutputAdd try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutputApr 1, 2025
@keyprocedure
keyprocedure marked this pull request as ready for review April 1, 2025 03:20
auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

perhapes we can move this line under if (j == 0) to make more structural.

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.

same as above!

@keyprocedurekeyprocedureApr 1, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good catch! I moved line 544 under the if (j==0) condition

Does the second comment, "same as above", refer to line 209 in the most recently changed file?
It looks like that call creates a target block where values logged via log_evalue in the following lines are appended

@GasoonjiaGasoonjia 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.

Overall LGTM! Thanks @keyprocedure for your contribution! Will stamp it after ci pass.

}

// Triggers ET_EXPECT_DEATH if log_intermediate_output_delegate has no data sink
static void expect_log_intermediate_delegate_death(

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.

Love this helper function! Please make it as a protected member function of ProfilerETDumpTest to prohibit misuse. See https://github.com/pytorch/executorch/blob/main/kernels/test/op_split_copy_test.cpp#L94 for an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Moved the helper function, I appreciate the example!

auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

same as above!

@Gasoonjia
Gasoonjia merged commit 354c57e into pytorch:mainApr 1, 2025
@Gasoonjia

Copy link
Copy Markdown
Contributor

Thanks for your great work! Merged!

kirklandsign pushed a commit that referenced this pull request Apr 11, 2025
…termediateOutput (#9762)
### Summary
Fixes#9551 Reset ETDumpGen instances in each test iteration to avoid shared state
to correctly trigger ET_EXPECT_DEATH when no DataSink is set.
### Test plan
buck2 run devtools/etdump/tests:etdump_test --
---------
Co-authored-by: Gasoonjia <gasoonjia@meta.com>
@mergennachinmergennachin added the community: contribution PRs coming from community (excluding hardware partners) label Apr 28, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.community: contributionPRs coming from community (excluding hardware partners)topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing try-before-set tests for datasink in etdumpgen tests

4 participants

@keyprocedure@Gasoonjia@mergennachin@facebook-github-bot
, '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

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput - #9762

Merged
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests
Apr 1, 2025
Merged

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput#9762
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented Mar 31, 2025

Copy link
Copy Markdown
Contributor

Summary

Fixes#9551

Reset ETDumpGen instances in each test iteration to avoid shared state to correctly trigger ET_EXPECT_DEATH when no DataSink is set.

Test plan

buck2 run devtools/etdump/tests:etdump_test --

@pytorch-bot

pytorch-botBot commented Mar 31, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/9762

Note: Links to docs will display an error until the docs builds have been completed.

✅ No Failures

As of commit f27d896 with merge base bc3d437 (image):
💚 Looks good so far! There are no failures yet. 💚

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Mar 31, 2025
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@pytorchbot label "topic: not user facing"

@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

Hi @Gasoonjia, would you mind taking a look at my changes to confirm they match what you had in mind?

I noticed that the DebugEvent test (starting at line 188) follows the same pattern as LogDelegateIntermediateOutput before I added the additional ET_EXPECT_DEATH checks. Do you think similar checks should be added there as well?

@Gasoonjia

Copy link
Copy Markdown
Contributor

hi @keyprocedure thanks for your great work!
Yes please update all of them:
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L214
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L513
Thanks!

@keyprocedurekeyprocedure changed the title Refactor and add ET_EXPECT_DEATH tests to LogDelegateIntermediateOutputAdd try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutputApr 1, 2025
@keyprocedure
keyprocedure marked this pull request as ready for review April 1, 2025 03:20
auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

perhapes we can move this line under if (j == 0) to make more structural.

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.

same as above!

@keyprocedurekeyprocedureApr 1, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good catch! I moved line 544 under the if (j==0) condition

Does the second comment, "same as above", refer to line 209 in the most recently changed file?
It looks like that call creates a target block where values logged via log_evalue in the following lines are appended

@GasoonjiaGasoonjia 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.

Overall LGTM! Thanks @keyprocedure for your contribution! Will stamp it after ci pass.

}

// Triggers ET_EXPECT_DEATH if log_intermediate_output_delegate has no data sink
static void expect_log_intermediate_delegate_death(

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.

Love this helper function! Please make it as a protected member function of ProfilerETDumpTest to prohibit misuse. See https://github.com/pytorch/executorch/blob/main/kernels/test/op_split_copy_test.cpp#L94 for an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Moved the helper function, I appreciate the example!

auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

same as above!

@Gasoonjia
Gasoonjia merged commit 354c57e into pytorch:mainApr 1, 2025
@Gasoonjia

Copy link
Copy Markdown
Contributor

Thanks for your great work! Merged!

kirklandsign pushed a commit that referenced this pull request Apr 11, 2025
…termediateOutput (#9762)
### Summary
Fixes#9551 Reset ETDumpGen instances in each test iteration to avoid shared state
to correctly trigger ET_EXPECT_DEATH when no DataSink is set.
### Test plan
buck2 run devtools/etdump/tests:etdump_test --
---------
Co-authored-by: Gasoonjia <gasoonjia@meta.com>
@mergennachinmergennachin added the community: contribution PRs coming from community (excluding hardware partners) label Apr 28, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.community: contributionPRs coming from community (excluding hardware partners)topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing try-before-set tests for datasink in etdumpgen tests

4 participants

@keyprocedure@Gasoonjia@mergennachin@facebook-github-bot
, '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

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput - #9762

Merged
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests
Apr 1, 2025
Merged

Add try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutput#9762
Gasoonjia merged 8 commits into
pytorch:mainfrom
keyprocedure:add-datasink-try-before-set-tests

Conversation

@keyprocedure

@keyprocedurekeyprocedure commented Mar 31, 2025

Copy link
Copy Markdown
Contributor

Summary

Fixes#9551

Reset ETDumpGen instances in each test iteration to avoid shared state to correctly trigger ET_EXPECT_DEATH when no DataSink is set.

Test plan

buck2 run devtools/etdump/tests:etdump_test --

@pytorch-bot

pytorch-botBot commented Mar 31, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/9762

Note: Links to docs will display an error until the docs builds have been completed.

✅ No Failures

As of commit f27d896 with merge base bc3d437 (image):
💚 Looks good so far! There are no failures yet. 💚

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Mar 31, 2025
@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

@pytorchbot label "topic: not user facing"

@keyprocedure

Copy link
Copy Markdown
ContributorAuthor

Hi @Gasoonjia, would you mind taking a look at my changes to confirm they match what you had in mind?

I noticed that the DebugEvent test (starting at line 188) follows the same pattern as LogDelegateIntermediateOutput before I added the additional ET_EXPECT_DEATH checks. Do you think similar checks should be added there as well?

@Gasoonjia

Copy link
Copy Markdown
Contributor

hi @keyprocedure thanks for your great work!
Yes please update all of them:
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L214
https://github.com/pytorch/executorch/blob/main/devtools/etdump/tests/etdump_test.cpp#L513
Thanks!

@keyprocedurekeyprocedure changed the title Refactor and add ET_EXPECT_DEATH tests to LogDelegateIntermediateOutputAdd try-before-set tests for DataSink in DebugEvent and LogDelegateIntermediateOutputApr 1, 2025
@keyprocedure
keyprocedure marked this pull request as ready for review April 1, 2025 03:20
auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

perhapes we can move this line under if (j == 0) to make more structural.

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.

same as above!

@keyprocedurekeyprocedureApr 1, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Good catch! I moved line 544 under the if (j==0) condition

Does the second comment, "same as above", refer to line 209 in the most recently changed file?
It looks like that call creates a target block where values logged via log_evalue in the following lines are appended

@GasoonjiaGasoonjia 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.

Overall LGTM! Thanks @keyprocedure for your contribution! Will stamp it after ci pass.

}

// Triggers ET_EXPECT_DEATH if log_intermediate_output_delegate has no data sink
static void expect_log_intermediate_delegate_death(

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.

Love this helper function! Please make it as a protected member function of ProfilerETDumpTest to prohibit misuse. See https://github.com/pytorch/executorch/blob/main/kernels/test/op_split_copy_test.cpp#L94 for an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Moved the helper function, I appreciate the example!

auto buffer_data_sink = BufferDataSink::create(ptr, debug_buf_size);
auto file_data_sink = FileDataSink::create(dump_file_path.c_str());

etdump_gen[i]->create_event_block("test_block");

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.

same as above!

@Gasoonjia
Gasoonjia merged commit 354c57e into pytorch:mainApr 1, 2025
@Gasoonjia

Copy link
Copy Markdown
Contributor

Thanks for your great work! Merged!

kirklandsign pushed a commit that referenced this pull request Apr 11, 2025
…termediateOutput (#9762)
### Summary
Fixes#9551 Reset ETDumpGen instances in each test iteration to avoid shared state
to correctly trigger ET_EXPECT_DEATH when no DataSink is set.
### Test plan
buck2 run devtools/etdump/tests:etdump_test --
---------
Co-authored-by: Gasoonjia <gasoonjia@meta.com>
@mergennachinmergennachin added the community: contribution PRs coming from community (excluding hardware partners) label Apr 28, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.community: contributionPRs coming from community (excluding hardware partners)topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing try-before-set tests for datasink in etdumpgen tests

4 participants

@keyprocedure@Gasoonjia@mergennachin@facebook-github-bot