Hi. I'm working on a fairly large Typescript project (~1000 files, ~half being test files) with ~5000 tests and I'm trying to get Stryker running. When I try to add too many files to be mutated the number of mutants gets to a point that the process seems to just sit there grinding away on nothing for hours. The last output I see on screen is "40055 Mutant(s) generated". The Node process doesn't seem to be stuck as it's using up CPU cycles and memory usage changes. I just never get to the next step where it fires up the TestRunners and starts the real work. Do I just have to wait it out?
Even if I try to lower the number of files to be mutated down so that ~20000 mutants are generated it still hangs... the largest number of mutants generated I've seen run is around 13000. The project is private so I can't share much, but hopefully there's a solution. I fully expect this to take a long time. It will be run on a CI instance over the weekend once I can get it working.
Any help would be appreciated.
I've tried with and without the transpiler and I don't see a difference. Aside from being able to do coverageAnalysis, but that has other issues for me.
module.exports = function (config)
{
config.set({
mutator: "typescript",
packageManager: "npm",
reporters: ["html", "clear-text", 'progress'],
testRunner: "mocha",
//transpilers: ["typescript"],
testFramework: "mocha",
coverageAnalysis: "off",
tsconfigFile: "tsconfig.json",
mutate: [
"ts/**/!(*.tests).ts",
],
files: ["ts/**/*.ts", "lib/**/*.js"],
mochaOptions: {
require: [
"ts-node/register",
"reflect-metadata",
],
timeout: 0,
files: ["ts/**/*.tests.ts"]
}
});
};
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
| software | version(s)
| ---------------- | -------
| node | 8.10.0
| npm | 5.6.0
| Operating System | windows 10 (CI on windows 2012 R2)
16:31:53 (31620) INFO ConfigReader Using stryker.conf.js in the current working directory.
16:31:53 (31620) DEBUG PluginLoader Loading stryker-* from C:\...\node_modules
16:31:53 (31620) DEBUG Stryker Using config: {"logLevel":"info","fileLogLevel":"trace","timeoutMS":5000,"timeoutFactor":1.5,"plugins":["stryker-*"],"port":9234,"reporter":[],"reporters":["html","clear-text","progress"],"coverageAnalysis":"off","testRunner":"mocha","mutator":"typescript","transpilers":[],"maxConcurrentTestRunners":6,"symlinkNodeModules":true,"thresholds":{"break":null,"high":80,"low":60},"allowConsoleColors":true,"packageManager":"npm","testFramework":"mocha","tsconfigFile":"tsconfig.json","mutate":["ts/**/!(*.tests).ts"],"files":["ts/**/*.ts","lib/**/*.js"],"mochaOptions":{"require":["ts-node/register","reflect-metadata"],"timeout":0,"files":["ts/**/*.tests.ts"]},"configFile":"stryker.conf.js","tsconfig":{"options":{"removeComments":true,"sourceMap":true,"target":1,"noImplicitAny":true,"module":1,"declaration":true,"noEmitOnError":true,"preserveConstEnums":true,"typeRoots":["C:/.../node_modules/@types","C:/.../node_modules"],"emitDecoratorMetadata":true,"types":["reflect-metadata","jquery","jqueryui","datejs"],"experimentalDecorators":true,"lib":["lib.es2017.d.ts","lib.dom.d.ts"],"configFilePath":"C:/.../tsconfig.json","project":"C:/...","allowUnreachableCode":true,"noUnusedLocals":false,"noUnusedParameters":false},"fileNames":[... removed listed files ...],"typeAcquisition":{"enable":false,"include":[],"exclude":[]},"raw":{"compilerOptions":{"removeComments":true,"sourceMap":true,"target":"es5","noImplicitAny":true,"module":"commonjs","declaration":true,"noEmitOnError":true,"preserveConstEnums":true,"typeRoots":["node_modules/@types","node_modules"],"emitDecoratorMetadata":true,"types":["reflect-metadata","jquery","jqueryui","datejs"],"experimentalDecorators":true,"lib":["es2017","dom"]},"include":["./demo","./resiliency","./ts"],"exclude":["./ts/typings","node_modules"],"compileOnSave":false},"errors":[],"wildcardDirectories":{"C:/.../ts":1},"compileOnSave":false,"configFileSpecs":{"includeSpecs":["./demo","./resiliency","./ts"],"excludeSpecs":["./ts/typings","node_modules"],"validatedIncludeSpecs":["./demo","./resiliency","./ts"],"validatedExcludeSpecs":["./ts/typings","node_modules"],"wildcardDirectories":{"C:/.../ts":1}}}}
16:31:53 (31620) DEBUG ConfigReader Loading config stryker.conf.js
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-javascript-mutator (matched with expression stryker-*)
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-html-reporter
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-javascript-mutator
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-mocha-framework
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-mocha-runner
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-typescript
16:31:53 (31620) DEBUG MochaOptionsLoader No mocha opts file found, not loading additional mocha options (mochaOptions.opts was not defined).
16:31:53 (31620) INFO TypescriptConfigEditor Loading tsconfig file C:\...\tsconfig.json
16:31:53 (31620) DEBUG TestFrameworkOrchestrator The `coverageAnalysis` setting is "off", not hooking into the test framework to achieve performance benefits.
16:31:54 (31620) INFO InputFileResolver Found 477 of 1033 file(s) to be mutated.
16:31:54 (31620) DEBUG InputFileResolver All input files: [
... removed listed files ...
]
16:31:54 (31620) DEBUG InputFileResolver Files to mutate: [
... removed listed files ...
]
16:31:54 (31620) INFO InitialTestExecutor Starting initial test run. This may take a while.
16:31:54 (31620) DEBUG Sandbox Creating a sandbox for files in C:\...\.stryker-tmp\sandbox9959195
16:31:54 (31620) DEBUG Sandbox Creating test runner 0 using settings {port: 9234}
16:31:54 (31620) DEBUG ChildProcessProxy Starting C:\...\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 4196
16:31:55 (31620) DEBUG TimeoutDecorator Starting timeout timer (300000 ms) for a test run
16:31:54 (4196) DEBUG PluginLoader Loading stryker-* from C:\...\node_modules
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-javascript-mutator (matched with expression stryker-*)
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-html-reporter
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-javascript-mutator
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-mocha-framework
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-mocha-runner
16:31:55 (4196) DEBUG PluginLoader Loading plugins stryker-typescript
16:31:55 (4196) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\...\.stryker-tmp\sandbox9959195
16:31:55 (4196) DEBUG MochaTestRunner Using files: [
... removed listed files ...
]
16:31:58 (4196) DEBUG StrykerMochaReporter Starting Mocha test run
16:32:05 (31620) TRACE ChildProcessProxy handleOrientationChange
16:32:05 (31620) TRACE ChildProcessProxy handleOrientationChange
16:32:05 (31620) TRACE ChildProcessProxy getChildIds did not return an array. Removing all child items.
16:32:14 (4196) DEBUG StrykerMochaReporter Mocha test run completed: 5029/5029 passed
16:32:14 (31620) DEBUG ChildProcessProxy Disposing of worker process 4196
16:32:14 (31620) DEBUG ChildProcessProxy Kill 4196
Thanks a lot @Stemirabo for opening this issue. We don't have access to these scale of projects, so this is greatly appreciated.
For starters, could you try to reduce the number of concurrent test runners? For example: maxConcurrentTestRunners: 2. It should at least proceed to the next step (showing a progress bar and an ETC), as the initial test run succeeded and Stryker was able to generate mutants. Indeed it will take a long time, but once we know it works, we can change up your configuration to improve performance.
Thanks for the response. Now that I'm back from holiday I've updated to the latest versions of stryker...
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
I also tried lowering the number of concurrent test runners. I tried lowering the number of Concurrent Test Runners and left it run over the weekend. This was with a smaller number of files to be mutated and it eventually made it to the ETC / progress phase. Unfortunately I didn't have logging turned on for this run (which I'm trying to recreate now, but here is the dump it spit out when it died...
<--- Last few GCs --->
[17196:0000022D2991E050] 3910324 ms: Mark-sweep 2352.0 (2397.6) -> 2352.0 (2397.6) MB, 1725.2 / 0.0 ms last resort GC in old space requested
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 0000035C420257C1 <JSObject>
0: builtin exit frame: parse(this=0000035C42008FF1 <Object map = 00000262F1B02BA1>,000001E834DFAAD1 <Very long string[273779]>)
1: onread [internal/child_process.js:470] [bytecode=0000013CE59F8549 offset=148](this=0000031B9D3C82A9 <Pipe map = 00000191A6E33A01>,nread=273780,pool=000001E834DFAA21 <Uint8Array map = 000003C55C6B4C39>,recvHandle=0000022E73E022D1 <undefined>)
==== Details ...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node_module_register
2: v8::internal::FatalProcessOutOfMemory
3: v8::internal::FatalProcessOutOfMemory
4: v8::internal::Factory::NewRawOneByteString
5: v8_inspector::protocol::Schema::API::Domain::fromJSONString
6: v8_inspector::protocol::Schema::API::Domain::fromJSONString
7: v8_inspector::protocol::Schema::API::Domain::fromJSONString
8: v8_inspector::protocol::Schema::API::Domain::fromJSONString
9: v8_inspector::protocol::Schema::API::Domain::fromJSONString
10: v8_inspector::protocol::Schema::API::Domain::fromJSONString
11: v8_inspector::protocol::Schema::API::Domain::fromJSONString
12: v8_inspector::protocol::Schema::API::Domain::fromJSONString
13: v8_inspector::protocol::Schema::API::Domain::fromJSONString
14: v8_inspector::protocol::Schema::API::Domain::fromJSONString
15: v8_inspector::protocol::Schema::API::Domain::fromJSONString
16: v8_inspector::protocol::Schema::API::Domain::fromJSONString
17: v8_inspector::protocol::Schema::API::Domain::fromJSONString
18: v8_inspector::protocol::Schema::API::Domain::fromJSONString
19: v8_inspector::protocol::Schema::API::Domain::fromJSONString
20: v8_inspector::protocol::Schema::API::Domain::fromJSONString
21: v8_inspector::protocol::Schema::API::Domain::fromJSONString
22: v8::internal::DeferredHandles::Iterate
23: v8_inspector::protocol::Debugger::API::SearchMatch::fromJSONString
24: v8_inspector::protocol::Debugger::API::SearchMatch::fromJSONString
25: 000002D6EA486B21
Not sure how helpful this is, but I'll try and update when I recreate with the file logging on.
I've discussed this case with @simondel . We think the problem is the way we transpile and test the mutants. The process looks like this:
The problem is that transpiling each mutant is generally a lot faster than testing it. So the amount of work keeps piling up. Each transpile result contains the content of one or more js output files. This essentially is a memory leak.
@Stemirabo could you please help to verify this for us? I've altered the file "MutationTestExecutor.js" with memory logging. It also logs the amount of transpiled mutants (both on level DEBUG). Would you please replace file node_modules/stryker/src/process/MutationTestExecutor.js with the attached file? Please set fileLogLevel: 'debug' in order to assure it is logged to the file. Thanks in advance!
EDIT: Sorry I missed your update before posting this one... I'll give that a shot and see what happens.
Here's the trace log file contents for the previous error dump
16:04:13 (29832) INFO ConfigReader Using stryker.conf.js in the current working directory.
16:04:13 (29832) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
16:04:13 (29832) DEBUG Stryker Using config: {"mutate":["ts/integration/ui/!(*.tests).ts"],"logLevel":"info","fileLogLevel":"trace","timeoutMS":10000,"timeoutFactor":10,"plugins":["stryker-*"],"port":9234,"reporter":[],"reporters":["html","clear-text","progress"],"coverageAnalysis":"off","testRunner":"mocha","mutator":"typescript","transpilers":[],"maxConcurrentTestRunners":1,"symlinkNodeModules":true,"thresholds":{"break":null,"high":80,"low":60},"allowConsoleColors":true,"packageManager":"npm","htmlReporter":{"baseDir":".stryker-report"},"testFramework":"mocha","tsconfigFile":"tsconfig.json","files":["ts/**/*.ts","lib/**/*.js"],"mochaOptions":{"require":["ts-node/register","reflect-metadata"],"timeout":0,"files":["ts/**/*.tests.ts"]},"configFile":"stryker.conf.js","tsconfig":{"options":{"removeComments":true,"sourceMap":true,"target":1,"noImplicitAny":true,"module":1,"declaration":true,"noEmitOnError":true,"preserveConstEnums":true,"typeRoots":["C:/...../node_modules/@types","C:/...../node_modules"],"emitDecoratorMetadata":true,"types":["reflect-metadata","jquery","jqueryui","datejs"],"experimentalDecorators":true,"lib":["lib.es2017.d.ts","lib.dom.d.ts"],"configFilePath":"C:/...../tsconfig.json","project":"C:/.....","allowUnreachableCode":true,"noUnusedLocals":false,"noUnusedParameters":false},"fileNames":[File List],"typeAcquisition":{"enable":false,"include":[],"exclude":[]},"raw":{"compilerOptions":{"removeComments":true,"sourceMap":true,"target":"es5","noImplicitAny":true,"module":"commonjs","declaration":true,"noEmitOnError":true,"preserveConstEnums":true,"typeRoots":["node_modules/@types","node_modules"],"emitDecoratorMetadata":true,"types":["reflect-metadata","jquery","jqueryui","datejs"],"experimentalDecorators":true,"lib":["es2017","dom"]},"include":["./demo","./resiliency","./ts"],"exclude":["./ts/typings","node_modules"],"compileOnSave":false},"errors":[],"wildcardDirectories":{"C:/...../demo":1,"C:/...../resiliency":1,"C:/...../ts":1},"compileOnSave":false,"configFileSpecs":{"includeSpecs":["./demo","./resiliency","./ts"],"excludeSpecs":["./ts/typings","node_modules"],"validatedIncludeSpecs":["./demo","./resiliency","./ts"],"validatedExcludeSpecs":["./ts/typings","node_modules"],"wildcardDirectories":{"C:/...../demo":1,"C:/...../resiliency":1,"C:/...../ts":1}}}}
16:04:13 (29832) DEBUG ConfigReader Loading config stryker.conf.js
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
16:04:13 (29832) DEBUG TestFrameworkOrchestrator The `coverageAnalysis` setting is "off", not hooking into the test framework to achieve performance benefits.
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-html-reporter
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-mocha-framework
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-mocha-runner
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-typescript
16:04:13 (29832) DEBUG MochaOptionsLoader No mocha opts file found, not loading additional mocha options (mochaOptions.opts was not defined).
16:04:13 (29832) INFO TypescriptConfigEditor Loading tsconfig file C:\.....\tsconfig.json
16:04:14 (29832) INFO InputFileResolver Found 103 of 967 file(s) to be mutated.
16:04:14 (29832) DEBUG InputFileResolver All input files: [
File List
]
16:04:14 (29832) DEBUG InputFileResolver Files to mutate: [
File List
]
16:04:14 (29832) INFO InitialTestExecutor Starting initial test run. This may take a while.
16:04:14 (29832) DEBUG Sandbox Creating a sandbox for files in C:\.....\.stryker-tmp\sandbox2800862
16:04:14 (29832) DEBUG Sandbox Creating test runner 0 using settings {port: 9234}
16:04:14 (29832) DEBUG ChildProcessProxy Starting C:\.....\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 38868
16:04:15 (38868) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-html-reporter
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-mocha-framework
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-mocha-runner
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-typescript
16:04:15 (38868) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\.....\.stryker-tmp\sandbox2800862
16:04:15 (38868) DEBUG MochaTestRunner Using files: [
File List
]
16:04:15 (29832) DEBUG TimeoutDecorator Starting timeout timer (300000 ms) for a test run
16:04:19 (29832) TRACE ChildProcessProxy `sandbox.create()` is deprecated. Use default sandbox at `sinon.sandbox` or create new sandboxes with `sinon.createSandbox()`
16:04:19 (38868) DEBUG StrykerMochaReporter Starting Mocha test run
16:04:27 (29832) TRACE ChildProcessProxy handleOrientationChange
16:04:27 (29832) TRACE ChildProcessProxy handleOrientationChange
16:04:28 (29832) TRACE ChildProcessProxy getChildIds did not return an array. Removing all child items.
16:04:38 (38868) DEBUG StrykerMochaReporter Mocha test run completed: 5120/5120 passed
16:04:38 (29832) DEBUG ChildProcessProxy Disposing of worker process 38868
16:04:38 (29832) DEBUG ChildProcessProxy Kill 38868
16:04:38 (29832) INFO InitialTestExecutor Initial test run succeeded. Ran 5120 tests in 24 seconds (net 19180 ms, overhead 3748 ms).
16:04:39 (29832) INFO Stryker 9043 Mutant(s) generated
17:13:01 (29832) INFO SandboxPool Creating 1 test runners (based on maxConcurrentTestRunners config)
17:13:01 (29832) DEBUG Sandbox Creating a sandbox for files in C:\.....\.stryker-tmp\sandbox8524868
17:13:47 (29832) DEBUG Sandbox Creating test runner 0 using settings {port: 9234}
17:13:47 (29832) DEBUG ChildProcessProxy Starting C:\.....\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 18812
17:13:48 (18812) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-html-reporter
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-mocha-framework
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-mocha-runner
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-typescript
17:13:48 (18812) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\.....\.stryker-tmp\sandbox8524868
17:13:49 (18812) DEBUG MochaTestRunner Using files: [
File List
]
17:13:57 (29832) DEBUG TimeoutDecorator Starting timeout timer (205548 ms) for a test run
17:14:00 (18812) DEBUG StrykerMochaReporter Starting Mocha test run
17:14:07 (18812) TRACE StrykerMochaReporter Test failed: AppStyler Debug should add the class when BUILD_TYPE is debug. Error: expected [] to include 'debug'
17:14:07 (18812) DEBUG StrykerMochaReporter Mocha test run completed: 2163/2164 passed
Ok I ran it again with your modified file like you requested. Same output except it spit out: "DEBUG MutationTestExecutor Transpiled mutants: 1. Memory: 2376.39 MB" after the first mutant test run and then the process died/ran out of memory.
Here's the full logfile:
17:48:00 (34092) INFO ConfigReader Using stryker.conf.js in the current working directory.
17:48:00 (34092) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
17:48:00 (34092) DEBUG Stryker Using config: {"mutate":["ts/integration/ui/!(*.tests).ts"],"logLevel":"info","fileLogLevel":"debug","timeoutMS":10000,"timeoutFactor":10,"plugins":["stryker-*"],"port":9234,"reporter":[],"reporters":["html","clear-text","progress"],"coverageAnalysis":"off","testRunner":"mocha","mutator":"typescript","transpilers":[],"maxConcurrentTestRunners":1,"symlinkNodeModules":true,"thresholds":{"break":null,"high":80,"low":60},"allowConsoleColors":true,"packageManager":"npm","htmlReporter":{"baseDir":".stryker-report"},"testFramework":"mocha","tsconfigFile":"tsconfig.json","files":["ts/**/*.ts","lib/**/*.js","!ts/test/calculator.*"],"mochaOptions":{"require":["ts-node/register","reflect-metadata"],"timeout":0,"files":["ts/**/*.tests.ts"]},"configFile":"stryker.conf.js","tsconfig":{"options":{"removeComments":true,"sourceMap":true,"target":1,"noImplicitAny":true,"module":1,"declaration":true,"noEmitOnError":true,"preserveConstEnums":true,"typeRoots":["C:/...../node_modules/@types","C:/...../node_modules"],"emitDecoratorMetadata":true,"types":["reflect-metadata","jquery","jqueryui","datejs"],"experimentalDecorators":true,"lib":["lib.es2017.d.ts","lib.dom.d.ts"],"configFilePath":"C:/...../tsconfig.json","project":"C:/.....","allowUnreachableCode":true,"noUnusedLocals":false,"noUnusedParameters":false},"fileNames":[File List],"typeAcquisition":{"enable":false,"include":[],"exclude":[]},"raw":{"compilerOptions":{"removeComments":true,"sourceMap":true,"target":"es5","noImplicitAny":true,"module":"commonjs","declaration":true,"noEmitOnError":true,"preserveConstEnums":true,"typeRoots":["node_modules/@types","node_modules"],"emitDecoratorMetadata":true,"types":["reflect-metadata","jquery","jqueryui","datejs"],"experimentalDecorators":true,"lib":["es2017","dom"]},"include":["./demo","./resiliency","./ts"],"exclude":["./ts/typings","node_modules"],"compileOnSave":false},"errors":[],"wildcardDirectories":{"C:/...../demo":1,"C:/...../resiliency":1,"C:/...../ts":1},"compileOnSave":false,"configFileSpecs":{"includeSpecs":["./demo","./resiliency","./ts"],"excludeSpecs":["./ts/typings","node_modules"],"validatedIncludeSpecs":["./demo","./resiliency","./ts"],"validatedExcludeSpecs":["./ts/typings","node_modules"],"wildcardDirectories":{"C:/...../demo":1,"C:/...../resiliency":1,"C:/...../ts":1}}}}
17:48:00 (34092) DEBUG ConfigReader Loading config stryker.conf.js
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-html-reporter
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-mocha-framework
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-mocha-runner
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-typescript
17:48:00 (34092) DEBUG MochaOptionsLoader No mocha opts file found, not loading additional mocha options (mochaOptions.opts was not defined).
17:48:00 (34092) INFO TypescriptConfigEditor Loading tsconfig file C:\.....\tsconfig.json
17:48:00 (34092) DEBUG TestFrameworkOrchestrator The `coverageAnalysis` setting is "off", not hooking into the test framework to achieve performance benefits.
17:48:01 (34092) INFO InputFileResolver Found 103 of 967 file(s) to be mutated.
17:48:01 (34092) DEBUG InputFileResolver All input files: [
File List
]
17:48:01 (34092) DEBUG InputFileResolver Files to mutate: [
File List
]
17:48:01 (34092) INFO InitialTestExecutor Starting initial test run. This may take a while.
17:48:01 (34092) DEBUG Sandbox Creating a sandbox for files in C:\.....\.stryker-tmp\sandbox6550540
17:48:01 (34092) DEBUG Sandbox Creating test runner 0 using settings {port: 9234}
17:48:01 (34092) DEBUG ChildProcessProxy Starting C:\.....\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 8724
17:48:01 (8724) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-html-reporter
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-mocha-framework
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-mocha-runner
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-typescript
17:48:02 (8724) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\.....\.stryker-tmp\sandbox6550540
17:48:02 (8724) DEBUG MochaTestRunner Using files: [
File List
]
17:48:02 (34092) DEBUG TimeoutDecorator Starting timeout timer (300000 ms) for a test run
17:48:05 (8724) DEBUG StrykerMochaReporter Starting Mocha test run
17:48:22 (8724) DEBUG StrykerMochaReporter Mocha test run completed: 5120/5120 passed
17:48:22 (34092) DEBUG ChildProcessProxy Disposing of worker process 8724
17:48:22 (34092) DEBUG ChildProcessProxy Kill 8724
17:48:22 (34092) INFO InitialTestExecutor Initial test run succeeded. Ran 5120 tests in 21 seconds (net 16985 ms, overhead 3078 ms).
17:48:23 (34092) INFO Stryker 9043 Mutant(s) generated
18:54:42 (34092) INFO SandboxPool Creating 1 test runners (based on maxConcurrentTestRunners config)
18:54:42 (34092) DEBUG Sandbox Creating a sandbox for files in C:\.....\.stryker-tmp\sandbox5922765
18:55:28 (34092) DEBUG Sandbox Creating test runner 0 using settings {port: 9234}
18:55:28 (34092) DEBUG ChildProcessProxy Starting C:\.....\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 43432
18:55:28 (43432) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-html-reporter
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-mocha-framework
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-mocha-runner
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-typescript
18:55:28 (43432) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\.....\.stryker-tmp\sandbox5922765
18:55:29 (43432) DEBUG MochaTestRunner Using files: [
File List
]
18:55:31 (34092) DEBUG MutationTestExecutor Transpiled mutants: 1. Memory: 2376.39 MB
18:55:37 (34092) DEBUG TimeoutDecorator Starting timeout timer (182928 ms) for a test run
18:55:40 (43432) DEBUG StrykerMochaReporter Starting Mocha test run
18:55:46 (43432) DEBUG StrykerMochaReporter Mocha test run completed: 2163/2164 passed
Here's the console dump:
17:48:23 (34092) INFO Stryker 9043 Mutant(s) generated
18:54:42 (34092) INFO SandboxPool Creating 1 test runners (based on maxConcurrentTestRunners config)
<--- Last few GCs --->
[34092:000001F9370C9850] 4083969 ms: Mark-sweep 2377.1 (2424.1) -> 2377.1 (2424.1) MB, 1824.2 / 0.0 ms last resort GC in old space requested
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 00000334821257C1 <JSObject>
0: builtin exit frame: parse(this=0000033482108FF1 <Object map = 000001A46F582BA1>,00000088B7AFF199 <Very long string[427885]>)
1: onread [internal/child_process.js:470] [bytecode=000001E862DFC949 offset=148](this=00000152068C4A41 <Pipe map = 00000135B193AB19>,nread=427886,pool=00000088B7AFF0E9 <Uint8Array map = 0000012FF9FC2A49>,recvHandle=00000027118822D1 <undefined>)
==== Details ...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node_module_register
2: v8::internal::FatalProcessOutOfMemory
3: v8::internal::FatalProcessOutOfMemory
4: v8::internal::Factory::NewRawOneByteString
5: v8_inspector::protocol::Schema::API::Domain::fromJSONString
6: v8_inspector::protocol::Schema::API::Domain::fromJSONString
7: v8_inspector::protocol::Schema::API::Domain::fromJSONString
8: v8_inspector::protocol::Schema::API::Domain::fromJSONString
9: v8_inspector::protocol::Schema::API::Domain::fromJSONString
10: v8_inspector::protocol::Schema::API::Domain::fromJSONString
11: v8_inspector::protocol::Schema::API::Domain::fromJSONString
12: v8_inspector::protocol::Schema::API::Domain::fromJSONString
13: v8_inspector::protocol::Schema::API::Domain::fromJSONString
14: v8_inspector::protocol::Schema::API::Domain::fromJSONString
15: v8_inspector::protocol::Schema::API::Domain::fromJSONString
16: v8_inspector::protocol::Schema::API::Domain::fromJSONString
17: v8_inspector::protocol::Schema::API::Domain::fromJSONString
18: v8_inspector::protocol::Schema::API::Domain::fromJSONString
19: v8_inspector::protocol::Schema::API::Domain::fromJSONString
20: v8_inspector::protocol::Schema::API::Domain::fromJSONString
21: v8_inspector::protocol::Schema::API::Domain::fromJSONString
22: v8_inspector::protocol::Schema::API::Domain::fromJSONString
23: v8::internal::DeferredHandles::Iterate
24: v8_inspector::protocol::Debugger::API::SearchMatch::fromJSONString
25: v8_inspector::protocol::Debugger::API::SearchMatch::fromJSONString
26: 0000035E76006B21
This may be fixed with the latest release. Could you try to upgrade to the latest v0.x release of Stryker?
Hi. Sorry for the slow reply. I've updated to the latest packages...
"stryker": "0.35.1",
"stryker-api": "0.24.1",
"stryker-html-reporter": "0.18.1",
"stryker-mocha-framework": "0.15.1",
"stryker-mocha-runner": "0.17.1",
"stryker-typescript": "0.18.1",
...and reran the same build with "--fileLogLevel trace --logLevel debug". No noticeable difference on my end. Maybe something in the logs will help you guys though.
logfile:
17:12:46 (11836) INFO ConfigReader Using stryker.conf.js in the current working directory.
17:12:46 (11836) DEBUG BroadcastReporter Broadcasting to reporters ["html","clear-text","progress"]
17:12:46 (11836) DEBUG ConfigReader Loading config stryker.conf.js
17:12:46 (11836) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-html-reporter
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-mocha-framework
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-mocha-runner
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-typescript
17:12:46 (11836) DEBUG PluginLoader Loading plugins C:\.....\node_modules\stryker\src\reporters\index.js
17:12:46 (11836) DEBUG PluginLoader Loading plugins C:\.....\node_modules\stryker\src\mutators\index.js
17:12:46 (11836) DEBUG MochaOptionsLoader No mocha opts file found, not loading additional mocha options (mochaOptions.opts was not defined).
17:12:46 (11836) INFO TypescriptConfigEditor Loading tsconfig file C:\.....\tsconfig.json
17:12:47 (11836) INFO InputFileResolver Found 103 of 982 file(s) to be mutated.
17:12:47 (11836) DEBUG InputFileResolver All input files: [
File List
]
17:12:47 (11836) DEBUG InputFileResolver Files to mutate: [
File List
]
17:12:47 (11836) DEBUG TestFrameworkOrchestrator The `coverageAnalysis` setting is "off", not hooking into the test framework to achieve performance benefits.
17:12:47 (11836) INFO InitialTestExecutor Starting initial test run. This may take a while.
17:12:47 (11836) DEBUG Sandbox Creating a sandbox for files in C:\.....\.stryker-tmp\sandbox5657331
17:12:47 (11836) DEBUG Sandbox Creating test runner 0
17:12:47 (11836) DEBUG ChildProcessProxy Starting C:\.....\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 18860
17:12:48 (18860) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\.....\.stryker-tmp\sandbox5657331
17:12:48 (18860) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-html-reporter
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-mocha-framework
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-mocha-runner
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-typescript
17:12:48 (18860) DEBUG PluginLoader Loading plugins C:\.....\node_modules\stryker\src\reporters\index.js
17:12:48 (18860) DEBUG PluginLoader Loading plugins C:\.....\node_modules\stryker\src\mutators\index.js
17:12:48 (18860) DEBUG MochaTestRunner Using files: [
File List
]
17:12:48 (11836) DEBUG TimeoutDecorator Starting timeout timer (300000 ms) for a test run
17:12:52 (18860) DEBUG MochaTestRunner Starting Mocha test run
17:13:00 (11836) TRACE ChildProcessProxy handleOrientationChange
17:13:00 (11836) TRACE ChildProcessProxy handleOrientationChange
17:13:00 (11836) TRACE ChildProcessProxy getChildIds did not return an array. Removing all child items.
17:13:11 (18860) DEBUG MochaTestRunner Mocha test run completed: 5213/5213 passed
17:13:11 (11836) DEBUG ChildProcessProxy Disposing of worker process 18860
17:13:11 (11836) DEBUG ChildProcessProxy Kill 18860
17:13:11 (11836) INFO InitialTestExecutor Initial test run succeeded. Ran 5213 tests in 24 seconds (net 18680 ms, overhead 3717 ms).
17:13:12 (11836) INFO MutatorFacade 9087 Mutant(s) generated
18:27:35 (11836) INFO SandboxPool Creating 1 test runners (based on maxConcurrentTestRunners config)
18:27:35 (11836) DEBUG Sandbox Creating a sandbox for files in C:\.....\.stryker-tmp\sandbox6791285
18:27:46 (11836) DEBUG Sandbox Creating test runner 0
18:27:46 (11836) DEBUG ChildProcessProxy Starting C:\.....\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 22632
18:27:46 (22632) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\.....\.stryker-tmp\sandbox6791285
18:27:46 (22632) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-html-reporter
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-framework
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-runner
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-typescript
Console Dump
17:13:12 (11836) INFO MutatorFacade 9087 Mutant(s) generated
18:27:35 (11836) INFO SandboxPool Creating 1 test runners (based on maxConcurrentTestRunners config)
18:27:35 (11836) DEBUG Sandbox Creating a sandbox for files in C:\Code\ice-stryker\FrontEnd\.stryker-tmp\sandbox6791285
18:27:46 (11836) DEBUG Sandbox Creating test runner 0
18:27:46 (11836) DEBUG ChildProcessProxy Starting C:\Code\ice-stryker\FrontEnd\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 22632
18:27:46 (22632) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\Code\ice-stryker\FrontEnd\.stryker-tmp\sandbox6791285
18:27:46 (22632) DEBUG PluginLoader Loading stryker-* from C:\Code\ice-stryker\FrontEnd\node_modules
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-html-reporter
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-framework
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-runner
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-typescript
18:27:47 (22632) DEBUG PluginLoader Loading plugins C:\Code\ice-stryker\FrontEnd\node_modules\stryker\src\reporters\index.js
18:27:47 (22632) DEBUG PluginLoader Loading plugins C:\Code\ice-stryker\FrontEnd\node_modules\stryker\src\mutators\index.js
18:27:50 (22632) DEBUG MochaTestRunner Using files: [
File List
]
18:27:57 (11836) DEBUG TimeoutDecorator Starting timeout timer (200517 ms) for a test run
18:28:01 (22632) DEBUG MochaTestRunner Starting Mocha test run
18:28:07 (22632) DEBUG MochaTestRunner Mocha test run completed: 2235/2236 passed
18:28:07 (22632) DEBUG MochaTestRunner Mocha test run completed: 2235/2236 passed
<--- Last few GCs --->
[11836:00000259F2438EE0] 4532374 ms: Mark-sweep 2337.1 (2382.1) -> 2337.1 (2382.1) MB, 2389.5 / 0.0 ms last resort GC in old space requested
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 0000026FC63A57C1 <JSObject>
0: builtin exit frame: parse(this=0000026FC6388FF1 <Object map = 0000033996A82BA1>,000000DFFF9EE501 <Very long string[331094]>)
1: onread [internal/child_process.js:470] [bytecode=000001FBA117C751 offset=148](this=000000DFFF9A3231 <Pipe map = 000000E6FE0E59E9>,nread=331095,pool=000000DFFF9EE7D9 <Uint8Array map = 000002A06C384721>,recvHandle=0000017217E022D1 <undefined>)
==== Details ...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node_module_register
2: v8::internal::FatalProcessOutOfMemory
3: v8::internal::FatalProcessOutOfMemory
4: v8::internal::Factory::NewRawOneByteString
5: v8_inspector::protocol::Schema::API::Domain::fromJSONString
6: v8_inspector::protocol::Schema::API::Domain::fromJSONString
7: v8_inspector::protocol::Schema::API::Domain::fromJSONString
8: v8_inspector::protocol::Schema::API::Domain::fromJSONString
9: v8_inspector::protocol::Schema::API::Domain::fromJSONString
10: v8_inspector::protocol::Schema::API::Domain::fromJSONString
11: v8_inspector::protocol::Schema::API::Domain::fromJSONString
12: v8_inspector::protocol::Schema::API::Domain::fromJSONString
13: v8_inspector::protocol::Schema::API::Domain::fromJSONString
14: v8_inspector::protocol::Schema::API::Domain::fromJSONString
15: v8_inspector::protocol::Schema::API::Domain::fromJSONString
16: v8_inspector::protocol::Schema::API::Domain::fromJSONString
17: v8_inspector::protocol::Schema::API::Domain::fromJSONString
18: v8_inspector::protocol::Schema::API::Domain::fromJSONString
19: v8_inspector::protocol::Schema::API::Domain::fromJSONString
20: v8_inspector::protocol::Schema::API::Domain::fromJSONString
21: v8_inspector::protocol::Schema::API::Domain::fromJSONString
22: v8::internal::DeferredHandles::Iterate
23: v8_inspector::protocol::Debugger::API::SearchMatch::fromJSONString
24: v8_inspector::protocol::Debugger::API::SearchMatch::fromJSONString
25: 00000158D5B86B21
I had similar troubles with the popular Prettier code formatting tool, see prettier/prettier#6681 (I limited it to CLI testing for now, as an unfortunate workaround). This was on a Vultr 16-CPU virtual server with 64 GB RAM, not good!
This seems to help run Stryker on all source files in Prettier:
node --max-old-space-size=40000 ./node_modules/.bin/stryker run
ref: https://stackoverflow.com/questions/38558989/node-js-heap-out-of-memory
It may be possible to use NODE_OPTIONS instead, as documented in the second answer. For further investigation, when I get a chance.
@brodybits It makes sense tho, since we store quite a lot of data, it may weight a lot. But 1.7GB, I dunno. There should be some tools to check how much data is used. I am really looking for your results!
Yes but not such a good experience. I am discussing my progress in hopes that some others will start watching, experimenting, and contributing ideas to help us all find a good solution.
I have a feeling (and nothing more than a feeling) that Stryker could use some improvement in resource allocation and usage. I think it should be possible to break things into separate worker threads or processes that can work together through promises.
I also have a feeling that Node.js could be a little smarter about using the system resources available.
I will continue to experiment and explore as much as I can on this behavior.
@brodybits I like your thinking. If you need some resources, I have found:
https://www.valentinog.com/blog/memory-usage-node-js/
https://marmelab.com/blog/2018/04/03/how-to-track-and-fix-memory-leak-with-nodejs.html
I especially like this part:
https://marmelab.com/blog/2018/04/03/how-to-track-and-fix-memory-leak-with-nodejs.html#accessing-nodejs-memory-using-v8-inspector--chrome-dev-tools
Nice resources, thanks! I am still quite new with Stryker, not sure when I
Sent from my mobile
I guess the easiest way to get into stryker is to play with it just a bit. After doing several commits, and understanding what it is doing and how it works you will be pretty good at it. It isn't that hard to get I guess. While learning how stryker works I also managed to learn whole TS :P Also if you have questions you are more than welcome. We will teach / show how it works
Hi! I'm closing this issue for now. If it still persists with Stryker version 4, please open a new issue. Thanks!
Most helpful comment
Yes but not such a good experience. I am discussing my progress in hopes that some others will start watching, experimenting, and contributing ideas to help us all find a good solution.
I have a feeling (and nothing more than a feeling) that Stryker could use some improvement in resource allocation and usage. I think it should be possible to break things into separate worker threads or processes that can work together through promises.
I also have a feeling that Node.js could be a little smarter about using the system resources available.
I will continue to experiment and explore as much as I can on this behavior.