summaryrefslogtreecommitdiffhomepage
path: root/android/test
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2024-06-25 16:46:31 +0200
committerAlbin <albin@mullvad.net>2024-06-26 12:59:29 +0200
commitcee8176be4cae9cc605cca5ffae85d243adc4f3a (patch)
treed989a1aa16b26b1245c65f849b6f1f03e14faba0 /android/test
parent0316f672c58f5558ce9880af698098c3718591b6 (diff)
downloadmullvadvpn-cee8176be4cae9cc605cca5ffae85d243adc4f3a.tar.xz
mullvadvpn-cee8176be4cae9cc605cca5ffae85d243adc4f3a.zip
Migrate log calls to kermit
Diffstat (limited to 'android/test')
-rw-r--r--android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/rule/CaptureScreenshotOnFailedTestRule.kt10
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt3
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt5
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/SimpleMullvadHttpClient.kt33
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/Extensions.kt5
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt10
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiTest.kt6
7 files changed, 34 insertions, 38 deletions
diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/rule/CaptureScreenshotOnFailedTestRule.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/rule/CaptureScreenshotOnFailedTestRule.kt
index 9138982a43..2018714e09 100644
--- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/rule/CaptureScreenshotOnFailedTestRule.kt
+++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/rule/CaptureScreenshotOnFailedTestRule.kt
@@ -7,9 +7,9 @@ import android.os.Build
import android.os.Environment
import android.os.Environment.DIRECTORY_PICTURES
import android.provider.MediaStore
-import android.util.Log
import androidx.annotation.RequiresApi
import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
+import co.touchlab.kermit.Logger
import java.io.File
import java.io.FileOutputStream
import java.io.IOException
@@ -22,7 +22,7 @@ import org.junit.jupiter.api.extension.TestWatcher
class CaptureScreenshotOnFailedTestRule(private val testTag: String) : TestWatcher {
override fun testFailed(context: ExtensionContext, cause: Throwable) {
- Log.d(testTag, "Capturing screenshot of failed test: " + context.requiredTestMethod.name)
+ Logger.d("Capturing screenshot of failed test: " + context.requiredTestMethod.name)
val timestamp = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)
val screenshotName = "$timestamp-${context.requiredTestMethod.name}.jpeg"
captureScreenshot(testTag, screenshotName)
@@ -71,12 +71,12 @@ class CaptureScreenshotOnFailedTestRule(private val testTag: String) : TestWatch
try {
this.compress(Bitmap.CompressFormat.JPEG, 50, it!!)
} catch (e: IOException) {
- Log.e(testTag, "Unable to store screenshot: ${e.message}")
+ Logger.e("Unable to store screenshot: ${e.message}")
}
}
contentResolver.update(uri, contentValues, null, null)
} else {
- Log.e(testTag, "Unable to store screenshot")
+ Logger.e("Unable to store screenshot")
}
}
@@ -101,7 +101,7 @@ class CaptureScreenshotOnFailedTestRule(private val testTag: String) : TestWatch
try {
this.compress(Bitmap.CompressFormat.JPEG, 50, outputStream)
} catch (e: IOException) {
- Log.e(testTag, "Unable to store screenshot: ${e.message}")
+ Logger.e("Unable to store screenshot: ${e.message}")
}
}
contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt
index f4979258f2..160ef52468 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt
@@ -5,6 +5,7 @@ import android.content.Context
import android.os.Build
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.uiautomator.UiDevice
+import co.touchlab.kermit.Logger
import de.mannodermaus.junit5.extensions.GrantPermissionExtension
import net.mullvad.mullvadvpn.test.common.interactor.AppInteractor
import net.mullvad.mullvadvpn.test.common.rule.CaptureScreenshotOnFailedTestRule
@@ -34,6 +35,8 @@ abstract class EndToEndTest(private val infra: String) {
@BeforeEach
fun setup() {
+ Logger.setTag(LOG_TAG)
+
device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
targetContext = InstrumentationRegistry.getInstrumentation().targetContext
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt
index f79f78e03b..6bacf15a3a 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt
@@ -1,8 +1,7 @@
package net.mullvad.mullvadvpn.test.e2e.misc
-import android.util.Log
import androidx.test.platform.app.InstrumentationRegistry
-import net.mullvad.mullvadvpn.test.e2e.constant.LOG_TAG
+import co.touchlab.kermit.Logger
import net.mullvad.mullvadvpn.test.e2e.constant.VALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY
import net.mullvad.mullvadvpn.test.e2e.extension.getRequiredArgument
import net.mullvad.mullvadvpn.test.e2e.interactor.MullvadAccountInteractor
@@ -12,7 +11,7 @@ import org.junit.jupiter.api.extension.ExtensionContext
class CleanupAccountTestRule : BeforeEachCallback {
override fun beforeEach(context: ExtensionContext) {
- Log.d(LOG_TAG, "Cleaning up account before test: ${context.requiredTestMethod.name}")
+ Logger.d("Cleaning up account before test: ${context.requiredTestMethod.name}")
val targetContext = InstrumentationRegistry.getInstrumentation().targetContext
val validTestAccountNumber =
InstrumentationRegistry.getArguments()
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/SimpleMullvadHttpClient.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/SimpleMullvadHttpClient.kt
index 78f5e967e0..a72f27a3ef 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/SimpleMullvadHttpClient.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/SimpleMullvadHttpClient.kt
@@ -1,8 +1,8 @@
package net.mullvad.mullvadvpn.test.e2e.misc
import android.content.Context
-import android.util.Log
import androidx.test.services.events.TestEventException
+import co.touchlab.kermit.Logger
import com.android.volley.Request
import com.android.volley.toolbox.JsonArrayRequest
import com.android.volley.toolbox.JsonObjectRequest
@@ -13,7 +13,6 @@ import net.mullvad.mullvadvpn.test.e2e.constant.ACCOUNT_URL
import net.mullvad.mullvadvpn.test.e2e.constant.AUTH_URL
import net.mullvad.mullvadvpn.test.e2e.constant.CONN_CHECK_URL
import net.mullvad.mullvadvpn.test.e2e.constant.DEVICE_LIST_URL
-import net.mullvad.mullvadvpn.test.e2e.constant.LOG_TAG
import net.mullvad.mullvadvpn.test.e2e.constant.PARTNER_ACCOUNT_URL
import org.json.JSONArray
import org.json.JSONObject
@@ -23,19 +22,19 @@ class SimpleMullvadHttpClient(context: Context) {
private val queue = Volley.newRequestQueue(context)
fun removeAllDevices(accountNumber: String) {
- Log.v(LOG_TAG, "Remove all devices")
+ Logger.v("Remove all devices")
val token = login(accountNumber)
val devices = getDeviceList(token)
devices.forEach { removeDevice(token, it) }
- Log.v(LOG_TAG, "All devices removed")
+ Logger.v("All devices removed")
}
fun login(accountNumber: String): String {
- Log.v(LOG_TAG, "Attempt login with account token: $accountNumber")
+ Logger.v("Attempt login with account token: $accountNumber")
val json = JSONObject().apply { put("account_number", accountNumber) }
return sendSimpleSynchronousRequest(Request.Method.POST, AUTH_URL, json)!!.let { response ->
response.getString("access_token").also { accessToken ->
- Log.v(LOG_TAG, "Successfully logged in and received access token: $accessToken")
+ Logger.v("Successfully logged in and received access token: $accessToken")
}
}
}
@@ -59,7 +58,7 @@ class SimpleMullvadHttpClient(context: Context) {
}
fun getDeviceList(accessToken: String): List<String> {
- Log.v(LOG_TAG, "Get devices")
+ Logger.v("Get devices")
val response =
sendSimpleSynchronousRequestArray(
@@ -74,14 +73,14 @@ class SimpleMullvadHttpClient(context: Context) {
.toList()
.also {
it.map { jsonObject -> jsonObject.getString("name") }
- .also { deviceNames -> Log.v(LOG_TAG, "Devices received: $deviceNames") }
+ .also { deviceNames -> Logger.v("Devices received: $deviceNames") }
}
.map { it.getString("id") }
.toList()
}
fun removeDevice(token: String, deviceId: String) {
- Log.v(LOG_TAG, "Remove device: $deviceId")
+ Logger.v("Remove device: $deviceId")
sendSimpleSynchronousRequestString(
method = Request.Method.DELETE,
url = "$DEVICE_LIST_URL/$deviceId",
@@ -122,11 +121,9 @@ class SimpleMullvadHttpClient(context: Context) {
}
queue.add(request)
return try {
- future.get().also { response ->
- Log.v(LOG_TAG, "Json object request response: $response")
- }
+ future.get().also { response -> Logger.v("Json object request response: $response") }
} catch (e: Exception) {
- Log.v(LOG_TAG, "Json object request error: ${e.message}")
+ Logger.v("Json object request error: ${e.message}")
throw TestEventException(REQUEST_ERROR_MESSAGE)
}
}
@@ -153,9 +150,9 @@ class SimpleMullvadHttpClient(context: Context) {
}
queue.add(request)
return try {
- future.get().also { response -> Log.v(LOG_TAG, "String request response: $response") }
+ future.get().also { response -> Logger.v("String request response: $response") }
} catch (e: Exception) {
- Log.v(LOG_TAG, "String request error: ${e.message}")
+ Logger.v("String request error: ${e.message}")
throw TestEventException(REQUEST_ERROR_MESSAGE)
}
}
@@ -180,11 +177,9 @@ class SimpleMullvadHttpClient(context: Context) {
}
queue.add(request)
return try {
- future.get().also { response ->
- Log.v(LOG_TAG, "Json array request response: $response")
- }
+ future.get().also { response -> Logger.v("Json array request response: $response") }
} catch (e: Exception) {
- Log.v(LOG_TAG, "Json array request error: ${e.message}")
+ Logger.v("Json array request error: ${e.message}")
throw TestEventException(REQUEST_ERROR_MESSAGE)
}
}
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/Extensions.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/Extensions.kt
index 7eb096b499..356cacb97e 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/Extensions.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/Extensions.kt
@@ -1,7 +1,6 @@
package net.mullvad.mullvadvpn.test.mockapi
-import android.util.Log
-import net.mullvad.mullvadvpn.test.mockapi.constant.LOG_TAG
+import co.touchlab.kermit.Logger
import okhttp3.mockwebserver.MockResponse
import okio.Buffer
import org.json.JSONException
@@ -15,7 +14,7 @@ fun Buffer.getAccountNumber(): String? {
return try {
JSONObject(readUtf8()).getString("account_number")
} catch (ex: JSONException) {
- Log.e(LOG_TAG, "Unable to parse account number")
+ Logger.e("Unable to parse account number")
ex.printStackTrace()
null
}
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt
index abb4813a33..3539bad0fa 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt
@@ -1,13 +1,12 @@
package net.mullvad.mullvadvpn.test.mockapi
-import android.util.Log
+import co.touchlab.kermit.Logger
import net.mullvad.mullvadvpn.test.mockapi.constant.ACCOUNT_URL_PATH
import net.mullvad.mullvadvpn.test.mockapi.constant.AUTH_TOKEN_URL_PATH
import net.mullvad.mullvadvpn.test.mockapi.constant.CREATE_ACCOUNT_URL_PATH
import net.mullvad.mullvadvpn.test.mockapi.constant.DEVICES_URL_PATH
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ACCESS_TOKEN
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_1
-import net.mullvad.mullvadvpn.test.mockapi.constant.LOG_TAG
import net.mullvad.mullvadvpn.test.mockapi.util.accessTokenJsonResponse
import net.mullvad.mullvadvpn.test.mockapi.util.accountCreationJson
import net.mullvad.mullvadvpn.test.mockapi.util.accountInfoJson
@@ -34,7 +33,7 @@ class MockApiDispatcher : Dispatcher() {
private var cachedPubKeyFromAppUnderTest: String? = null
override fun dispatch(request: RecordedRequest): MockResponse {
- Log.d(LOG_TAG, "Request: $request (body=${request.body.peek().readUtf8()})")
+ Logger.d("Request: $request (body=${request.body.peek().readUtf8()})")
return when (request.path ?: "") {
AUTH_TOKEN_URL_PATH -> handleLoginRequest(request.body)
DEVICES_URL_PATH -> {
@@ -70,7 +69,7 @@ class MockApiDispatcher : Dispatcher() {
}
}
}.also { response ->
- Log.d(LOG_TAG, "Response: $response (body=${response.getBody()?.peek()?.readUtf8()})")
+ Logger.d("Response: $response (body=${response.getBody()?.peek()?.readUtf8()})")
}
}
@@ -89,8 +88,7 @@ class MockApiDispatcher : Dispatcher() {
.toString()
)
} else {
- Log.e(
- LOG_TAG,
+ Logger.e(
"Unexpected account number (expected=$expectedAccountNumber was=$accountNumber)"
)
MockResponse().setResponseCode(400)
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiTest.kt
index 02e53a09d9..74a47f3c3d 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiTest.kt
@@ -3,9 +3,9 @@ package net.mullvad.mullvadvpn.test.mockapi
import android.Manifest.permission.READ_EXTERNAL_STORAGE
import android.Manifest.permission.WRITE_EXTERNAL_STORAGE
import android.content.Context
-import android.util.Log
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.uiautomator.UiDevice
+import co.touchlab.kermit.Logger
import de.mannodermaus.junit5.extensions.GrantPermissionExtension
import java.net.InetAddress
import net.mullvad.mullvadvpn.lib.endpoint.CustomApiEndpointConfiguration
@@ -37,13 +37,15 @@ abstract class MockApiTest {
@BeforeEach
open fun setup() {
+ Logger.setTag(LOG_TAG)
+
device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
targetContext = InstrumentationRegistry.getInstrumentation().targetContext
app = AppInteractor(device, targetContext, PACKAGE_NAME)
mockWebServer.start()
- Log.d(LOG_TAG, "Mocked web server started using port: ${mockWebServer.port}")
+ Logger.d("Mocked web server started using port: ${mockWebServer.port}")
endpoint = createEndpoint(mockWebServer.port)
}