calabash / calabash-ios

Calabash for iOS
Other
1.81k stars 369 forks source link

LPServer and DeviceAgent ports cannot be changed #1328

Open mflint opened 7 years ago

mflint commented 7 years ago

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}

jmoody commented 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.

mflint commented 7 years ago

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

jmoody commented 7 years ago

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.

mflint commented 7 years ago

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 :-)

JoeSSS commented 7 years ago

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.. )