Skip to content

[wasm] Wasm.Build.Tests - fixes for tests failing on CI - #70704

Merged
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app
Jun 30, 2022
Merged

[wasm] Wasm.Build.Tests - fixes for tests failing on CI#70704
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app

Conversation

@radical

@radicalradical commented Jun 13, 2022

Copy link
Copy Markdown
Member
  • Fix an issue with stdout/stderr streams not being flushed correctly on nodejs.
  • Fix an issue with completely reading stdout/stderr for xharness
  • And remove dependence on xharness' std* streams, and instead use the emitted wasm-console.log, for non-browser cases
    • note: this is still correctly testing the app output, as xharness reads that, and writes to wasm-console.log
  • And copy sdk for workload testing only when running on CI.

Fixes#70675

@ghost

Copy link
Copy Markdown

I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label.

@ghost

Copy link
Copy Markdown

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

Issue Details

… exiting

This is adding the fix from c361857 to
console template's js, which runs using node.

When the results xml is large, and we are writing the base64
representation in one line, node can exit before all the output gets
flushed out. This results in xharness getting an incomplete
STARTRESULTXML <len> <base64> ... with missing ENDRESULTXML, thus
no testResults.xml is generated.

This can be seen in the case of Microsoft.Extensions.Primitives.Tests
which has xml ~140KB, and System.Memory.Tests which has a xml ~13MB.

So, wait for the two streams to be flushed out, with a timeout of 3secs.

  • use the drain event only if stream.write('') returns false
Author:radical
Assignees:radical
Labels:

arch-wasm, area-Build-mono, test-failure

Milestone:-

@radicalradical changed the title [wasm][nodejs] Ensure that stdout/stderr have been flushed out before…[wasm][nodejs] Fix console template running with node, to always flush the output stream before exitJun 13, 2022
@pavelsavara

Copy link
Copy Markdown
Member

We will need to update this PR after #70746

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

… exiting
When the results xml is large, and we are writing the base64
representation in one line, `node` can exit before all the output gets
flushed out. This results in xharness getting an incomplete
`STARTRESULTXML <len> <base64> ... ` with missing `ENDRESULTXML`, thus
no `testResults.xml` is generated.
This can be seen in the case of `Microsoft.Extensions.Primitives.Tests`
which has xml ~140KB, and `System.Memory.Tests` which has a xml ~13MB.
So, wait for the two streams to be flushed out, with a timeout of 3secs.
- Fix to call `WaitForExit()` once `WaitForExit(int)` returns, which
ensures that all the async handlers have been run.
- Also, for non-browser xharness runs use the emitted `wasm-console.log`
as the output, so we don't depend on xharness' stdout.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radicalradical changed the title [wasm][nodejs] Fix console template running with node, to always flush the output stream before exit[wasm] Wasm.Build.Tests - test fixesJun 29, 2022
Copy sdk for testing workloads only on CI.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from lewingJune 29, 2022 07:46
@radical
radical requested review from kg, maraf and pavelsavaraJune 29, 2022 07:46
@radical
radical marked this pull request as ready for review June 29, 2022 07:47
@radical
radical requested a review from radekdoulikJune 29, 2022 18:45
@radicalradical changed the title [wasm] Wasm.Build.Tests - test fixes[wasm] Wasm.Build.Tests - fixes for tests failing on CIJun 29, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

this has a timeout right now for flushing the streams, but maybe that should be removed?

Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs Outdated
Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs
Comment threadsrc/mono/wasm/test-main.js Outdated
Comment threadsrc/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs Outdated

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

This looks fine to me other than the bits of feedback I provided, changes not mandatory

@ghostghost added the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@ghostghost removed the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from kgJune 30, 2022 04:36
kg
kg approved these changes Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

Chrome debugger test failure is intermittent, and unrelated.

@radical
radical merged commit ce6d3df into dotnet:mainJun 30, 2022
@radical
radical deleted the fix-wbt-node-app branch June 30, 2022 10:13
@ghostghost locked as resolved and limited conversation to collaborators Jul 30, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-monotest-failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[wasm] nodejs on windows doesn't flush stdout/stderr streams on exit - with the consolewasm template

3 participants

@radical@pavelsavara@kg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
[wasm] Wasm.Build.Tests - fixes for tests failing on CI by radical · Pull Request #70704 · dotnet/runtime · GitHub
Skip to content

[wasm] Wasm.Build.Tests - fixes for tests failing on CI - #70704

Merged
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app
Jun 30, 2022
Merged

[wasm] Wasm.Build.Tests - fixes for tests failing on CI#70704
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app

Conversation

@radical

@radicalradical commented Jun 13, 2022

Copy link
Copy Markdown
Member
  • Fix an issue with stdout/stderr streams not being flushed correctly on nodejs.
  • Fix an issue with completely reading stdout/stderr for xharness
  • And remove dependence on xharness' std* streams, and instead use the emitted wasm-console.log, for non-browser cases
    • note: this is still correctly testing the app output, as xharness reads that, and writes to wasm-console.log
  • And copy sdk for workload testing only when running on CI.

Fixes#70675

@ghost

Copy link
Copy Markdown

I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label.

@ghost

Copy link
Copy Markdown

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

Issue Details

… exiting

This is adding the fix from c361857 to
console template's js, which runs using node.

When the results xml is large, and we are writing the base64
representation in one line, node can exit before all the output gets
flushed out. This results in xharness getting an incomplete
STARTRESULTXML <len> <base64> ... with missing ENDRESULTXML, thus
no testResults.xml is generated.

This can be seen in the case of Microsoft.Extensions.Primitives.Tests
which has xml ~140KB, and System.Memory.Tests which has a xml ~13MB.

So, wait for the two streams to be flushed out, with a timeout of 3secs.

  • use the drain event only if stream.write('') returns false
Author:radical
Assignees:radical
Labels:

arch-wasm, area-Build-mono, test-failure

Milestone:-

@radicalradical changed the title [wasm][nodejs] Ensure that stdout/stderr have been flushed out before…[wasm][nodejs] Fix console template running with node, to always flush the output stream before exitJun 13, 2022
@pavelsavara

Copy link
Copy Markdown
Member

We will need to update this PR after #70746

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

… exiting
When the results xml is large, and we are writing the base64
representation in one line, `node` can exit before all the output gets
flushed out. This results in xharness getting an incomplete
`STARTRESULTXML <len> <base64> ... ` with missing `ENDRESULTXML`, thus
no `testResults.xml` is generated.
This can be seen in the case of `Microsoft.Extensions.Primitives.Tests`
which has xml ~140KB, and `System.Memory.Tests` which has a xml ~13MB.
So, wait for the two streams to be flushed out, with a timeout of 3secs.
- Fix to call `WaitForExit()` once `WaitForExit(int)` returns, which
ensures that all the async handlers have been run.
- Also, for non-browser xharness runs use the emitted `wasm-console.log`
as the output, so we don't depend on xharness' stdout.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radicalradical changed the title [wasm][nodejs] Fix console template running with node, to always flush the output stream before exit[wasm] Wasm.Build.Tests - test fixesJun 29, 2022
Copy sdk for testing workloads only on CI.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from lewingJune 29, 2022 07:46
@radical
radical requested review from kg, maraf and pavelsavaraJune 29, 2022 07:46
@radical
radical marked this pull request as ready for review June 29, 2022 07:47
@radical
radical requested a review from radekdoulikJune 29, 2022 18:45
@radicalradical changed the title [wasm] Wasm.Build.Tests - test fixes[wasm] Wasm.Build.Tests - fixes for tests failing on CIJun 29, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

this has a timeout right now for flushing the streams, but maybe that should be removed?

Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs Outdated
Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs
Comment threadsrc/mono/wasm/test-main.js Outdated
Comment threadsrc/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs Outdated

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

This looks fine to me other than the bits of feedback I provided, changes not mandatory

@ghostghost added the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@ghostghost removed the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from kgJune 30, 2022 04:36
kg
kg approved these changes Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

Chrome debugger test failure is intermittent, and unrelated.

@radical
radical merged commit ce6d3df into dotnet:mainJun 30, 2022
@radical
radical deleted the fix-wbt-node-app branch June 30, 2022 10:13
@ghostghost locked as resolved and limited conversation to collaborators Jul 30, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-monotest-failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[wasm] nodejs on windows doesn't flush stdout/stderr streams on exit - with the consolewasm template

3 participants

@radical@pavelsavara@kg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [wasm] Wasm.Build.Tests - fixes for tests failing on CI by radical · Pull Request #70704 · dotnet/runtime · GitHub
Skip to content

[wasm] Wasm.Build.Tests - fixes for tests failing on CI - #70704

Merged
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app
Jun 30, 2022
Merged

[wasm] Wasm.Build.Tests - fixes for tests failing on CI#70704
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app

Conversation

@radical

@radicalradical commented Jun 13, 2022

Copy link
Copy Markdown
Member
  • Fix an issue with stdout/stderr streams not being flushed correctly on nodejs.
  • Fix an issue with completely reading stdout/stderr for xharness
  • And remove dependence on xharness' std* streams, and instead use the emitted wasm-console.log, for non-browser cases
    • note: this is still correctly testing the app output, as xharness reads that, and writes to wasm-console.log
  • And copy sdk for workload testing only when running on CI.

Fixes#70675

@ghost

Copy link
Copy Markdown

I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label.

@ghost

Copy link
Copy Markdown

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

Issue Details

… exiting

This is adding the fix from c361857 to
console template's js, which runs using node.

When the results xml is large, and we are writing the base64
representation in one line, node can exit before all the output gets
flushed out. This results in xharness getting an incomplete
STARTRESULTXML <len> <base64> ... with missing ENDRESULTXML, thus
no testResults.xml is generated.

This can be seen in the case of Microsoft.Extensions.Primitives.Tests
which has xml ~140KB, and System.Memory.Tests which has a xml ~13MB.

So, wait for the two streams to be flushed out, with a timeout of 3secs.

  • use the drain event only if stream.write('') returns false
Author:radical
Assignees:radical
Labels:

arch-wasm, area-Build-mono, test-failure

Milestone:-

@radicalradical changed the title [wasm][nodejs] Ensure that stdout/stderr have been flushed out before…[wasm][nodejs] Fix console template running with node, to always flush the output stream before exitJun 13, 2022
@pavelsavara

Copy link
Copy Markdown
Member

We will need to update this PR after #70746

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

… exiting
When the results xml is large, and we are writing the base64
representation in one line, `node` can exit before all the output gets
flushed out. This results in xharness getting an incomplete
`STARTRESULTXML <len> <base64> ... ` with missing `ENDRESULTXML`, thus
no `testResults.xml` is generated.
This can be seen in the case of `Microsoft.Extensions.Primitives.Tests`
which has xml ~140KB, and `System.Memory.Tests` which has a xml ~13MB.
So, wait for the two streams to be flushed out, with a timeout of 3secs.
- Fix to call `WaitForExit()` once `WaitForExit(int)` returns, which
ensures that all the async handlers have been run.
- Also, for non-browser xharness runs use the emitted `wasm-console.log`
as the output, so we don't depend on xharness' stdout.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radicalradical changed the title [wasm][nodejs] Fix console template running with node, to always flush the output stream before exit[wasm] Wasm.Build.Tests - test fixesJun 29, 2022
Copy sdk for testing workloads only on CI.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from lewingJune 29, 2022 07:46
@radical
radical requested review from kg, maraf and pavelsavaraJune 29, 2022 07:46
@radical
radical marked this pull request as ready for review June 29, 2022 07:47
@radical
radical requested a review from radekdoulikJune 29, 2022 18:45
@radicalradical changed the title [wasm] Wasm.Build.Tests - test fixes[wasm] Wasm.Build.Tests - fixes for tests failing on CIJun 29, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

this has a timeout right now for flushing the streams, but maybe that should be removed?

Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs Outdated
Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs
Comment threadsrc/mono/wasm/test-main.js Outdated
Comment threadsrc/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs Outdated

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

This looks fine to me other than the bits of feedback I provided, changes not mandatory

@ghostghost added the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@ghostghost removed the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from kgJune 30, 2022 04:36
kg
kg approved these changes Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

Chrome debugger test failure is intermittent, and unrelated.

@radical
radical merged commit ce6d3df into dotnet:mainJun 30, 2022
@radical
radical deleted the fix-wbt-node-app branch June 30, 2022 10:13
@ghostghost locked as resolved and limited conversation to collaborators Jul 30, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-monotest-failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[wasm] nodejs on windows doesn't flush stdout/stderr streams on exit - with the consolewasm template

3 participants

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

[wasm] Wasm.Build.Tests - fixes for tests failing on CI - #70704

Merged
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app
Jun 30, 2022
Merged

[wasm] Wasm.Build.Tests - fixes for tests failing on CI#70704
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app

Conversation

@radical

@radicalradical commented Jun 13, 2022

Copy link
Copy Markdown
Member
  • Fix an issue with stdout/stderr streams not being flushed correctly on nodejs.
  • Fix an issue with completely reading stdout/stderr for xharness
  • And remove dependence on xharness' std* streams, and instead use the emitted wasm-console.log, for non-browser cases
    • note: this is still correctly testing the app output, as xharness reads that, and writes to wasm-console.log
  • And copy sdk for workload testing only when running on CI.

Fixes#70675

@ghost

Copy link
Copy Markdown

I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label.

@ghost

Copy link
Copy Markdown

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

Issue Details

… exiting

This is adding the fix from c361857 to
console template's js, which runs using node.

When the results xml is large, and we are writing the base64
representation in one line, node can exit before all the output gets
flushed out. This results in xharness getting an incomplete
STARTRESULTXML <len> <base64> ... with missing ENDRESULTXML, thus
no testResults.xml is generated.

This can be seen in the case of Microsoft.Extensions.Primitives.Tests
which has xml ~140KB, and System.Memory.Tests which has a xml ~13MB.

So, wait for the two streams to be flushed out, with a timeout of 3secs.

  • use the drain event only if stream.write('') returns false
Author:radical
Assignees:radical
Labels:

arch-wasm, area-Build-mono, test-failure

Milestone:-

@radicalradical changed the title [wasm][nodejs] Ensure that stdout/stderr have been flushed out before…[wasm][nodejs] Fix console template running with node, to always flush the output stream before exitJun 13, 2022
@pavelsavara

Copy link
Copy Markdown
Member

We will need to update this PR after #70746

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

… exiting
When the results xml is large, and we are writing the base64
representation in one line, `node` can exit before all the output gets
flushed out. This results in xharness getting an incomplete
`STARTRESULTXML <len> <base64> ... ` with missing `ENDRESULTXML`, thus
no `testResults.xml` is generated.
This can be seen in the case of `Microsoft.Extensions.Primitives.Tests`
which has xml ~140KB, and `System.Memory.Tests` which has a xml ~13MB.
So, wait for the two streams to be flushed out, with a timeout of 3secs.
- Fix to call `WaitForExit()` once `WaitForExit(int)` returns, which
ensures that all the async handlers have been run.
- Also, for non-browser xharness runs use the emitted `wasm-console.log`
as the output, so we don't depend on xharness' stdout.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radicalradical changed the title [wasm][nodejs] Fix console template running with node, to always flush the output stream before exit[wasm] Wasm.Build.Tests - test fixesJun 29, 2022
Copy sdk for testing workloads only on CI.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from lewingJune 29, 2022 07:46
@radical
radical requested review from kg, maraf and pavelsavaraJune 29, 2022 07:46
@radical
radical marked this pull request as ready for review June 29, 2022 07:47
@radical
radical requested a review from radekdoulikJune 29, 2022 18:45
@radicalradical changed the title [wasm] Wasm.Build.Tests - test fixes[wasm] Wasm.Build.Tests - fixes for tests failing on CIJun 29, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

this has a timeout right now for flushing the streams, but maybe that should be removed?

Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs Outdated
Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs
Comment threadsrc/mono/wasm/test-main.js Outdated
Comment threadsrc/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs Outdated

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

This looks fine to me other than the bits of feedback I provided, changes not mandatory

@ghostghost added the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@ghostghost removed the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from kgJune 30, 2022 04:36
kg
kg approved these changes Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

Chrome debugger test failure is intermittent, and unrelated.

@radical
radical merged commit ce6d3df into dotnet:mainJun 30, 2022
@radical
radical deleted the fix-wbt-node-app branch June 30, 2022 10:13
@ghostghost locked as resolved and limited conversation to collaborators Jul 30, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-monotest-failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[wasm] nodejs on windows doesn't flush stdout/stderr streams on exit - with the consolewasm template

3 participants

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

[wasm] Wasm.Build.Tests - fixes for tests failing on CI - #70704

Merged
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app
Jun 30, 2022
Merged

[wasm] Wasm.Build.Tests - fixes for tests failing on CI#70704
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app

Conversation

@radical

@radicalradical commented Jun 13, 2022

Copy link
Copy Markdown
Member
  • Fix an issue with stdout/stderr streams not being flushed correctly on nodejs.
  • Fix an issue with completely reading stdout/stderr for xharness
  • And remove dependence on xharness' std* streams, and instead use the emitted wasm-console.log, for non-browser cases
    • note: this is still correctly testing the app output, as xharness reads that, and writes to wasm-console.log
  • And copy sdk for workload testing only when running on CI.

Fixes#70675

@ghost

Copy link
Copy Markdown

I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label.

@ghost

Copy link
Copy Markdown

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

Issue Details

… exiting

This is adding the fix from c361857 to
console template's js, which runs using node.

When the results xml is large, and we are writing the base64
representation in one line, node can exit before all the output gets
flushed out. This results in xharness getting an incomplete
STARTRESULTXML <len> <base64> ... with missing ENDRESULTXML, thus
no testResults.xml is generated.

This can be seen in the case of Microsoft.Extensions.Primitives.Tests
which has xml ~140KB, and System.Memory.Tests which has a xml ~13MB.

So, wait for the two streams to be flushed out, with a timeout of 3secs.

  • use the drain event only if stream.write('') returns false
Author:radical
Assignees:radical
Labels:

arch-wasm, area-Build-mono, test-failure

Milestone:-

@radicalradical changed the title [wasm][nodejs] Ensure that stdout/stderr have been flushed out before…[wasm][nodejs] Fix console template running with node, to always flush the output stream before exitJun 13, 2022
@pavelsavara

Copy link
Copy Markdown
Member

We will need to update this PR after #70746

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

… exiting
When the results xml is large, and we are writing the base64
representation in one line, `node` can exit before all the output gets
flushed out. This results in xharness getting an incomplete
`STARTRESULTXML <len> <base64> ... ` with missing `ENDRESULTXML`, thus
no `testResults.xml` is generated.
This can be seen in the case of `Microsoft.Extensions.Primitives.Tests`
which has xml ~140KB, and `System.Memory.Tests` which has a xml ~13MB.
So, wait for the two streams to be flushed out, with a timeout of 3secs.
- Fix to call `WaitForExit()` once `WaitForExit(int)` returns, which
ensures that all the async handlers have been run.
- Also, for non-browser xharness runs use the emitted `wasm-console.log`
as the output, so we don't depend on xharness' stdout.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radicalradical changed the title [wasm][nodejs] Fix console template running with node, to always flush the output stream before exit[wasm] Wasm.Build.Tests - test fixesJun 29, 2022
Copy sdk for testing workloads only on CI.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from lewingJune 29, 2022 07:46
@radical
radical requested review from kg, maraf and pavelsavaraJune 29, 2022 07:46
@radical
radical marked this pull request as ready for review June 29, 2022 07:47
@radical
radical requested a review from radekdoulikJune 29, 2022 18:45
@radicalradical changed the title [wasm] Wasm.Build.Tests - test fixes[wasm] Wasm.Build.Tests - fixes for tests failing on CIJun 29, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

this has a timeout right now for flushing the streams, but maybe that should be removed?

Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs Outdated
Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs
Comment threadsrc/mono/wasm/test-main.js Outdated
Comment threadsrc/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs Outdated

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

This looks fine to me other than the bits of feedback I provided, changes not mandatory

@ghostghost added the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@ghostghost removed the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from kgJune 30, 2022 04:36
kg
kg approved these changes Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

Chrome debugger test failure is intermittent, and unrelated.

@radical
radical merged commit ce6d3df into dotnet:mainJun 30, 2022
@radical
radical deleted the fix-wbt-node-app branch June 30, 2022 10:13
@ghostghost locked as resolved and limited conversation to collaborators Jul 30, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-monotest-failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[wasm] nodejs on windows doesn't flush stdout/stderr streams on exit - with the consolewasm template

3 participants

@radical@pavelsavara@kg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [wasm] Wasm.Build.Tests - fixes for tests failing on CI by radical · Pull Request #70704 · dotnet/runtime · GitHub
Skip to content

[wasm] Wasm.Build.Tests - fixes for tests failing on CI - #70704

Merged
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app
Jun 30, 2022
Merged

[wasm] Wasm.Build.Tests - fixes for tests failing on CI#70704
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app

Conversation

@radical

@radicalradical commented Jun 13, 2022

Copy link
Copy Markdown
Member
  • Fix an issue with stdout/stderr streams not being flushed correctly on nodejs.
  • Fix an issue with completely reading stdout/stderr for xharness
  • And remove dependence on xharness' std* streams, and instead use the emitted wasm-console.log, for non-browser cases
    • note: this is still correctly testing the app output, as xharness reads that, and writes to wasm-console.log
  • And copy sdk for workload testing only when running on CI.

Fixes#70675

@ghost

Copy link
Copy Markdown

I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label.

@ghost

Copy link
Copy Markdown

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

Issue Details

… exiting

This is adding the fix from c361857 to
console template's js, which runs using node.

When the results xml is large, and we are writing the base64
representation in one line, node can exit before all the output gets
flushed out. This results in xharness getting an incomplete
STARTRESULTXML <len> <base64> ... with missing ENDRESULTXML, thus
no testResults.xml is generated.

This can be seen in the case of Microsoft.Extensions.Primitives.Tests
which has xml ~140KB, and System.Memory.Tests which has a xml ~13MB.

So, wait for the two streams to be flushed out, with a timeout of 3secs.

  • use the drain event only if stream.write('') returns false
Author:radical
Assignees:radical
Labels:

arch-wasm, area-Build-mono, test-failure

Milestone:-

@radicalradical changed the title [wasm][nodejs] Ensure that stdout/stderr have been flushed out before…[wasm][nodejs] Fix console template running with node, to always flush the output stream before exitJun 13, 2022
@pavelsavara

Copy link
Copy Markdown
Member

We will need to update this PR after #70746

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

… exiting
When the results xml is large, and we are writing the base64
representation in one line, `node` can exit before all the output gets
flushed out. This results in xharness getting an incomplete
`STARTRESULTXML <len> <base64> ... ` with missing `ENDRESULTXML`, thus
no `testResults.xml` is generated.
This can be seen in the case of `Microsoft.Extensions.Primitives.Tests`
which has xml ~140KB, and `System.Memory.Tests` which has a xml ~13MB.
So, wait for the two streams to be flushed out, with a timeout of 3secs.
- Fix to call `WaitForExit()` once `WaitForExit(int)` returns, which
ensures that all the async handlers have been run.
- Also, for non-browser xharness runs use the emitted `wasm-console.log`
as the output, so we don't depend on xharness' stdout.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radicalradical changed the title [wasm][nodejs] Fix console template running with node, to always flush the output stream before exit[wasm] Wasm.Build.Tests - test fixesJun 29, 2022
Copy sdk for testing workloads only on CI.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from lewingJune 29, 2022 07:46
@radical
radical requested review from kg, maraf and pavelsavaraJune 29, 2022 07:46
@radical
radical marked this pull request as ready for review June 29, 2022 07:47
@radical
radical requested a review from radekdoulikJune 29, 2022 18:45
@radicalradical changed the title [wasm] Wasm.Build.Tests - test fixes[wasm] Wasm.Build.Tests - fixes for tests failing on CIJun 29, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

this has a timeout right now for flushing the streams, but maybe that should be removed?

Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs Outdated
Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs
Comment threadsrc/mono/wasm/test-main.js Outdated
Comment threadsrc/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs Outdated

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

This looks fine to me other than the bits of feedback I provided, changes not mandatory

@ghostghost added the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@ghostghost removed the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from kgJune 30, 2022 04:36
kg
kg approved these changes Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

Chrome debugger test failure is intermittent, and unrelated.

@radical
radical merged commit ce6d3df into dotnet:mainJun 30, 2022
@radical
radical deleted the fix-wbt-node-app branch June 30, 2022 10:13
@ghostghost locked as resolved and limited conversation to collaborators Jul 30, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-monotest-failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[wasm] nodejs on windows doesn't flush stdout/stderr streams on exit - with the consolewasm template

3 participants

@radical@pavelsavara@kg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [wasm] Wasm.Build.Tests - fixes for tests failing on CI by radical · Pull Request #70704 · dotnet/runtime · GitHub
Skip to content

[wasm] Wasm.Build.Tests - fixes for tests failing on CI - #70704

Merged
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app
Jun 30, 2022
Merged

[wasm] Wasm.Build.Tests - fixes for tests failing on CI#70704
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app

Conversation

@radical

@radicalradical commented Jun 13, 2022

Copy link
Copy Markdown
Member
  • Fix an issue with stdout/stderr streams not being flushed correctly on nodejs.
  • Fix an issue with completely reading stdout/stderr for xharness
  • And remove dependence on xharness' std* streams, and instead use the emitted wasm-console.log, for non-browser cases
    • note: this is still correctly testing the app output, as xharness reads that, and writes to wasm-console.log
  • And copy sdk for workload testing only when running on CI.

Fixes#70675

@ghost

Copy link
Copy Markdown

I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label.

@ghost

Copy link
Copy Markdown

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

Issue Details

… exiting

This is adding the fix from c361857 to
console template's js, which runs using node.

When the results xml is large, and we are writing the base64
representation in one line, node can exit before all the output gets
flushed out. This results in xharness getting an incomplete
STARTRESULTXML <len> <base64> ... with missing ENDRESULTXML, thus
no testResults.xml is generated.

This can be seen in the case of Microsoft.Extensions.Primitives.Tests
which has xml ~140KB, and System.Memory.Tests which has a xml ~13MB.

So, wait for the two streams to be flushed out, with a timeout of 3secs.

  • use the drain event only if stream.write('') returns false
Author:radical
Assignees:radical
Labels:

arch-wasm, area-Build-mono, test-failure

Milestone:-

@radicalradical changed the title [wasm][nodejs] Ensure that stdout/stderr have been flushed out before…[wasm][nodejs] Fix console template running with node, to always flush the output stream before exitJun 13, 2022
@pavelsavara

Copy link
Copy Markdown
Member

We will need to update this PR after #70746

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

… exiting
When the results xml is large, and we are writing the base64
representation in one line, `node` can exit before all the output gets
flushed out. This results in xharness getting an incomplete
`STARTRESULTXML <len> <base64> ... ` with missing `ENDRESULTXML`, thus
no `testResults.xml` is generated.
This can be seen in the case of `Microsoft.Extensions.Primitives.Tests`
which has xml ~140KB, and `System.Memory.Tests` which has a xml ~13MB.
So, wait for the two streams to be flushed out, with a timeout of 3secs.
- Fix to call `WaitForExit()` once `WaitForExit(int)` returns, which
ensures that all the async handlers have been run.
- Also, for non-browser xharness runs use the emitted `wasm-console.log`
as the output, so we don't depend on xharness' stdout.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radicalradical changed the title [wasm][nodejs] Fix console template running with node, to always flush the output stream before exit[wasm] Wasm.Build.Tests - test fixesJun 29, 2022
Copy sdk for testing workloads only on CI.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from lewingJune 29, 2022 07:46
@radical
radical requested review from kg, maraf and pavelsavaraJune 29, 2022 07:46
@radical
radical marked this pull request as ready for review June 29, 2022 07:47
@radical
radical requested a review from radekdoulikJune 29, 2022 18:45
@radicalradical changed the title [wasm] Wasm.Build.Tests - test fixes[wasm] Wasm.Build.Tests - fixes for tests failing on CIJun 29, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

this has a timeout right now for flushing the streams, but maybe that should be removed?

Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs Outdated
Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs
Comment threadsrc/mono/wasm/test-main.js Outdated
Comment threadsrc/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs Outdated

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

This looks fine to me other than the bits of feedback I provided, changes not mandatory

@ghostghost added the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@ghostghost removed the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from kgJune 30, 2022 04:36
kg
kg approved these changes Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

Chrome debugger test failure is intermittent, and unrelated.

@radical
radical merged commit ce6d3df into dotnet:mainJun 30, 2022
@radical
radical deleted the fix-wbt-node-app branch June 30, 2022 10:13
@ghostghost locked as resolved and limited conversation to collaborators Jul 30, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-monotest-failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[wasm] nodejs on windows doesn't flush stdout/stderr streams on exit - with the consolewasm template

3 participants

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

[wasm] Wasm.Build.Tests - fixes for tests failing on CI - #70704

Merged
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app
Jun 30, 2022
Merged

[wasm] Wasm.Build.Tests - fixes for tests failing on CI#70704
radical merged 7 commits into
dotnet:mainfrom
radical:fix-wbt-node-app

Conversation

@radical

@radicalradical commented Jun 13, 2022

Copy link
Copy Markdown
Member
  • Fix an issue with stdout/stderr streams not being flushed correctly on nodejs.
  • Fix an issue with completely reading stdout/stderr for xharness
  • And remove dependence on xharness' std* streams, and instead use the emitted wasm-console.log, for non-browser cases
    • note: this is still correctly testing the app output, as xharness reads that, and writes to wasm-console.log
  • And copy sdk for workload testing only when running on CI.

Fixes#70675

@ghost

Copy link
Copy Markdown

I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label.

@ghost

Copy link
Copy Markdown

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

Issue Details

… exiting

This is adding the fix from c361857 to
console template's js, which runs using node.

When the results xml is large, and we are writing the base64
representation in one line, node can exit before all the output gets
flushed out. This results in xharness getting an incomplete
STARTRESULTXML <len> <base64> ... with missing ENDRESULTXML, thus
no testResults.xml is generated.

This can be seen in the case of Microsoft.Extensions.Primitives.Tests
which has xml ~140KB, and System.Memory.Tests which has a xml ~13MB.

So, wait for the two streams to be flushed out, with a timeout of 3secs.

  • use the drain event only if stream.write('') returns false
Author:radical
Assignees:radical
Labels:

arch-wasm, area-Build-mono, test-failure

Milestone:-

@radicalradical changed the title [wasm][nodejs] Ensure that stdout/stderr have been flushed out before…[wasm][nodejs] Fix console template running with node, to always flush the output stream before exitJun 13, 2022
@pavelsavara

Copy link
Copy Markdown
Member

We will need to update this PR after #70746

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

… exiting
When the results xml is large, and we are writing the base64
representation in one line, `node` can exit before all the output gets
flushed out. This results in xharness getting an incomplete
`STARTRESULTXML <len> <base64> ... ` with missing `ENDRESULTXML`, thus
no `testResults.xml` is generated.
This can be seen in the case of `Microsoft.Extensions.Primitives.Tests`
which has xml ~140KB, and `System.Memory.Tests` which has a xml ~13MB.
So, wait for the two streams to be flushed out, with a timeout of 3secs.
- Fix to call `WaitForExit()` once `WaitForExit(int)` returns, which
ensures that all the async handlers have been run.
- Also, for non-browser xharness runs use the emitted `wasm-console.log`
as the output, so we don't depend on xharness' stdout.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radicalradical changed the title [wasm][nodejs] Fix console template running with node, to always flush the output stream before exit[wasm] Wasm.Build.Tests - test fixesJun 29, 2022
Copy sdk for testing workloads only on CI.
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from lewingJune 29, 2022 07:46
@radical
radical requested review from kg, maraf and pavelsavaraJune 29, 2022 07:46
@radical
radical marked this pull request as ready for review June 29, 2022 07:47
@radical
radical requested a review from radekdoulikJune 29, 2022 18:45
@radicalradical changed the title [wasm] Wasm.Build.Tests - test fixes[wasm] Wasm.Build.Tests - fixes for tests failing on CIJun 29, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

this has a timeout right now for flushing the streams, but maybe that should be removed?

Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs Outdated
Comment threadsrc/mono/wasm/templates/templates/console/app-support.mjs
Comment threadsrc/mono/wasm/test-main.js Outdated
Comment threadsrc/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs Outdated

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

This looks fine to me other than the bits of feedback I provided, changes not mandatory

@ghostghost added the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@ghostghost removed the needs-author-action An issue or pull request that requires more info or actions from the author. label Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical
radical requested a review from kgJune 30, 2022 04:36
kg
kg approved these changes Jun 30, 2022
@radical

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@radical

Copy link
Copy Markdown
MemberAuthor

Chrome debugger test failure is intermittent, and unrelated.

@radical
radical merged commit ce6d3df into dotnet:mainJun 30, 2022
@radical
radical deleted the fix-wbt-node-app branch June 30, 2022 10:13
@ghostghost locked as resolved and limited conversation to collaborators Jul 30, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-monotest-failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[wasm] nodejs on windows doesn't flush stdout/stderr streams on exit - with the consolewasm template

3 participants

@radical@pavelsavara@kg