Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
only on browser, make less noise
  • Loading branch information
pavelsavara committed Dec 9, 2021
commit b71b244d91de1e27cba7d71274c4cbbf9bfdde0b
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
<TargetFrameworks>$(NetCoreAppCurrent)-Browser</TargetFrameworks>
<TestRuntime>true</TestRuntime>
<WasmXHarnessArgs>$(WasmXHarnessArgs) --engine-arg=--expose-gc --web-server-use-cop</WasmXHarnessArgs>
<Scenario>WasmTestOnBrowser</Scenario>
</PropertyGroup>
<ItemGroup>
<Compile Include="System\Runtime\InteropServices\JavaScript\JavaScriptTests.cs" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@
using System.Threading;
using System.Threading.Tasks;
using Xunit;
using Xunit.Abstractions;

namespace System.Runtime.InteropServices.JavaScript.Tests
{
[Trait("Category", "Pavel")]
// V8's implementation of setTimer ignores delay parameter and always run immediately. So it could not be used to test this.
[ConditionalClass(typeof(PlatformDetection), nameof(PlatformDetection.IsBrowserDomSupported))]
public class TimerTests : IAsyncLifetime
{
static JSObject _timersHelper;
static Function _installWrapper;
static Function _getRegisterCount;
static Function _getHitCount;
static Function _cleanupWrapper;
static Function _log;
// static Function _log;

public static IEnumerable<object[]> TestCases()
{
Expand All @@ -36,18 +36,18 @@ public async Task TestTimers(int[] timeouts, int? expectedSetCounter, int? expec
Timer[] timers = new Timer[timeouts.Length];
try
{
_log.Call(null, $"Waiting for runtime to settle");
// _log.Call(null, $"Waiting for runtime to settle");
await Task.Delay(2000);
_installWrapper.Call();
_log.Call(null, $"Ready!");
// _log.Call(null, $"Ready!");

for (int i = 0; i < timeouts.Length; i++)
{
int index = i;
_log.Call(null, $"Registering {index} delay {timeouts[i]}");
// _log.Call(null, $"Registering {index} delay {timeouts[i]}");
timers[i] = new Timer((_) =>
{
_log.Call(null, $"In timer{index}");
// _log.Call(null, $"In timer{index}");
wasCalled++;
}, null, timeouts[i], 0);
}
Expand Down Expand Up @@ -83,10 +83,10 @@ public async Task TestTimers(int[] timeouts, int? expectedSetCounter, int? expec

private async Task WaitForCleanup()
{
_log.Call(null, "wait for cleanup begin");
// _log.Call(null, "wait for cleanup begin");
await Task.Delay(1200);
_cleanupWrapper.Call();
_log.Call(null, "wait for cleanup end");
// _log.Call(null, "wait for cleanup end");
}

public async Task InitializeAsync()
Expand All @@ -106,8 +106,8 @@ public async Task InitializeAsync()
_getRegisterCount = (Function)_timersHelper.GetObjectProperty("getRegisterCount");
_getHitCount = (Function)_timersHelper.GetObjectProperty("getHitCount");
_cleanupWrapper = (Function)_timersHelper.GetObjectProperty("cleanup");
var console = (JSObject)Runtime.GetGlobalObject("console");
_log = (Function)console.GetObjectProperty("log");
// var console = (JSObject)Runtime.GetGlobalObject("console");
// _log = (Function)console.GetObjectProperty("log");
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,40 +3,40 @@ class TimersHelper {
const measuredCallbackName = "mono_wasm_set_timeout_exec";
globalThis.registerCount = 0;
globalThis.hitCount = 0;
console.log("install")
// console.log("install")
if (!globalThis.originalSetTimeout) {
globalThis.originalSetTimeout = globalThis.setTimeout;
}
globalThis.setTimeout = (cb, time) => {
var start = Date.now().valueOf();
if (cb.name === measuredCallbackName) {
globalThis.registerCount++;
console.log(`registerCount: ${globalThis.registerCount} now:${start} delay:${time}`)
// console.log(`registerCount: ${globalThis.registerCount} now:${start} delay:${time}`)
}
return globalThis.originalSetTimeout(() => {
if (cb.name === measuredCallbackName) {
var hit = Date.now().valueOf();
globalThis.hitCount++;
var delta = hit - start;
console.log(`hitCount: ${globalThis.hitCount} now:${hit} delay:${time} delta:${delta}`)
// console.log(`hitCount: ${globalThis.hitCount} now:${hit} delay:${time} delta:${delta}`)
}
cb();
}, time);
};
}

getRegisterCount() {
console.log(`registerCount: ${globalThis.registerCount} `)
// console.log(`registerCount: ${globalThis.registerCount} `)
return globalThis.registerCount;
}

getHitCount() {
console.log(`hitCount: ${globalThis.hitCount} `)
// console.log(`hitCount: ${globalThis.hitCount} `)
return globalThis.hitCount;
}

cleanup() {
console.log(`cleanup registerCount: ${globalThis.registerCount} hitCount: ${globalThis.hitCount} `)
// console.log(`cleanup registerCount: ${globalThis.registerCount} hitCount: ${globalThis.hitCount} `)
globalThis.setTimeout = globalThis.originalSetTimeout;
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/mono/wasm/runtime/rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ const terserConfig = {
},
mangle: {
// because of stack walk at src/mono/wasm/debugger/BrowserDebugProxy/MonoProxy.cs
keep_fnames: /(mono_wasm_runtime_ready|mono_wasm_fire_debugger_agent_message)/,
// and unit test at src\libraries\System.Private.Runtime.InteropServices.JavaScript\tests\timers.js
keep_fnames: /(mono_wasm_runtime_ready|mono_wasm_fire_debugger_agent_message|mono_wasm_set_timeout_exec)/,
},
};
const plugins = isDebug ? [writeOnChangePlugin()] : [terser(terserConfig), writeOnChangePlugin()];
Expand Down