gojuno / swarmer Goto Github PK
View Code? Open in Web Editor NEWReactive tool to create and start multiple Android Emulators in parallel.
License: Apache License 2.0
Reactive tool to create and start multiple Android Emulators in parallel.
License: Apache License 2.0
I tried to create an emulator with shortest list of parameters and got the input.
[Fri Oct 27 21:32:33 MSK 2017]: Already running emulators: []
[Fri Oct 27 21:32:33 MSK 2017]: Creating avd «emulator1».
[Fri Oct 27 21:32:33 MSK 2017]: Error during creation of avd «emulator1», error = java.lang.IllegalStateException: Process [/Users/overtired/Library/Android/sdk/tools/bin/avdmanager, create, avd, --force, --name, «emulator1», --package, system-images;android-25;google_apis;x86, --abi, google_apis/x86] exited with non-zero code 1 Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.AvdManagerCli.run(AvdManagerCli.java:213)
at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 5 more
[Fri Oct 27 21:32:33 MSK 2017]: Error during creation of avd «emulator1», error = java.lang.IllegalStateException: Process [/Users/overtired/Library/Android/sdk/tools/bin/avdmanager, create, avd, --force, --name, «emulator1», --package, system-images;android-25;google_apis;x86, --abi, google_apis/x86] exited with non-zero code 1 Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.AvdManagerCli.run(AvdManagerCli.java:213)
at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 5 more
[Fri Oct 27 21:32:33 MSK 2017]: Error during creation of avd «emulator1», error = java.lang.IllegalStateException: Process [/Users/overtired/Library/Android/sdk/tools/bin/avdmanager, create, avd, --force, --name, «emulator1», --package, system-images;android-25;google_apis;x86, --abi, google_apis/x86] exited with non-zero code 1 Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.AvdManagerCli.run(AvdManagerCli.java:213)
at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 5 more
[Fri Oct 27 21:32:34 MSK 2017]: Error during creation of avd «emulator1», error = java.lang.IllegalStateException: Process [/Users/overtired/Library/Android/sdk/tools/bin/avdmanager, create, avd, --force, --name, «emulator1», --package, system-images;android-25;google_apis;x86, --abi, google_apis/x86] exited with non-zero code 1 Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.AvdManagerCli.run(AvdManagerCli.java:213)
at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 5 more
[Fri Oct 27 21:32:34 MSK 2017]: Could not create avd «emulator1», error = java.lang.IllegalStateException: Process [/Users/overtired/Library/Android/sdk/tools/bin/avdmanager, create, avd, --force, --name, «emulator1», --package, system-images;android-25;google_apis;x86, --abi, google_apis/x86] exited with non-zero code 1 Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.AvdManagerCli.run(AvdManagerCli.java:213)
at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 5 more
Exception in thread "main" java.lang.IllegalStateException: Process [/Users/overtired/Library/Android/sdk/tools/bin/avdmanager, create, avd, --force, --name, «emulator1», --package, system-images;android-25;google_apis;x86, --abi, google_apis/x86] exited with non-zero code 1 Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.AvdManagerCli.run(AvdManagerCli.java:213)
at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 5 more
at com.gojuno.commander.os.ProcessesKt$process$1.call(Processes.kt:100)
at com.gojuno.commander.os.ProcessesKt$process$1.call(Processes.kt)
at rx.internal.operators.OnSubscribeCreate.call(OnSubscribeCreate.java:72)
at rx.internal.operators.OnSubscribeCreate.call(OnSubscribeCreate.java:32)
at rx.Observable.unsafeSubscribe(Observable.java:10346)
at rx.internal.operators.OperatorSubscribeOn$SubscribeOnSubscriber.call(OperatorSubscribeOn.java:100)
at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:230)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:299)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.base/java.lang.Thread.run(Thread.java:844)
The script for swarmer was ...
#!/bin/bash
java -jar /correctPathToSwarmer/swarmer.jar start \
--emulator-name «emulator1» \
--package "system-images;android-25;google_apis;x86" \
--android-abi google_apis/x86 \
--path-to-config-ini emulator1.ini
What may be wrong?
I have tried starting one emulator and keep getting this error.
Exception in thread "main" java.lang.IllegalStateException: Process [script, -F, /Users/craigc/Desktop/FastLaneTest/22978607283610.output, /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/usr/local/MacGPG2/bin:/opt/X11/bin:/usr/local/git/bin:/Users/craigc/Library/Android/sdk/platform-tools:/Users/craigc/Library/Android/sdk/platform-tools/adb, devices] exited with non-zero code 15 Script started on Fri Feb 1 14:06:21 2019
command: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/usr/local/MacGPG2/bin:/opt/X11/bin:/usr/local/git/bin:/Users/craigc/Library/Android/sdk/platform-tools:/Users/craigc/Library/Android/sdk/platform-tools/adb devices
script: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/usr/local/MacGPG2/bin:/opt/X11/bin:/usr/local/git/bin:/Users/craigc/Library/Android/sdk/platform-tools:/Users/craigc/Library/Android/sdk/platform-tools/adb: No such file or directory
Could you please help.
First of all, I really love your work. Thank you so much for that !
When I start an armv7 emulator with a 600 sec timeout (yes those emulators are incredibly slow) a 180 sec timeout stop it. So why is there a 180 sec limitation to this option?
I am unable to create an emulator. I have Android SDK Tools 25.2.3
downloaded and installed system-images;android-25;google_apis;x86
as well. Any pointers would be super helpful. Details Below
#!/usr/bin/env bash
SWARMER_VERSION=0.1.0
curl --fail --location https://jcenter.bintray.com/com/gojuno/swarmer/swarmer/${SWARMER_VERSION}/swarmer-${SWARMER_VERSION}.jar --output /tmp/swarmer.jar
java -jar /tmp/swarmer.jar \
--emulator-name test_emulator_1 \
--package "system-images;android-25;google_apis;x86" \
--android-abi google_apis/x86_64 \
--path-to-config-ini emulator_config.ini \
--emulator-start-options -prop persist.sys.language=en -prop persist.sys.country=US \
--redirect-logcat-to test_emulator_1_logcat.txt
Cannot run program "/usr/local/android-sdk/tools/bin/avdmanager": error=2, No such file or directory
[Mon Jun 26 19:32:16 UTC 2017]: Error during creation of avd test_emulator_1, error = rx.exceptions.CompositeException: 1 exceptions occurred.
[Mon Jun 26 19:32:16 UTC 2017]: Error during creation of avd test_emulator_1, error = rx.exceptions.CompositeException: 1 exceptions occurred.
[Mon Jun 26 19:32:16 UTC 2017]: Error during creation of avd test_emulator_1, error = rx.exceptions.CompositeException: 1 exceptions occurred.
[Mon Jun 26 19:32:16 UTC 2017]: Could not create avd test_emulator_1, error = rx.exceptions.CompositeException: 1 exceptions occurred.
Exception in thread "main" rx.exceptions.CompositeException: 1 exceptions occurred.
at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:268)
at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:818)
at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579)
at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
at rx.internal.operators.OperatorMerge$InnerSubscriber.onError(OperatorMerge.java:852)
at rx.internal.operators.OnSubscribeMap$MapSubscriber.onError(OnSubscribeMap.java:88)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.checkTerminated(OperatorObserveOn.java:273)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:216)
at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:230)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
ComposedException 1 :
java.io.IOException: Cannot run program "/usr/local/android-sdk/tools/bin/avdmanager": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at com.gojuno.cmd.common.ProcessesKt$process$1.call(Processes.kt:69)
at com.gojuno.cmd.common.ProcessesKt$process$1.call(Processes.kt)
at rx.internal.operators.OnSubscribeCreate.call(OnSubscribeCreate.java:72)
at rx.internal.operators.OnSubscribeCreate.call(OnSubscribeCreate.java:32)
at rx.Observable.unsafeSubscribe(Observable.java:10346)
at rx.internal.operators.OperatorSubscribeOn$SubscribeOnSubscriber.call(OperatorSubscribeOn.java:100)
at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:230)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
at com.gojuno.cmd.common.ProcessesKt$process$1.call(Processes.kt:69)
at com.gojuno.cmd.common.ProcessesKt$process$1.call(Processes.kt)
at rx.internal.operators.OnSubscribeCreate.call(OnSubscribeCreate.java:72)
at rx.internal.operators.OnSubscribeCreate.call(OnSubscribeCreate.java:32)
at rx.Observable.unsafeSubscribe(Observable.java:10346)
at rx.internal.operators.OperatorSubscribeOn$SubscribeOnSubscriber.call(OperatorSubscribeOn.java:100)
at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:230)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
I download latest swarmwr wrom https://jcenter.bintray.com/com/gojuno/swarmer/swarmer/0.2.2/:swarmer-0.2.2.jar and try tu run with command
java -jar swarmer.jar start
as a result I have an error:
Exception in thread "main" java.lang.IllegalStateException: Unsupported os windows 10, only [Lcom.gojuno.commander.os.Os;@19aa4dfd are supported.
at com.gojuno.commander.os.ProcessesKt.os(Processes.kt:133)
at com.gojuno.commander.os.ProcessesKt.access$os(Processes.kt:1)
at com.gojuno.commander.os.ProcessesKt$process$1.call(Processes.kt:54)
at com.gojuno.commander.os.ProcessesKt$process$1.call(Processes.kt)
at rx.internal.operators.OnSubscribeCreate.call(OnSubscribeCreate.java:72)
at rx.internal.operators.OnSubscribeCreate.call(OnSubscribeCreate.java:32)
at rx.Observable.unsafeSubscribe(Observable.java:10346)
at rx.internal.operators.OperatorSubscribeOn$SubscribeOnSubscriber.call(OperatorSubscribeOn.java:100)
at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:230)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
I'm starting 5 new emulators with this script
IFS=', ' read -r -a arr <<< "%screenshots_emulators%"
scriptString=" "
for ((i=0; i<${#arr[@]}; i++)); do
scriptString="$scriptString --emulator-name test_emulator_$i "
scriptString="$scriptString --package \"system-images;android-26;google_apis;x86\" "
scriptString="$scriptString --android-abi google_apis/x86 "
scriptString="$scriptString --path-to-config-ini %EMULATOR_CONFIGS_DIR%${arr[$i]} "
scriptString="$scriptString --emulator-start-options -prop persist.sys.language=en -prop persist.sys.country=US "
scriptString="$scriptString --redirect-logcat-to /tmp/test_emulator_$i_logcat.txt "
echo "config: ${arr[$i]}"
done
echo $scriptString
java -jar /tmp/swarmer.jar start $scriptString
But I get only 3 or 4 emulators running, other 2 don't want to start. So I get TimeoutException
[17:10:01][Step 8/9] Exception in thread "main" java.lang.RuntimeException: java.util.concurrent.TimeoutException
[17:10:01][Step 8/9] at rx.exceptions.Exceptions.propagate(Exceptions.java:58)
[17:10:01][Step 8/9] at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:464)
[17:10:01][Step 8/9] at rx.observables.BlockingObservable.firstOrDefault(BlockingObservable.java:196)
[17:10:01][Step 8/9] at com.gojuno.swarmer.EmulatorsKt.startEmulators(Emulators.kt:49)
[17:10:01][Step 8/9] at com.gojuno.swarmer.MainKt.main(Main.kt:7)
[17:10:01][Step 8/9] Caused by: java.util.concurrent.TimeoutException
[17:10:01][Step 8/9] at rx.internal.operators.OperatorTimeoutBase$TimeoutSubscriber.onTimeout(OperatorTimeoutBase.java:177)
[17:10:01][Step 8/9] at rx.internal.operators.OperatorTimeout$1$1.call(OperatorTimeout.java:41)
[17:10:01][Step 8/9] at rx.internal.schedulers.EventLoopsScheduler$EventLoopWorker$2.call(EventLoopsScheduler.java:189)
[17:10:01][Step 8/9] at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
[17:10:01][Step 8/9] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[17:10:01][Step 8/9] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[17:10:01][Step 8/9] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
[17:10:01][Step 8/9] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
[17:10:01][Step 8/9] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[17:10:01][Step 8/9] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[17:10:01][Step 8/9] at java.lang.Thread.run(Thread.java:745)
Is there some limitation on number of running emulators?
When starting emulator with options -no-audio -no-window -gpu off
TimeoutException will happen while waiting for boot process to finish.
Emulator is started in the background, but since init.svc.bootanim
property is not set when starting emulator with provided options the script will result in timeout.
Executed command:
java -jar swarmer-0.2.0.jar start \
--emulator-name ANDROID_25_x86 \
--package "system-images;android-25;google_apis;x86" \
--android-abi x86 \
--path-to-config-ini config/android_25_x86_config.ini \
--emulator-start-options -no-audio -no-window -gpu off -prop persist.sys.language=en -prop persist.sys.country=US
Produced output:
[Thu Jul 13 17:07:59 EEST 2017]: Creating avd ANDROID_25_x86.
[Thu Jul 13 17:08:02 EEST 2017]: Avd ANDROID_25_x86 created in 2.346 seconds.
[Thu Jul 13 17:08:02 EEST 2017]: Ports for emulator ANDROID_25_x86: 5554, 5555.
[Thu Jul 13 17:08:02 EEST 2017]: Starting emulator ANDROID_25_x86.
[Thu Jul 13 17:08:15 EEST 2017]: Emulator Emulator(id=emulator-5554, name=ANDROID_25_x86) started in 13.048 seconds.
[Thu Jul 13 17:08:15 EEST 2017]: Waiting boot process to finish for emulator Emulator(id=emulator-5554, name=ANDROID_25_x86).
Timeout 180 seconds, failed to start emulator ANDROID_25_x86.
Exception in thread "main" java.lang.RuntimeException: java.util.concurrent.TimeoutException
at rx.exceptions.Exceptions.propagate(Exceptions.java:58)
at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:464)
at rx.observables.BlockingObservable.firstOrDefault(BlockingObservable.java:196)
at com.gojuno.swarmer.EmulatorsKt.startEmulators(Emulators.kt:49)
at com.gojuno.swarmer.MainKt.main(Main.kt:7)
Caused by: java.util.concurrent.TimeoutException
at rx.internal.operators.OperatorTimeoutBase$TimeoutSubscriber.onTimeout(OperatorTimeoutBase.java:177)
at rx.internal.operators.OperatorTimeout$1$1.call(OperatorTimeout.java:41)
at rx.internal.schedulers.EventLoopsScheduler$EventLoopWorker$2.call(EventLoopsScheduler.java:189)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
The emulator in android-studio/tools is deprecated. Consider migrating to android-studio/emulator/emulator, which allows for redirection depending on architecture, and is actively supported.
The curl command listed
curl --fail --location https://jcenter.bintray.com/com/gojuno/swarmer/swarmer/${SWARMER_VERSION}/swarmer-${SWARMER_VERSION}.jar --output /tmp/swarmer.jar
will download swarmer.jar
but the invocation example says java -jar swarmer-latest-version.jar
Shouldn't this be java -jar swarmer.jar
? otherwise i get error Error: Unable to access jarfile /tmp/swarmer-latest-version.jar
Or print available devices before and after stop, because current output is too uniformative:
java -jar /tmp/swarmer.jar stop
[Wed Jun 28 20:17:17 UTC 2017]: All emulators stopped
And there is no .
(dot) at the end!!1
Hi,
hope find you well with this cold call.
I am an author of mocking framework for Kotlin
I see you are using mockito-kotlin.
I just want you to be aware that there is solution that fully supports Kotlin and ask to try it in your new/current projects.
I can help you if you answer to this issue.
Thanks and please star it
👋 Inspired by the plugin for Composer I wrote a gradle plugin for Swarmer.
It is my first gradle plugin so would love some feedback if you guys are at all interested, if not, that's fine too 😄. If it's something you guys are interested in I'd like feedback on anything, but in particular the DSL and the name spacing before I add tests and set up CI. There is already a 0.1 published if you'd like to try it out quickly.
Headless emulator support was added in emulator v28.1, is is possible to update swarmer to offer a --headless
param option that would simply delegate all calls to $ANDROID_HOME/emulator/emulator-headless
instead?
Currently, AVDs get deleted and recreated on every execution of swarmer. To speed up our tests we would like to keep existing AVDs. A flag to keep AVDs if they already exist would be great, something like --keep-existing-avds
.
In order to make Swarmer faster, it would be great if there was an option for creating snapshots on the initial boot. Maybe with an option like --create-snapshots
. The idea is to create a snapshot on the initial boot because the state is clean and then start emulators with -no-snapshot-save
so that we never override this clean snapshot. Snapshots should only be created if there is no existing snapshot.
You can manually create a snapshot from an emulator using these commands:
telnet 127.0.0.1 EMULATOR_PORT
auth AUTH_TOKEN // Content of $HOME/.emulator_console_auth_token
avd snapshot save default_boot
quit
This change only makes sense if avds are kept and not recreated (see #41 and #42).
ssh remote-machine
java -jar swarmer.jar start ...
Output:
[Fri Jul 21 16:01:59 MSK 2017]: Already running emulators: []
[Fri Jul 21 16:01:59 MSK 2017]: Creating avd test_emulator_1.
[Fri Jul 21 16:02:01 MSK 2017]: Avd test_emulator_1 created in 2.346 seconds.
[Fri Jul 21 16:02:01 MSK 2017]: Ports for emulator test_emulator_1: 5554, 5555.
[Fri Jul 21 16:02:01 MSK 2017]: Starting emulator test_emulator_1.
Timeout 180 seconds, failed to start emulator test_emulator_1.
The same command works well if it executed on the remote-machine directly.
--abi
is optional parameter for avdmanager create avd
I think it should be optional for swarmer as well.
-b --abi : The ABI to use for the AVD. The default is to auto-select the ABI if the platform has only one ABI for its system images.
Forgot that damn it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.