summaryrefslogtreecommitdiffhomepage
path: root/android/test/e2e/src
diff options
context:
space:
mode:
authorKalle Lindström <karl.lindstrom@mullvad.net>2025-02-25 10:48:50 +0100
committerKalle Lindström <karl.lindstrom@mullvad.net>2025-02-26 09:25:17 +0100
commitda304ffedf8f8d98600f31f737cf92768c0323fa (patch)
treee8da9b9a861f3d3efbbbc39fb5160ec1cfeb67fa /android/test/e2e/src
parent5025db74b34cfb3536c43f89f3407ffc0d97ae73 (diff)
downloadmullvadvpn-da304ffedf8f8d98600f31f737cf92768c0323fa.tar.xz
mullvadvpn-da304ffedf8f8d98600f31f737cf92768c0323fa.zip
Remove Joda Time and use java.time package instead
Joda Time has been superseded by the Java 8 java.time package which has more or less the same API. This commit removes all usage of Joda Time and replaces it with the java.time classes. This is done so that we can remove the dependency on Joda Time.
Diffstat (limited to 'android/test/e2e/src')
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Packet.kt10
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Stream.kt28
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/serializer/NanoSecondsTimestampSerializer.kt14
3 files changed, 29 insertions, 23 deletions
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Packet.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Packet.kt
index 5c788e5710..cd6b2b855e 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Packet.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Packet.kt
@@ -1,23 +1,25 @@
package net.mullvad.mullvadvpn.test.e2e.router.packetCapture
+import java.time.ZonedDateTime
import kotlinx.serialization.Contextual
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import net.mullvad.mullvadvpn.test.e2e.serializer.PacketSerializer
-import org.joda.time.DateTime
@Serializable(with = PacketSerializer::class)
sealed interface Packet {
- @SerialName("timestamp") val date: DateTime
+ @SerialName("timestamp") val date: ZonedDateTime
val fromPeer: Boolean
}
@Serializable
-data class RxPacket(@SerialName("timestamp") @Contextual override val date: DateTime) : Packet {
+data class RxPacket(@SerialName("timestamp") @Contextual override val date: ZonedDateTime) :
+ Packet {
@SerialName("from_peer") override val fromPeer: Boolean = false
}
@Serializable
-data class TxPacket(@SerialName("timestamp") @Contextual override val date: DateTime) : Packet {
+data class TxPacket(@SerialName("timestamp") @Contextual override val date: ZonedDateTime) :
+ Packet {
@SerialName("from_peer") override val fromPeer: Boolean = true
}
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Stream.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Stream.kt
index 564d0e25cb..68eb2783cc 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Stream.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Stream.kt
@@ -1,11 +1,11 @@
package net.mullvad.mullvadvpn.test.e2e.router.packetCapture
+import java.time.Duration
+import java.time.ZonedDateTime
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import net.mullvad.mullvadvpn.test.e2e.router.NetworkingProtocol
-import org.joda.time.DateTime
-import org.joda.time.Interval
@Serializable
data class Stream(
@@ -18,24 +18,26 @@ data class Stream(
@Transient val sourceHost = Host.fromString(sourceAddressAndPort)
@Transient val destinationHost = Host.fromString(destinationAddressAndPort)
- @Transient private val startDate: DateTime = packets.first().date
- @Transient private val endDate: DateTime = packets.last().date
- @Transient private val txStartDate: DateTime? = txPackets().firstOrNull()?.date
- @Transient private val txEndDate: DateTime? = txPackets().lastOrNull()?.date
- @Transient private val rxStartDate: DateTime? = rxPackets().firstOrNull()?.date
- @Transient private val rxEndDate: DateTime? = rxPackets().lastOrNull()?.date
+ @Transient private val startDate: ZonedDateTime = packets.first().date
+ @Transient private val endDate: ZonedDateTime = packets.last().date
+ @Transient private val txStartDate: ZonedDateTime? = txPackets().firstOrNull()?.date
+ @Transient private val txEndDate: ZonedDateTime? = txPackets().lastOrNull()?.date
+ @Transient private val rxStartDate: ZonedDateTime? = rxPackets().firstOrNull()?.date
+ @Transient private val rxEndDate: ZonedDateTime? = rxPackets().lastOrNull()?.date
- @Transient val interval = Interval(startDate, endDate)
+ @Transient val interval = Duration.between(startDate, endDate)
fun txPackets(): List<TxPacket> = packets.filterIsInstance<TxPacket>()
fun rxPackets(): List<RxPacket> = packets.filterIsInstance<RxPacket>()
- fun txInterval(): Interval? =
- if (txStartDate != null && txEndDate != null) Interval(txStartDate, txEndDate) else null
+ fun txInterval(): Duration? =
+ if (txStartDate != null && txEndDate != null) Duration.between(txStartDate, txEndDate)
+ else null
- fun rxInterval(): Interval? =
- if (rxStartDate != null && rxEndDate != null) Interval(rxStartDate, rxEndDate) else null
+ fun rxInterval(): Duration? =
+ if (rxStartDate != null && rxEndDate != null) Duration.between(rxStartDate, rxEndDate)
+ else null
init {
require(packets.isNotEmpty()) { "Stream must contain at least one packet" }
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/serializer/NanoSecondsTimestampSerializer.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/serializer/NanoSecondsTimestampSerializer.kt
index d49ca6017d..26d5f05f5b 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/serializer/NanoSecondsTimestampSerializer.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/serializer/NanoSecondsTimestampSerializer.kt
@@ -1,23 +1,25 @@
package net.mullvad.mullvadvpn.test.e2e.serializer
+import java.time.Instant
+import java.time.ZoneId
+import java.time.ZonedDateTime
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
-import org.joda.time.DateTime
-object NanoSecondsTimestampSerializer : KSerializer<DateTime> {
+object NanoSecondsTimestampSerializer : KSerializer<ZonedDateTime> {
override val descriptor: SerialDescriptor =
- PrimitiveSerialDescriptor("DateTime", PrimitiveKind.LONG)
+ PrimitiveSerialDescriptor("ZonedDateTime", PrimitiveKind.LONG)
- override fun deserialize(decoder: Decoder): DateTime {
+ override fun deserialize(decoder: Decoder): ZonedDateTime {
val long = decoder.decodeLong()
- return DateTime(long / 1000)
+ return ZonedDateTime.ofInstant(Instant.ofEpochMilli(long / 1000), ZoneId.systemDefault())
}
- override fun serialize(encoder: Encoder, value: DateTime) {
+ override fun serialize(encoder: Encoder, value: ZonedDateTime) {
throw NotImplementedError("Only interested in deserialization")
}
}