Skip to content

Commit

Permalink
Merge pull request #8 from Banno/install-sequentially
Browse files Browse the repository at this point in the history
Install APKs Sequentially
  • Loading branch information
abergfeld committed Nov 13, 2019
2 parents 773a2f6 + 5e76aee commit dcc9b7b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 18 deletions.
33 changes: 16 additions & 17 deletions gordon-plugin/src/main/kotlin/com/banno/gordon/AdbExtensions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,12 @@ internal fun JadbDevice.installApk(apk: File, vararg options: String) = IO.fx {

PackageManager(this@installApk).remove(remoteFile)

if (result == null || !result.contains("Success")) {
raiseError<Unit>(IllegalStateException("Failed to install ${apk.name} on $serial\n$result")).bind()
when {
result == null -> raiseError<Unit>(IllegalStateException("Install timed out for ${apk.name} on $serial")).bind()

!result.contains("Success") -> raiseError<Unit>(IllegalStateException("Failed to install ${apk.name} on $serial\n$result")).bind()

else -> Unit
}
}

Expand All @@ -80,26 +84,21 @@ internal fun List<JadbDevice>.uninstall(
}

internal fun List<JadbDevice>.reinstall(
dispatcher: CoroutineDispatcher,
logger: Logger,
applicationPackage: String,
instrumentationPackage: String,
applicationApk: File,
instrumentationApk: File
) = IO {
runBlocking {
map { device ->
async(context = dispatcher, start = CoroutineStart.LAZY) {
val packageManager = PackageManager(device)
logger.lifecycle("${device.serial}: installing $applicationPackage")
packageManager.safeUninstall(applicationPackage)
device.installApk(applicationApk, "-d", "-r").unsafeRunSync()
if (instrumentationApk != applicationApk) {
logger.lifecycle("${device.serial}: installing $instrumentationPackage")
packageManager.safeUninstall(instrumentationPackage)
device.installApk(instrumentationApk, "-d", "-r", "-t").unsafeRunSync()
}
}
}.awaitAll()
forEach { device ->
val packageManager = PackageManager(device)
logger.lifecycle("${device.serial}: installing $applicationPackage")
packageManager.safeUninstall(applicationPackage)
device.installApk(applicationApk, "-d", "-r").unsafeRunSync()
if (instrumentationApk != applicationApk) {
logger.lifecycle("${device.serial}: installing $instrumentationPackage")
packageManager.safeUninstall(instrumentationPackage)
device.installApk(instrumentationApk, "-d", "-r", "-t").unsafeRunSync()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,6 @@ internal abstract class GordonTestTask : DefaultTask() {
}

pools.flatMap { it.devices }.reinstall(
dispatcher = Dispatchers.Default,
logger = logger,
applicationPackage = applicationPackage,
instrumentationPackage = instrumentationPackage,
Expand Down

0 comments on commit dcc9b7b

Please sign in to comment.