Support creating different device farms with in the same machine

Add capability to create appium device farm with specific UDIDs.

Even though the machine has many devices connected, I wanted to create device-farm with only specific udids.

I’ve used below config
{
“server”: {
“port”: 31337,
“plugin”: {
“device-farm”: {
“platform”: “android”,
“skipChromeDownload”: true,
“androidDeviceType”: “real”
},
“capabilities”: {
“udids”: [“XXXX1234”, “XXXX12345”]
}
}
}
}

When I run
" appium server -ka 800 --use-plugins=device-farm,appium-dashboard -pa /wd/hub --config ./server-config.json"

On http://localhost:31337/device-farm/
I’m able to see all devices connected to my machine are showing in the device farm. But I just want to run appium grid with only two mentioned UDIDs.

Based on
ro.build.characteristics
ro.product.manufacturer
ro.com.google.clientidbase
ro.product.model
gsm.current.phone-type
ro.product.product.brand

these properties of devices, we are able to segregate devices, wether it’s a TV or Phone or Tablet.
In our current framework we are using Selenium grid to register different devices to different hubs, calling them as TV hub, Mobile Hub and Tablet Hub.

Our application UI differs based on device type. So our UI test cases also differs. We’ve different suite of test cases for TV/Mobile/Tablet. While executing test suites we are giving respective hub url to execute test cases in parallel.

With Appium-Device farm if we can have the same capability, we don’t need to depend on Selenium grid concept.