diff options
| author | Kalle Lindström <karl.lindstrom@mullvad.net> | 2025-02-25 10:48:50 +0100 |
|---|---|---|
| committer | Kalle Lindström <karl.lindstrom@mullvad.net> | 2025-02-26 09:25:17 +0100 |
| commit | da304ffedf8f8d98600f31f737cf92768c0323fa (patch) | |
| tree | e8da9b9a861f3d3efbbbc39fb5160ec1cfeb67fa /android/test/e2e/src | |
| parent | 5025db74b34cfb3536c43f89f3407ffc0d97ae73 (diff) | |
| download | mullvadvpn-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')
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") } } |
