Skip to content

Commit

Permalink
Merge pull request #35 from Malinskiy/feature/vertx
Browse files Browse the repository at this point in the history
Faster IO
  • Loading branch information
Malinskiy committed May 11, 2021
2 parents 52cef4e + ad2d682 commit 7625b25
Show file tree
Hide file tree
Showing 87 changed files with 1,579 additions and 814 deletions.
1 change: 1 addition & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ jobs:
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
integration-test:
needs: test
runs-on: macOS-10.15
strategy:
matrix:
Expand Down
22 changes: 11 additions & 11 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added .idea/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,9 @@ dependencies {
implementation(Libraries.ktorNetwork)
implementation(Libraries.logging)
implementation(Libraries.pdbank)
implementation(Libraries.vertxCore)
implementation(Libraries.vertxKotlin)
implementation(Libraries.vertxCoroutines)

testImplementation(TestLibraries.assertk)
testImplementation(TestLibraries.junit)
Expand Down
9 changes: 7 additions & 2 deletions buildSrc/src/main/kotlin/Versions.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
object Versions {
val adam = System.getenv("GIT_TAG_NAME") ?: "0.2.2"
val adam = System.getenv("GIT_TAG_NAME") ?: "0.2.4"
val kotlin = "1.4.20"
val coroutines = "1.3.9"

val annotations = "16.0.2"
val kxml = "2.3.0"
val ktor = "1.4.1"
val ktor = "1.5.2"
val logging = "1.7.6"
val vertx = "4.0.3"

val assertk = "0.19"
val junit = "4.12"
Expand All @@ -27,6 +28,10 @@ object Libraries {
val ktorNetwork = "io.ktor:ktor-network-jvm:${Versions.ktor}"
val logging = "io.github.microutils:kotlin-logging:${Versions.logging}"
val pdbank = "pro.streem.pbandk:pbandk-runtime-jvm:${Versions.pdbank}"
val vertxCore = "io.vertx:vertx-core:${Versions.vertx}"
val vertxKotlin = "io.vertx:vertx-lang-kotlin:${Versions.vertx}"
val vertxCoroutines = "io.vertx:vertx-lang-kotlin-coroutines:${Versions.vertx}"

}

object TestLibraries {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@ package com.malinskiy.adam.integration
import assertk.assertThat
import assertk.assertions.contains
import assertk.assertions.doesNotContain
import com.malinskiy.adam.request.pkg.*
import com.malinskiy.adam.request.pkg.InstallRemotePackageRequest
import com.malinskiy.adam.request.pkg.InstallSplitPackageRequest
import com.malinskiy.adam.request.pkg.Package
import com.malinskiy.adam.request.pkg.PmListRequest
import com.malinskiy.adam.request.pkg.UninstallRemotePackageRequest
import com.malinskiy.adam.request.pkg.multi.ApkSplitInstallationPackage
import com.malinskiy.adam.request.shell.v1.ShellCommandRequest
import com.malinskiy.adam.request.sync.v1.PushFileRequest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,11 @@
package com.malinskiy.adam.integration

import assertk.assertThat
import assertk.assertions.*
import assertk.assertions.endsWith
import assertk.assertions.hasSize
import assertk.assertions.isEqualTo
import assertk.assertions.isNotEqualTo
import assertk.assertions.startsWith
import com.malinskiy.adam.request.device.FetchDeviceFeaturesRequest
import com.malinskiy.adam.request.device.ListDevicesRequest
import com.malinskiy.adam.request.framebuffer.RawImageScreenCaptureAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,23 @@ package com.malinskiy.adam.integration

import assertk.assertThat
import assertk.assertions.contains
import assertk.assertions.hasClass
import assertk.assertions.isEqualTo
import assertk.assertions.isFailure
import assertk.assertions.isFalse
import com.malinskiy.adam.exception.PullFailedException
import com.malinskiy.adam.extension.md5
import com.malinskiy.adam.request.shell.v1.ShellCommandRequest
import com.malinskiy.adam.request.sync.v1.ListFileRequest
import com.malinskiy.adam.request.sync.v1.PullFileRequest
import com.malinskiy.adam.request.sync.v1.PushFileRequest
import com.malinskiy.adam.request.sync.v1.StatFileRequest
import com.malinskiy.adam.rule.AdbDeviceRule
import kotlinx.coroutines.async
import kotlinx.coroutines.channels.receiveOrNull
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.supervisorScope
import kotlinx.coroutines.withTimeout
import org.junit.After
import org.junit.Before
Expand Down Expand Up @@ -174,4 +180,37 @@ class FileE2ETest {
assertThat(testFile.readText()).contains("cafebabe")
}
}

@Test
fun testPullingNonExistentFile() {
runBlocking {
val testFile = File(temp.newFolder(), "shoudnotexist")

supervisorScope {
val async = async {
val channel = adbRule.adb.execute(
PullFileRequest("/data/local/tmp/shoudnotexist", testFile, coroutineContext = coroutineContext),
this,
adbRule.deviceSerial
)

var percentage = 0
while (!channel.isClosedForReceive) {
val percentageDouble = channel.receiveOrNull() ?: break

val newPercentage = (percentageDouble * 100).roundToInt()
if (newPercentage != percentage) {
print('.')
percentage = newPercentage
}
}
println()
}

assertThat { async.await() }.isFailure().hasClass(PullFailedException::class)
}

assertThat(testFile.exists()).isFalse()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,18 @@
package com.malinskiy.adam.integration

import assertk.assertThat
import assertk.assertions.*
import com.malinskiy.adam.request.forwarding.*
import assertk.assertions.hasSize
import assertk.assertions.isEmpty
import assertk.assertions.isEqualTo
import assertk.assertions.isInstanceOf
import assertk.assertions.isNotNull
import assertk.assertions.isTrue
import com.malinskiy.adam.request.forwarding.ListPortForwardsRequest
import com.malinskiy.adam.request.forwarding.LocalTcpPortSpec
import com.malinskiy.adam.request.forwarding.PortForwardRequest
import com.malinskiy.adam.request.forwarding.RemoteTcpPortSpec
import com.malinskiy.adam.request.forwarding.RemoveAllPortForwardsRequest
import com.malinskiy.adam.request.forwarding.RemovePortForwardRequest
import com.malinskiy.adam.request.reverse.ListReversePortForwardsRequest
import com.malinskiy.adam.request.reverse.RemoveAllReversePortForwardsRequest
import com.malinskiy.adam.request.reverse.RemoveReversePortForwardRequest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,27 @@ package com.malinskiy.adam.integration
import assertk.assertThat
import assertk.assertions.contains
import assertk.assertions.isTrue
import com.malinskiy.adam.Const
import com.malinskiy.adam.request.pkg.InstallRemotePackageRequest
import com.malinskiy.adam.request.shell.v1.ShellCommandRequest
import com.malinskiy.adam.request.sync.v1.PushFileRequest
import com.malinskiy.adam.request.testrunner.*
import com.malinskiy.adam.request.testrunner.InstrumentOptions
import com.malinskiy.adam.request.testrunner.TestEnded
import com.malinskiy.adam.request.testrunner.TestEvent
import com.malinskiy.adam.request.testrunner.TestFailed
import com.malinskiy.adam.request.testrunner.TestIdentifier
import com.malinskiy.adam.request.testrunner.TestRunEnded
import com.malinskiy.adam.request.testrunner.TestRunStartedEvent
import com.malinskiy.adam.request.testrunner.TestRunnerRequest
import com.malinskiy.adam.request.testrunner.TestStarted
import com.malinskiy.adam.rule.AdbDeviceRule
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.channels.receiveOrNull
import kotlinx.coroutines.runBlocking
import org.junit.*
import org.junit.After
import org.junit.Assume
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import java.io.File
import kotlin.math.roundToInt

class TestRunnerE2ETest {
@Rule
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,12 @@ package com.malinskiy.adam.integration.feature
import assertk.assertThat
import assertk.assertions.contains
import com.malinskiy.adam.request.Feature
import com.malinskiy.adam.request.pkg.*
import com.malinskiy.adam.request.pkg.AtomicInstallPackageRequest
import com.malinskiy.adam.request.pkg.InstallSplitPackageRequest
import com.malinskiy.adam.request.pkg.Package
import com.malinskiy.adam.request.pkg.PmListRequest
import com.malinskiy.adam.request.pkg.StreamingPackageInstallRequest
import com.malinskiy.adam.request.pkg.UninstallRemotePackageRequest
import com.malinskiy.adam.request.pkg.multi.ApkSplitInstallationPackage
import com.malinskiy.adam.request.pkg.multi.SingleFileInstallationPackage
import com.malinskiy.adam.rule.AdbDeviceRule
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,24 @@ import assertk.assertions.contains
import com.malinskiy.adam.exception.RequestRejectedException
import com.malinskiy.adam.request.Feature
import com.malinskiy.adam.request.misc.ExecInRequest
import com.malinskiy.adam.request.pkg.*
import com.malinskiy.adam.request.pkg.AtomicInstallPackageRequest
import com.malinskiy.adam.request.pkg.InstallSplitPackageRequest
import com.malinskiy.adam.request.pkg.Package
import com.malinskiy.adam.request.pkg.PmListRequest
import com.malinskiy.adam.request.pkg.StreamingPackageInstallRequest
import com.malinskiy.adam.request.pkg.UninstallRemotePackageRequest
import com.malinskiy.adam.request.pkg.multi.ApkSplitInstallationPackage
import com.malinskiy.adam.request.pkg.multi.SingleFileInstallationPackage
import com.malinskiy.adam.rule.AdbDeviceRule
import com.malinskiy.adam.rule.DeviceType
import io.ktor.util.cio.readChannel
import kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking
import org.junit.*
import org.junit.After
import org.junit.Assume
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import java.io.File
import kotlin.system.measureTimeMillis

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import com.malinskiy.adam.request.device.ListDevicesRequest
import com.malinskiy.adam.request.misc.GetAdbServerVersionRequest
import com.malinskiy.adam.request.prop.GetSinglePropRequest
import com.malinskiy.adam.request.shell.v1.ShellCommandRequest
import com.malinskiy.adam.transport.NioSocketFactory
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.isActive
import kotlinx.coroutines.runBlocking
Expand All @@ -48,9 +47,7 @@ class AdbDeviceRule(val deviceType: DeviceType = DeviceType.ANY, vararg val requ
lateinit var supportedFeatures: List<Feature>
lateinit var lineSeparator: String

val adb = AndroidDebugBridgeClientFactory().apply {
socketFactory = NioSocketFactory()
}.build()
val adb = AndroidDebugBridgeClientFactory().build()
val initTimeout = Duration.ofSeconds(10)

override fun apply(base: Statement, description: Description): Statement {
Expand Down
Loading

0 comments on commit 7625b25

Please sign in to comment.