Skip to content
This repository has been archived by the owner on Dec 7, 2019. It is now read-only.

Commit

Permalink
Add configurable APK installation timeout. (#109)
Browse files Browse the repository at this point in the history
Add configurable APK installation timeout.
  • Loading branch information
koral-- authored and yunikkk committed Nov 9, 2017
1 parent bdff777 commit 14978c1
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 5 deletions.
11 changes: 10 additions & 1 deletion composer/src/main/kotlin/com/gojuno/composer/Args.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.gojuno.composer
import com.beust.jcommander.IStringConverter
import com.beust.jcommander.JCommander
import com.beust.jcommander.Parameter
import java.util.concurrent.TimeUnit

data class Args(
@Parameter(
Expand Down Expand Up @@ -96,7 +97,15 @@ data class Args(
description = "Connected devices/emulators that will be used to run tests against. If not passed — tests will run on all connected devices/emulators. Specifying both `--device-pattern` and `--devices` will result in an error. Usage example: `--device-pattern \"somePatterns\"`.",
order = 10
)
var devicePattern: String = ""
var devicePattern: String = "",

@Parameter(
names = arrayOf("--install-timeout"),
required = false,
description = "APK installation timeout in seconds. If not passed defaults to 120 seconds (2 minutes). Applicable to both test APK and APK under test.",
order = 11
)
var installTimeoutSeconds: Int = TimeUnit.MINUTES.toSeconds(2).toInt()
)

// No way to share array both for runtime and annotation without reflection.
Expand Down
6 changes: 4 additions & 2 deletions composer/src/main/kotlin/com/gojuno/composer/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import rx.Observable
import rx.schedulers.Schedulers
import java.io.File
import java.util.*
import java.util.concurrent.TimeUnit

sealed class Exit(val code: Int, val message: String?) {
object Ok : Exit(code = 0, message = null)
Expand Down Expand Up @@ -59,8 +60,9 @@ fun main(rawArgs: Array<String>) {
.doOnNext { log("${it.size} connected adb device(s): $it") }
.flatMap { connectedAdbDevices ->
val runTestsOnDevices: List<Observable<AdbDeviceTestRun>> = connectedAdbDevices.mapIndexed { index, device ->
val installAppApk = device.installApk(pathToApk = args.appApkPath)
val installTestApk = device.installApk(pathToApk = args.testApkPath)
val installTimeout = Pair(args.installTimeoutSeconds, TimeUnit.SECONDS)
val installAppApk = device.installApk(pathToApk = args.appApkPath, timeout = installTimeout)
val installTestApk = device.installApk(pathToApk = args.testApkPath, timeout = installTimeout)

Observable
.concat(installAppApk, installTestApk)
Expand Down
14 changes: 13 additions & 1 deletion composer/src/test/kotlin/com/gojuno/composer/ArgsSpec.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ class ArgsSpec : Spek({
verboseOutput = false,
keepOutputOnExit = false,
devices = emptyList(),
devicePattern = ""
devicePattern = "",
installTimeoutSeconds = 120
))
}
}
Expand Down Expand Up @@ -144,4 +145,15 @@ class ArgsSpec : Spek({
assertThat(args.keepOutputOnExit).isEqualTo(true)
}
}

context("parse args with passed --install-timeout") {

val args by memoized {
parseArgs(rawArgsWithOnlyRequiredFields + arrayOf("--install-timeout", "600"))
}

it("parses --install-timeout correctly") {
assertThat(args.installTimeoutSeconds).isEqualTo(600)
}
}
})
2 changes: 1 addition & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ ext.versions = [

rxJava : '1.3.0',
jCommander : '1.71',
commander : '0.1.2',
commander : '0.1.3',
apacheCommonsIo : '2.5',
apacheCommonsLang: '3.5',
gson : '2.8.0',
Expand Down

0 comments on commit 14978c1

Please sign in to comment.