Open mflint opened 7 years ago
The LPServer port can be changed by setting the CalabashServerPort
key in the app's Info.plist.
The DeviceAgent port cannot be changed.
but I cannot parallelise using multiple iOS simulators.
The DeviceAgent port will be the first hurdle. The next hurdle will be enabling multi-sim support in run-loop.
@jmoody Thanks for the tip about CalabashServerPort
for LPServer.
The DeviceAgent port will be the first hurdle
Yes - I can't do anything about that, sadly. Do you have any plans? (I'm assuming that the embedded web server is Calabash code, rather than a feature of Apple's "UI Test" app)
The next hurdle will be enabling multi-sim support in run-loop
That might not be necessary. I already have a script to parallelise a test-run on devices, and can provision/install/destroy multiple simulators with FBSimulatorControl. I think the fixed DeviceAgent port is my last hurdle.
Do you have any plans?
Yeah, but this is very low priority.
The plan is to open source the DeviceAgent and iOSDeviceManager at which point someone in the community can come up with a solution.
Yeah, but this is very low priority.
Oh sad times. I'll be happy to help in any way I can, if it's ever open-sourced.
Thanks for the replies Joshua :-)
interesting, I've tried to run tests on two devices on the GM and surprisingly, two simulators were opened and APPs were installed on both simulators. It failed afterwards(looks like something kills apps on both devices simultaneously). But it gave me a hope, that there will be not sooo much to do in order to get parallel simulators :)
p.s. Before I wasn't convinced that parallel simulators would work at all, but currently we do unit tests in parallel and it seems to work quite smooth. So, I hope that this feature can be developed in some time, because we already running out of hardware for testing (5 Mac Pros are not enough already.. )
tl;dr
It would be really useful to be able to change the LPServer and DeviceAgent ports somehow, but they appear to be hard-coded to 37265 and 27753.
Explanation
I have a large test suite, which would take several hours to run on a single device. I'm able to parallelise tests over multiple devices, which reduces the time, but I cannot parallelise using multiple iOS simulators.
This is because only one process can bind to a single port.
Error starting Calabash HTTP Server: Error Domain=NSPOSIXErrorDomain Code=48 "Address already in use" UserInfo={NSLocalizedDescription=Address already in use, NSLocalizedFailureReason=Error in bind() function}