mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-25 11:20:47 +01:00
Fix daily backups being incorrectly scheduled for multiple days away.
This commit is contained in:
@@ -5,17 +5,64 @@
|
||||
|
||||
package org.thoughtcrime.securesms.service
|
||||
|
||||
import android.app.Application
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import assertk.assertions.isGreaterThan
|
||||
import assertk.assertions.isLessThan
|
||||
import io.mockk.every
|
||||
import io.mockk.just
|
||||
import io.mockk.runs
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.annotation.Config
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.testutil.MockRandom
|
||||
import org.thoughtcrime.securesms.testutil.MockSignalStoreRule
|
||||
import java.time.Duration
|
||||
import java.time.LocalDateTime
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.time.Duration.Companion.days
|
||||
import kotlin.time.Duration.Companion.hours
|
||||
import kotlin.time.Duration.Companion.minutes
|
||||
|
||||
class BackPendingParticipantsListenerTest {
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@Config(manifest = Config.NONE, application = Application::class)
|
||||
class MessageBackupListenerTest {
|
||||
|
||||
@get:Rule
|
||||
val rule = MockSignalStoreRule()
|
||||
|
||||
@Test
|
||||
fun testGetNextScheduledExecutionTime() {
|
||||
val listener = MessageBackupListener()
|
||||
|
||||
var nextTime = System.currentTimeMillis() + 1.days.inWholeMilliseconds
|
||||
every { SignalStore.backup.nextBackupTime } returns nextTime
|
||||
assertThat(listener.getNextScheduledExecutionTime(ApplicationProvider.getApplicationContext())).isEqualTo(nextTime)
|
||||
|
||||
nextTime = System.currentTimeMillis() + 2.days.inWholeMilliseconds
|
||||
every { SignalStore.backup.nextBackupTime } returns nextTime
|
||||
assertThat(listener.getNextScheduledExecutionTime(ApplicationProvider.getApplicationContext())).isEqualTo(nextTime)
|
||||
|
||||
nextTime = System.currentTimeMillis() + 8.hours.inWholeMilliseconds
|
||||
every { SignalStore.backup.nextBackupTime } returns nextTime
|
||||
assertThat(listener.getNextScheduledExecutionTime(ApplicationProvider.getApplicationContext())).isEqualTo(nextTime)
|
||||
|
||||
nextTime = System.currentTimeMillis() + 7.days.inWholeMilliseconds
|
||||
every { SignalStore.backup.nextBackupTime } returns nextTime
|
||||
every { SignalStore.settings.backupHour } returns 2
|
||||
every { SignalStore.settings.backupMinute } returns 0
|
||||
every { SignalStore.backup.nextBackupTime = any() } just runs
|
||||
val adjustedTime = listener.getNextScheduledExecutionTime(ApplicationProvider.getApplicationContext())
|
||||
assertThat(adjustedTime).isGreaterThan(System.currentTimeMillis())
|
||||
assertThat(adjustedTime).isLessThan(System.currentTimeMillis() + 2.days.inWholeMilliseconds)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testBackupJitterExactlyWithinJitterWindow() {
|
||||
Reference in New Issue
Block a user