Running Emcee Android on macOS
This is experimental functionality
- Might be unstable
- Do not use in production
For demonstration purposes Emcee might be deployed and run on macOS. However, managing emulators inside containers is not available. And all tests will be run on user emulators.
How it works#
For Emcee workers to operate correctly, they need to be run on OS Linux with KVM enabled. If you run tests on workers deployed on macOS emulators inside containers will crash with an error.
To demonstrate how Emcee works on macOS we provide the ability to disable emulators inside containers. You can connect emulators running directly on macOS directly to Emcee workers instead. This way workers will run tests on external emulators.
Set up#
Before launching workers on macOS you need to manually launch emulators with the sdk version you want to use in emceeplan. Remember their device serial
, we'll need them later.
For example, if you run 3 emulators the adb devices
command will display the running emulators and their device serial
(emulator-5554
, etc.):
> adb devices -l
List of devices attached
emulator-5554 device product:sdk_google_phone_arm64 model:Android_SDK_built_for_arm64 device:generic_arm64 transport_id:28
emulator-5556 device product:sdk_google_phone_arm64 model:Android_SDK_built_for_arm64 device:generic_arm64 transport_id:29
emulator-5558 device product:sdk_google_phone_arm64 model:Android_SDK_built_for_arm64 device:generic_arm64 transport_id:30
Additional configuration of workers using Docker Compose#
To turn "macOS-mode" on you need to add the environment variable MAC_DEMO_MODE_ENABLED
in the worker configuration:
EMCEE_WORKER_QUEUE_URL=http://emcee-queue-service:41000
EMCEE_WORKER_LOG_LEVEL=info
MAC_DEMO_MODE_ENABLED=true
For each worker set a personal environment variable MAC_DEMO_MODE_DEVICE_SERIAL
with a unique device serial
of the emulator on which tests from this worker will be run.
Using Docker Compose configuration file docker-compose.yml
might look like this:
version: '3'
services:
emcee-queue-service:
image: avitotech/emcee-queue:latest
container_name: emcee-queue-service
ports:
- 41000:41000
queue-worker-1:
image: avitotech/emcee-worker:latest
env_file:
- emcee-worker.env
environment:
- MAC_DEMO_MODE_DEVICE_SERIAL=emulator-5554
depends_on:
- emcee-queue-service
queue-worker-2:
image: avitotech/emcee-worker:latest
env_file:
- emcee-worker.env
environment:
- MAC_DEMO_MODE_DEVICE_SERIAL=emulator-5556
depends_on:
- emcee-queue-service
queue-worker-3:
image: avitotech/emcee-worker:latest
env_file:
- emcee-worker.env
environment:
- MAC_DEMO_MODE_DEVICE_SERIAL=emulator-5558
depends_on:
- emcee-queue-service
emcee-artifactory:
image: docker.bintray.io/jfrog/artifactory-oss:7.63.11
container_name: emcee-artifactory
ports:
- 8081:8081
- 8082:8082
volumes:
- emcee_artifactory:/var/opt/jfrog/artifactory
volumes:
emcee_artifactory:
Then you can deploy Emcee and run tests as described in the documentation. Tests will be run on local emulators.
Example#
This is how running tests on 3 simulators might look like: