Hi everyone, I’m trying to get a deeper understanding of how WPT works and I need a little clarification on the back end code.
My C/C++ is a little rusty, but from what I understand in wpt_driver_core.cc the agent runs the jobs one by one in the void WptDriverCore::WorkThread(void) function.
Is there a reason(s) why the tests can’t run in parallel? I mean, of course the machine can run too many tests at the same time and make things worse, but that can be avoided by setting a limit to the amount of tests that can run in parallel, no?
Multiple tests running in parallel have the potential to affect each other e.g. network, CPU, RAM etc. contention.
The bigger issues with parallel running:
-
Screen shots, video, render detection and Speed Index require displaying the browser on the desktop. Theoretically if you have a high-enough resolution desktop you could run multiple at different positions so they don’t overlap but none of the code supports that.
-
Traffic shaping can not distinguish multiple browsers on the same machine from each other so it doesn’t work in that case. If you run without traffic shaping it could but that defeats one of the major features of WebPagetest. You could assign multiple IP addresses to the machine and force each browser to bind to a different IP (and urlblast used to have code that did exactly that) but it’s not worth the effort.
Running multiple browsers concurrently on the same machine works best if you just use VM’s instead and run multiple OS instances instead.
Sorry for the late reply, thanks for all the help.